Ich schreibe eine Abfrage, um laufende Summen einiger Dinge im Laufe der Zeit zu berechnen. Die Zeitinkremente sind in wöchentlichen Buckets (jeden Montag), aber im Laufe der Zeit muss nichts in der Vergangenheit sein. Das bedeutet, dass meine wöchentlichen Eimer schweben und immer in der Zukunft bleiben. Ich habe ein paar Links für die Einrichtung einer PIVOT-Funktion gesehen, aber alle diese Beispiele die Spalten sind feste Werte. Wie bekomme ich meine Abfrageergebnisse als meine Spaltennamen angezeigt?So legen Sie Spalten aus dynamischen Abfrageergebnissen fest
Hier ist mein Code, der ausgibt, was ich brauche, um meine Spaltennamen zu sein. Ich setze das Inkrement auf "1", um nur 4 Ergebnisse zum Testen zu bekommen, aber werde es wahrscheinlich bis zu 12 Monate öffnen.
DECLARE @Startdate as date
DECLARE @Enddate as date
SET @Startdate = getdate()
SET @Enddate = DATEADD(Month,1,@StartDate)
;WITH cte(myDate) AS ( SELECT CASE WHEN DATEPART(Day,@StartDate) = 1 THEN @StartDate
ELSE DATEADD(Week,DATEDIFF(Week,0,@StartDate)+1,0) END AS myDate
UNION ALL
SELECT DATEADD(Week,1,myDate)
FROM cte
WHERE DATEADD(Week,1,myDate) <= @EndDate)
SELECT CONVERT(date,myDate) AS BuildWeek
FROM cte
OPTION (MAXRECURSION 0)
Sie werden eine dynamische Dreh wollen, die eine Dreh mit dynamischem SQL ist. Es gibt viele Beiträge dazu. Hier ist eine, die ich kürzlich für jemanden gemacht habe. http://Stackoverflow.com/a/39513013/6167855 – scsimon
@scsimon danke. Ich werde etwas mehr lesen. brauchte nur einen Breadcrumb auf den richtigen Keywords zu suchen. – Nicho247
Kein Schweiß. Hier ist ein cooles Tutorial/Erklärung. http://sqlhints.com/2014/03/18/dynamic-pivot-in-sql-server/ – scsimon