2013-07-19 3 views
0

J'ai cette requête très simple:TSQL changement de regroupement/DECOMPTE basé sur les dates

SELECT 
    Team.Code, 
    COUNT(Task.TaskID) 
FROM Tasks Task 
LEFT JOIN Teams AS Team 
ON teamid = task.teamid 
WHERE.... 

GROUP BY Team.Code ORDER BY Team.Code 

Ce produit pour moi un compte bien combien la tâche chaque équipe. Cool.

Maintenant, je dois aller plus loin et mettre en œuvre des règles métier pour les dates de ces tâches.

Tout d'abord, comparez la date de fermeture avec la date d'expiration et prenez le plus tôt possible. Prenez la date ci-dessus (la plus ancienne) et comparez-la à la date d'échéance pour voir si elle est inférieure ou égale.

Si moins ou égal inclure dans le compte. Si supérieur à la date d'échéance ne comptez pas.

Maintenant, je ne suis pas vraiment sûr de la façon de structurer cette requête afin que les pointeurs sur la façon d'incorporer les règles biz serait grandement appréciés.

Je suis désolé les gars. Pas assez d'informations totalement ma faute.

Vasanth les dates sont TOUTES conservées dans la table des tâches.

Bummi. Je vais obtenir des métadonnées et les publier bientôt.

+1

Vous supposez des informations que nous ne disposons pas, pourrait décrire plus en détail les structures et le résultat souhaité. – bummi

+1

Quelle table contient les colonnes DateClosed, DateSignedOff & DueDate? – Vasanth

Répondre

1

La requête ci-dessous vous aidera à démarrer avec vos règles biz.

Requête:

select 
     Teams.Code, 
     count(Tasks.TaskID) 
from 
    Tasks 
    inner join Teams on Teams.TeamID = Tasks.TeamID 
    inner join (
        select TeamID, min(case when DateClosed < DateSignedOff then DateClosed else DateSignedOff end) MinDateNeeded 
        from Tasks 
        group by TeamID 
       ) as FirstCondition on FirstCondition.TeamID = Teams.TeamID 
where 
    Tasks.DueDate >= FirstCondition.MinDateNeeded 
group by 
    Teams.Code 
+0

Ahhh je peux joindre à une sous-requête – GPGVM

Questions connexes