2010-01-21 126 views
1

我SQL Server 2008上,我有一個包含以下形式的WA指標表:SQL服務器:GROUP BY聚集語義與PIVOT運算

CREATE TABLE #VistitorStat 
(
    datelow datetime, 
    datehigh datetime, 
    name varchar(255), 
    cnt int 
) 

兩天的有價值數據表中的樣子所以:

2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 New Visitor  221 
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 Unique Visitors 225 
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 Return Visitors 0 
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 Repeat Visitors 22 
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 New Visitor  263 
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 Unique Visitors 269 
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 Return Visitors 4 
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 Repeat Visitors 38 

我想由天組,並轉動指標成排的形式。使用我能找到的PIVOT運算符的示例僅顯示基於SUMMAX聚合函數的聚合。據推測,我需要將GROUP BY語義傳達給PIVOT操作員 - 注意:我找不到任何有關如何實現此操作的明確示例/文檔。是否有人可以使用此查詢的PIVOT運算符發佈此正確語法 -

如果這不可能與樞軸 - 你能想出一個優雅的方式來編寫查詢?如果沒有,我只需要以轉置的形式生成數據。

帖子答案編輯:

我得出的結論是,樞軸運營商unelegant(到目前爲止,我認爲這是一個語法破解版) - 我已經在轉置產生的數據的問題解決了時尚。我歡迎評論。

回答

1

我不太清楚你想要的結果,但是這給每天一個行:

CREATE TABLE #VistitorStat 
(
datelow datetime, 
datehigh datetime, 
name varchar(255), 
cnt int 
) 


insert into #VistitorStat 
     select '2009-07-25 00:00:00.000','2009-07-26 00:00:00.000', 'New Visitor',  221 
union select '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000', 'Unique Visitors', 225 
union select '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000', 'Return Visitors', 0 
union select '2009-07-25 00:00:00.000',' 2009-07-26 00:00:00.000', 'Repeat Visitors', 22 
union select '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000', 'New Visitor' , 263 
union select '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000', 'Unique Visitors', 269 
union select '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000', 'Return Visitors', 4 
union select '2009-07-26 00:00:00.000',' 2009-07-27 00:00:00.000', 'Repeat Visitors', 38 


select * from #VistitorStat 
pivot (
    sum(cnt) 
    for name in ([New Visitor],[Unique Visitors],[Return Visitors], [Repeat Visitors]) 

) p 
+0

(+1)是的,這確實起作用。語法很奇怪 - 它甚至沒有意義 - 我不想添加'cnt'值 - 但它的工作原理是:D。 – 2010-01-21 15:37:25