Ein Mitarbeiter beteiligt ist in einer Woche bis zu 3 Projekte in und in jedem dieser Projekte kann der Mitarbeiter zwei unterschiedliche Aufgaben. Ich benutze Union alle, um separate Felder aus einer einzigen Tabelle zu verbinden, so dass ich eine separate Zeile für jede Aufgabe erhalten (bis zu 6 Zeilen pro Mitarbeiter). Dies wird schließlich mit der Uhr im System verbunden, so dass der Betrag, den wir jedem Angestellten zahlen, bestimmten Aufgaben in bestimmten Projekten zugewiesen werden kann, damit wir besser verfolgen können, wohin das Geld fließt.Graf mit Vereinigung aller
ich benötige ein Mittel, um die Menge an Aufgaben zu zählen (also die Anzahl der Zeilen zu zählen für jeden Mitarbeiter) so Ich habe eine Reihe von zu unterteilen.
Ich habe versucht eine Gruppe von und an mehreren Orten zu zählen, aber es zeigt nur 1 (vermutlich weil es kein eindeutiges Feld innerhalb der Auswahl gibt (jede Zeile ist einzigartig, aber das scheint nicht zu helfen?)).
Soll ich tun die Zählung auf einem bestimmten Feld sein? oder gibt es einen anderen Weg?
Current SQL-Abfrage
DECLARE @WeekCommencing date = '2017-04-03'
select SageID, a.EmployeeID, a.ProjectID, a.TaskID, a.FlatRate, a.PayRate from
( Select distinct Employee.SageID, EmployeeProject.EmployeeID, EmployeeProject.ProjectID, EmployeeProject.TaskID, Employee.FlatRate, Employee.PayRate from
( Select EmployeeID, ProjectID1 as ProjectID, Project1TaskID1 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID1 is not null and Project1TaskID1 is null
union all
Select EmployeeID, ProjectID1 as ProjectID, Project1TaskID1 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID1 is not null and Project1TaskID1 is not null
union all
Select EmployeeID, ProjectID1 as ProjectID, Project1TaskID2 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID1 is not null and Project1TaskID2 is not null
union all
Select EmployeeID, ProjectID2 as ProjectID, Project2TaskID1 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID2 is not null and Project2TaskID1 is null
union all
Select EmployeeID, ProjectID2 as ProjectID, Project2TaskID1 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID2 is not null and Project2TaskID1 is not null
union all
Select EmployeeID, ProjectID2 as ProjectID, Project2TaskID2 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID2 is not null and Project2TaskID2 is not null
union all
Select EmployeeID, ProjectID3 as ProjectID, Project3TaskID1 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID3 is not null and Project3TaskID1 is null
union all
Select EmployeeID, ProjectID3 as ProjectID, Project3TaskID1 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID3 is not null and Project3TaskID1 is not null
union all
Select EmployeeID, ProjectID3 as ProjectID, Project3TaskID2 as TaskID, WeekCommencing
FROM ProjectEmployee
WHERE ProjectID3 is not null and Project3TaskID2 is not null
) as EmployeeProject
inner join
Employee on EmployeeProject.EmployeeID = Employee.EmployeeID
where WeekCommencing = @WeekCommencing
) as a
inner join
( Select ProjectEmployeeID, EmployeeID from -- remove duplicates if info is inserted multiple times
( Select ProjectEmployeeID, EmployeeID, ROW_NUMBER() OVER(PARTITION BY EmployeeID ORDER BY ProjectEmployeeID DESC) EmployeeDup
FROM ProjectEmployee
) a
WHERE EmployeeDup = 1
) as c
on a.EmployeeID = c.EmployeeID
Order by a.flatrate, a.SageID
Stromwerte in der ProjectEmployee Tabelle Stromausgabe von oben Abfrage
I hinzufügen sollte - der gewünschte Ausgang das gleiches wie das zweite Bild (oberhalb), aber mit einer zusätzlichen Spalte namens Linecount
LineCount
5
5
5
5
5
2
2
1
2
2
Bitte, https://stackoverflow.com/help/mcve lesen. – jarlh
Warum haben Sie Abfragen mit WHERE ProjectID1 ist nicht null und Project1TaskID1 ist null' und WHERE ProjectID1 nicht null ist und Project1TaskID1 ist nicht null'. Enthält eine Abfrage mit WHERE ProjectID1 nicht null alle Fälle in diesem Szenario? – Jens
Ich denke, Sie haben einige Union alle in Ihrer Abfrage wiederholt ... Darüber hinaus wäre es sehr nützlich, wenn Sie einige Beispieldaten (CREATE und INSERT-Skripte) – etsa