Ich bin nicht in der Lage, nach dem Code in meinem dynamischen Pivot zu gruppieren. Ich muss nach dem Code-Bereich gruppieren, der in der ZONE-Tabelle definiert ist, wie unten gezeigt. Ich muss den eindeutigen Code mit der Gruppe nach zeigen. Ein Teil des Codes hat mehr als eine zone_id, daher muss ich sie zusammenführen. Ich bin mit SQL 2008.SQL Dynamic Pivot Group Von
ZONE_ID SITE_ID ZONE_NAME CODE
197 103 ADANA CADDE CAM2 M01001
180 103 ADANA CADDE CAM1 M01001
Declare @Date1 date = GetDate()
IF OBJECT_ID('tempdb..#Dates') IS NOT NULL
drop table #Dates
SELECT DISTINCT CONVERT(VARCHAR,START_TIME,106) AS [Date]
INTO #Dates
FROM dbo.DIRECTIONAL_METRIC
WHERE CAST(START_TIME as DATE) >=CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@Date1)-1),@Date1),101)
and CAST(START_TIME as DATE) <= @Date1
AND DATEPART(HOUR,START_TIME) BETWEEN 9 AND 23
order by [Date]
Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName(convert(varchar,[Date],106))
From #Dates
Order by 1 For XML Path('')
),1,1,'')
Select @SQL = N'
Declare @Date1 DATE
SELECT @Date1 = GetDate()
SELECT [CODE],' + @SQL + ',[Grand Total Enter],[Grand Total Exit]
FROM
(
SELECT [CODE]
,[Date] = CONVERT(VARCHAR, START_TIME, 106)
,[NUM_TO_ENTER]
,[Grand Total Enter] = (SELECT SUM(NUM_TO_ENTER) FROM DIRECTIONAL_METRIC WHERE Zone_ID=A.Zone_ID AND
CAST(START_TIME AS DATE) >='''+CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@Date1)-1),@Date1),101)+'''AND CAST(START_TIME AS DATE) <='''+cast(@Date1 as varchar(10))+'''
AND DATEPART(HOUR,START_TIME)BETWEEN 9 AND 23)
,[Grand Total Exit] =(SELECT SUM(NUM_TO_EXIT) FROM DIRECTIONAL_METRIC Where Zone_ID=A.Zone_ID AND
CAST(START_TIME AS DATE) >='''+CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@Date1)-1),@Date1),101)+''' AND CAST(START_TIME AS DATE) <='''+cast(@Date1 as varchar(10))+'''
AND DATEPART(HOUR,START_TIME)BETWEEN 9 AND 23)
FROM DIRECTIONAL_METRIC A INNER JOIN ZONE Z ON Z.ZONE_ID = A.ZONE_ID
WHERE CAST(START_TIME as DATE) >=CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@Date1)-1),@Date1),101)
and CAST(START_TIME as DATE) <= @Date1
AND DATEPART(HOUR,START_TIME)BETWEEN 9 AND 23
AND Z.CODE IS NOT NULL
) S
PIVOT
(
SUM([NUM_TO_ENTER]) FOR
[Date] IN (' + @SQL + ')
) AS Pvt GROUP BY [CODE] '
Exec(@SQL);
Was genau ist Ihre Frage? – Hogan
Wie kann ich nach dem CODE in meinem dynamischen Pivot gruppieren? –
gleiche Weise wie immer umgeben den Code, den Sie mit 'SELECT ... FROM (aktuellen Code) AS X GROUP BY X.CODE' – Hogan