J'essaie de résumer la dernière colonne (LEAPVESTAES) et avez besoin de la sortie en une seule ligne en regroupant toutes les colonnes, mais je ne parviens pas à regrouper les lignes ici et à obtenir le même résultat non groupé. Merci!
J'ai besoin de la sortie comme: p>
3 Réponses :
agrégat d'une année et d'un mois, et utilisez coalesce code> pour afficher
p code> au cas où une colonne donnée n'a pas de
null code> valeur:
SELECT
YEAR,
MONTHID,
MONTH,
COALESCE(MAX(C10), 'P') AS C10,
COALESCE(MAX(C11), 'P') AS C11,
...,
COALESCE(MAX(C22), 'P') AS C22,
SUM(LEAVEDAYS) AS LEAVEDAYS
FROM yourTable
GROUP BY
YEAR,
MONTHID,
MONTH;
Je n'ai aucun problème à obtenir 'P' à la place de NULL. J'ai besoin du groupe toutes les lignes en une seule rangée. Merci.
Ma réponse devrait faire précisément cela. Sinon, alors quelle est ma réponse?
Au cas où il y a autre caractère que P trouvé dans C10 à C22, vous prenez cet autre caractère en résultat.
Je pense que vous pouvez utiliser max code> avec
garder code > Clause comme suit: P>
SELECT
YEAR, MONTHID, MONTH,
COALESCE(MAX(CASE WHEN C10<>'P' THEN C10 END),'P') AS C10,
...,
COALESCE(MAX(CASE WHEN C22<>'P' THEN C22 END),'P') AS C22,
SUM(LEAVEDAYS) AS LEAVEDAYS
FROM your_table
GROUP BY
YEAR, MONTHID, MONTH;
Merci! Cela a vraiment bien fonctionné dans mon cas. J'ai utilisé la deuxième option pour ma solution. Très appréciée.
La logique que je comprends est que vous souhaitez simplement la valeur minimale dans chaque colonne:
SELECT YEAR, MONTHID, MONTH, MIN(C10) AS C10, ..., MIN(C22) AS C22, SUM(LEAVEDAYS) AS LEAVEDAYS FROM t GROUP BY YEAR, MONTHID, MONTH;