tout d'abord, la question execuse plus, mais je vais essayer de le mettre le plus simplement possible ...groupe multiple fondé sur la date par requête T-SQL
Je suis en train d'écrire une sorte de rapport de requête, mais j'ai un problème pour obtenir les résultats souhaités. Le problème:
table des employés
Id | Name
---------------
1 | John Smith
2 | Alan Jones
3 | James Jones
table Tâche
Id | Title | StartDate | EmployeeId | Estimate (integer - ticks)
----------------------------------------------------------------------------
1 | task1 | 21.08.2011 | 1 | 90000000000
2 | task2 | 21.08.2011 | 1 | 150000000
3 | task3 | 22.08.2011 | 2 | 1230000000
Question:
Comment obtenir le résumé de l'estimation par jour, groupés, mais pour inclure tous les employés?
Comme ceci:
Date | EmployeeId | EmployeeName | SummaryEstimate
-------------------------------------------------------------
19.08.2011 | 1 | John Smith | NULL
19.08.2011 | 2 | Alan Jones | NULL
19.08.2011 | 3 | James Jones | NULL
20.08.2011 | 1 | John Smith | NULL
20.08.2011 | 2 | Alan Jones | NULL
20.08.2011 | 3 | James Jones | NULL
21.08.2011 | 1 | John Smith | 90150000000
21.08.2011 | 2 | Alan Jones | NULL
21.08.2011 | 3 | James Jones | NULL
22.08.2011 | 1 | John Smith | NULL
22.08.2011 | 2 | Alan Jones | 1230000000
22.08.2011 | 3 | James Jones | NULL
Ce que je fais actuellement est que j'ai une table "dates" avec des jours 30 annees. Je suis parti rejoindre et groupe par cette table pour obtenir d'autres dates incluses aussi. Eh bien, voici la requête:
SELECT dates.value, employee.Id, employee.Name, sum(task.Estimate)
FROM TableOfDates as dates
left join Tasks as task on (dates.value = convert(varchar(10), task.StartTime, 101))
left join Employees as employee on (employee.Id = task.EmployeeId)
WHERE dates.value >= '2011-08-19' and dates.value < '2011-08-22'
GROUP BY dates.value, employee.Id, employee.Name
ORDER BY dates.value, employee.Id
L'appel de conversion consiste à obtenir la partie date de la colonne DateTime.
Le résultat que je reçois est:
Date | EmployeeId | EmployeeName | SummaryEstimate
-------------------------------------------------------------
19.08.2011 | NULL | NULL | NULL
20.08.2011 | NULL | NULL | NULL
21.08.2011 | 1 | John Smith | 90150000000
22.08.2011 | 2 | Alan Jones | 1230000000
Je suis là la moitié du chemin, je reçois les dates qui ne sont pas dans les deux la base tables jointes (employés et tâches) mais je ne peux pas avoir aussi tous les employés inclus comme dans le tableau montré avant celui-ci.
J'ai essayé d'effectuer une jointure croisée, puis des sous-requêtes, mais peu de chance. Toute aide sera la bienvenue ! Nous vous remercions d'avoir le temps de passer par tout cela, je l'espère, j'été assez clair ...
Le tableau immédiatement après la question, tous les employés inclus ainsi que les dates –