Ich habe die folgende Abfrage. Und alle müssen zusammenzufassen von der Abfrage zurückgegeben „distinct Fall“ Werte eine Zeile in einer anderen Spalte „TotalDepartmentsCount“ bevölkert withingSumme aller zurückgegebenen Werte aus der CASE-Klausel-Anweisung
;WITH CTE
AS
(
Select t.ID As [CTE_ID]
,count(distinct case when e.Department='M' then t.ID else null end) as M_Marketing
,count(distinct case when e.Department='S' then t.ID else null end) as S_Sales
,count(distinct case when e.Department='U' then t.ID else null end) as U_Utilization
,count(distinct case when e.Department=' ' then t.ID else null end) as No_NoDepartment
From dbo.Table t (nolock)
Left Join dbo.ClearedEmployee ce (nolock) ON t.ID = ce.building_fk
Join dbo.Employee e (nolock) ON ce.employee_fk = e.employee_pk
Group By t.ID
)
Select *, t.ID
From CTE c (nolock)
FULL JOIN dbo.Table t (nolock) ON t.ID=c.[CTE_ID]
Order By t.ID ASC;
es zu tun habe ich diesen Code in der Auswahlliste:
sum(cast(e.Department as int)) As TotalDepartmentsCount
Aber das wird nicht richtig zusammengefasst (siehe Screenshot unten). Bitte beraten.
Dies ist, wie ich meine Ausgabe haben will (die TotalDepartmentsCount siehe Tabelle)
Also, wenn Sie 1 Marketing und 2 keine Abteilungen in einer Reihe haben, sollte die Summe 3 sein? Oder sollte es 1 sein? – APH
Ihr Screenshot fehlt 't.ID', was bei der Analyse Ihrer Frage hilfreich wäre. –
Warum alle NOLOCK Hinweise? Sind Sie mit fehlenden und/oder doppelten Zeilen in Ordnung? http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ Wenn Sie bei der Verwendung von Abfragehinweisen bleiben möchten, müssen Sie das WITH-Schlüsselwort einschließen. Wenn man es auslässt, ist es veraltet, es wird in der Zukunft erforderlich sein. –