-1
votes

Les rangées de groupe ayant une valeur nulle et une valeur distincte

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!

 Entrez la description de l'image ici

J'ai besoin de la sortie comme: xxx


0 commentaires

3 Réponses :


0
votes

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;


2 commentaires

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?



1
votes

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;


1 commentaires

Merci! Cela a vraiment bien fonctionné dans mon cas. J'ai utilisé la deuxième option pour ma solution. Très appréciée.



0
votes

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;


0 commentaires