Finalement, je veux prendre quelques données et les regrouper par mois dans SQL dans l'AS/400 (Green Screen).GROUP BY Format de date AS/400 converti en date SQL
Voici la requête SQL initiale et le résultat correspondant:
SELECT ITNBRV, /* Item */
ODDTRV, OQTYRV /* Order due due, Order quantity */
FROM ORDREVLA /* MRP Recommendations */
WHERE ITNBRV = '17000' OR ITNBRV = '19000' /* Returns only items 17000, 19000 */
Je voudrais prendre ces données et résumer comme ceci:
Item number Order Due Date Order Quantity
17000 11/17 1296
17000 12/17 1296
17000 01/18 3564
17000 02/18 3888
19000 11/17 68100
19000 12/17 1800
19000 01/18 23220
Voici ce que j'ai utilisé pour convertir le format de la date:
SELECT ITNBRV,
month(
substr(ODDTRV,4,2) ||'/'||
substr(ODDTRV,6,2) ||'/'||
substr(ODDTRV,2,2)) ||'/'||
year(
substr(ODDTRV,4,2) ||'/'||
substr(ODDTRV,6,2) ||'/'||
substr(ODDTRV,2,2)) AS Month_Year,
OQTYRV
FROM ORDREVLA
WHERE ITNBRV = '17000' OR ITNBRV = '19000'
Avec le résultat suivant:
J'ai essayé d'utiliser GROUP BY avec les mêmes numéros de conversion:
SELECT ITNBRV,
month(
substr(ODDTRV,4,2) ||'/'||
substr(ODDTRV,6,2) ||'/'||
substr(ODDTRV,2,2)) ||'/'||
year(
substr(ODDTRV,4,2) ||'/'||
substr(ODDTRV,6,2) ||'/'||
substr(ODDTRV,2,2)) AS Month_Year,
OQTYRV
FROM ORDREVLA
WHERE ITNBRV = '17000' OR ITNBRV = '19000'
GROUP BY (month(
substr(ODDTRV,4,2) ||'/'||
substr(ODDTRV,6,2) ||'/'||
substr(ODDTRV,2,2)))
mais nous avons eu ce message d'erreur:
Column ITNBRV or expression in SELECT list not valid.
Merci!
DB2 for i (AS/400 SQL) suit la norme SQL afin que vous l'avez correctement ici. Ce serait les normes ISO/CEI 9075, parties 1-4, 10, 11, et 14. v7.2 et v7.3 support des normes 2016, v7.1 prend en charge les normes précédentes. – jmarkmurphy
@jmarkmurphy: Quelque chose est toujours éteint, maintenant je reçois le message d'erreur "Colonne ODDTRV ou expression dans la liste SELECT non valide." – Sescopeland
Pensez que vous avez besoin de l'expression (année (...)) dans le groupe par ... – Charles