Ich habe den folgenden Code und die folgende Abfrage, die in SQL Server Management Studio 2012 geschrieben wird;Übersetzen von SUMMIF zu TSQL
WITH cteUniqueClients AS
(
SELECT
CASE
WHEN ServiceActualEndDate IS NULL
AND LAG(ClientID,1) OVER(PARTITION BY ClientID, ServiceProvider ORDER BY ServiceActualEndDate DESC, StartDateFormatted DESC) = ClientID
THEN 0
WHEN ServiceActualEndDate IS NOT NULL
THEN 0
ELSE 1
END AS UniqueClient,
CASE
WHEN LAG(ActualHoursPerWeek,1) OVER (PARTITION BY ClientID, ServiceProvider ORDER BY StartDateFormatted DESC) = ActualHoursPerWeek
THEN 0
ELSE 1
END AS UniqueService,
ClientID, ClientName,
ActualHoursPerWeek,
ServicePlannedStartDate, ServiceActualStartDate
FROM
dbo.tTable1
WHERE
(ServiceActualStartDate <= '2016-08-09' OR ServicePlannedStartDate <= '2016-08-09')
AND ServiceActualEndDate IS NULL
AND (ServicePlannedEndDate > '2016-08-09' OR ServicePlannedEndDate IS NULL)
AND ClientDeathDate IS NULL
)
SELECT
COUNT(ClientID) OVER (PARTITION BY ClientID ORDER BY ClientID) AS RecordCount,
cteUniqueClients.*
FROM
cteUniqueClients
WHERE
UniqueService = 1
ORDER BY
ClientID ASC
und die folgende Excel-Formel:
=SUMIF(G2:G961,G2,I2:I961)
Wo Spalte G ClientID
wäre und Spalte würde ich ActualHoursPerWeek
sein.
Gibt es eine Möglichkeit, diese beiden zu heiraten, während alle Berichtsspalten beibehalten werden?
Unten ist ein Bild der Beispiel-Excel-Ausgabe, die gewünscht werden würde;
Was möchten Sie mit der 'SUMMIF' erreichen? Es sieht so aus, als würde man 'ActualHoursPerWeek' für die' ClientID' von dieser Zeile und allen unteren Zeilen (höhere Zeilen ausgeschlossen) hinzufügen. Wenn also "ClientID" in den Zeilen 1-3 gleich ist, würde Zeile 1 die Summe von 1-3 erhalten, Zeile 2 würde die Summe von 2-3 erhalten und Zeile 3 würde sich selbst erhalten. (Angenommen, die Formel wurde in einer Zelle erstellt und kopiert.) – SMM
@SMM Genau so hat die Excel-Datei die Ergebnisse ja. Ich kann dann die Daten nach ClientID und AcutalHoursPerWeek sortieren und die eindeutige Client-Spalte verwenden und nur die eindeutigen Clients anzeigen, aber auch die gesamten Stunden. Sorry, wenn das ein bisschen wortreich ist – NHier1992
So würde ich dann erwarten, dass das Originalblatt eine sehr spezifische Sortierreihenfolge haben, um sicherzustellen, dass die Summen nur niedrigere Zeilen enthalten ... Was ist diese Sortierreihenfolge? Sind diese Spalten in der Tabelle enthalten? Es kann hilfreich sein, das Quell-Excel zu sehen, mit dem Sie das gewünschte Ausgabebild erstellt haben. Vielleicht auch das Tabellenschema. – SMM