Wie es ist, dass diese gilt:Bestimmen Gruppierung von Parametern -
ALTER PROCEDURE [StoredProcedure]
@abcID int = null -- optional param
SELECT columnJ, columnK, Count(eID) AS Num, Sum(OutXYZ) as TotalProdXYZ, Sum(RawXYZ) as TotalRawXYZ
FROM [v_ViewTable]
WHERE (@abcID IS NULL OR (abcID = @abcID))
GROUP BY columnJ, columnK
Aber dann ist dies wirft einen „columnJ in der Auswahlliste ungültig ist, weil es in einer Aggregatfunktion nicht enthalten ist oder den GROUP BY-Klausel. "
ALTER PROCEDURE [StoredProcedure]
@abcID int = null -- optional param
-- if 0: Group by columnJ, columnK
-- else: Group by columnK, columnJ
, @Grouping int = null
SELECT columnJ, columnK, Count(eID) AS Num, Sum(OutXYZ) as TotalProdXYZ, Sum(RawXYZ) as TotalRawXYZ
FROM [v_ViewTable]
WHERE (@abcID IS NULL OR (abcID = @abcID))
GROUP BY
CASE WHEN @Grouping = 0 THEN columnJ ELSE columnK END
,CASE WHEN @Grouping = 0 THEN columnK ELSE columnJ END
Was ist los mit meiner CASE-Anweisung? Grundsätzlich, wenn @Grouping = 0, möchte ich die Gruppe von J, K wenn noch etwas anderes, es sollte K sein, J
Vielen Dank im Voraus für jede Hilfe!
... habe ich vergessen "AS BEGIN" in meinem Beispiel zu setzen, aber es ist in meinem eigentlichen Code in SQL Server ... – blacksaibot
erhalten Sie die Fehler, wenn Sie NULL übergeben oder wenn Sie etwas übergeben? – scsimon