J'ai une table, appelons-les J'ai besoin de Parce que, Aria & Brian a Et c'est la sortie de l'échantillon que je veux dire: p> samaydata code> Sélectionner (département, mois, années, compte (Letecome)) < / Code> et Nombre Code> Les enregistrements Compte (où Letecome> '00: 00: 01 ')> 2 code> par mois. P> Latecome> 2 Code> par mois, Belle et Ziya seulement 1 Latecome Code> et Chloe seulement 2 Latecome code> par mois. Donc, dans le département BB Juste 1 c'est Aria, et le département CC est 0, car Chloe & Ziya <= 2 Lateecome Code>. P>
3 Réponses :
;With sdCTE as
(
SELECT NAME, DEPARTMENT, MONTH(StatusIn) as [Month] , YEAR(StatusIn) as [Year],
Case when LateCome > '00:00:00' then 1 Else 0 End as LateCome
from #SUMMARYDATA
)
Select DEPARTMENT, [Month],[Year],
Case when Max(LateCount) > 2 then 1 Else 0 End as LateCome
from
(
select Name, DEPARTMENT, [Month],[Year], Sum(LateCome) LateCount
from sdCTE
group by Name,DEPARTMENT, [Month],[Year]
) Q
Group by DEPARTMENT, [Month],[Year]
Merci beaucoup de m'aider :) C'est le travail .. mais quand je cours avec mes données réelles .. J'ai 2 personnes dans le département BB qui ont Latecome code>> 2. Pourquoi la sortie ne montre que 1 pas 2?
S'il vous plaît vérifier ma question mise à jour pour voir les échantillons de données et la sortie .. merci :)
Que j'ai fait, avec l'hypothèse, vous avez besoin de 1 ou de 0 si la condition de présence tardive est remplie. S'il vous plaît vérifier ma nouvelle solution.
Essayez ce qui suit:
;WITH cte AS
(
SELECT DISTINCT [NAME], DEPARTMENT, MONTH(STATUSIN) [MONTH], YEAR(STATUSIN) [YEAR],
SUM(CASE WHEN LATECOME = '00:00:00' THEN 0 ELSE 1 END) OVER(PARTITION BY [NAME], DEPARTMENT, MONTH(STATUSIN), YEAR(STATUSIN) ORDER BY [NAME]) Total
FROM SUMMARYDATA
)
SELECT DEPARTMENT, [MONTH], [YEAR], SUM(CASE WHEN TOTAL > 2 THEN 1 ELSE 0 END) LATECOME
FROM cte
GROUP BY DEPARTMENT, [MONTH], [YEAR]
La voie de Sacse est bien meilleure que la mienne :) - je suis vieille école :(
@Srinika Chaque réponse avec la sortie correcte est gr8 \ m / :).
le tien est plus concis
merci beaucoup de m'aider :) C'est du travail .. Mais quand je cours avec mes données réelles .. j'ai 2 personnes dans le département BB qui ont Latecome> 2 code> .. Pourquoi la sortie ne montre que 1 pas 2? @sace
S'il vous plaît vérifier ma question mise à jour pour voir les échantillons de données et la sortie .. merci :) @sace
Ceci est pour les exigences modifiées
;With sdCTE as
(
SELECT NAME, DEPARTMENT, MONTH(StatusIn) as [Month] , YEAR(StatusIn) as [Year],
Case when LateCome > '00:00:00' then 1 Else 0 End as LateCome
from #SUMMARYDATA
)
Select DEPARTMENT, [Month],[Year],
Sum(Case when (LateCount) > 2 then 1 Else 0 End) as LateCome
from
(
select Name, DEPARTMENT, [Month],[Year], Sum(LateCome) LateCount
from sdCTE
group by Name,DEPARTMENT, [Month],[Year]
) Q
Group by DEPARTMENT, [Month],[Year]