2011-12-01 82 views
4

可能重複:
T-SQL Pivot? Possibility of creating table columns from row valuesSQL查詢透視與動態列

我徒勞的在尋找太久,現在不得不承認失敗,尋求幫助,我m試圖修改數據透視查詢以產生來自具有如下數據的表的動態查詢結果:

UserId  PageViewed   DateTimeStamp 
    1    Index.html   2011-12-01 13:55:01 
    1    FAQ.html   2011-12-01 13:58:53 
    1    ContactUs.html  2011-12-01 14:00:16 
    2    Index.html   2011-12-01 15:55:01 
    2    FAQ.html   2011-12-01 15:58:53 
    2    ContactUs.html  2011-12-01 15:00:16 

要顯示這樣的事情,在頁面的列數取決於用戶訪問的網頁數量:

User  StartTime  Page1  Page2  Page3 
    1   13:55:01   Index.hml FAQ.html  ContactUs.html 
    2   15:55:01   Index.hml FAQ.html  ContactUs.html 

我已經硬編碼在列,但很明顯,我不希望它管理不斷改變腳本以適應越來越多的頁面。

到目前爲止,我沿着線的東西:

SELECT p.UserId, 
     CONVERT(TIME, MIN(p.DateTimeStamp), 7) StartTime, 
     ISNULL(p.[1],'') Page1 
     ISNULL(p.[1],'') Page2 
     ISNULL(p.[1],'') Page3 
    FROM 
    (SELECT UserId 
     ,DateTimeStamp 
     ,PageViewed 
     ,ROW_NUMBER() OVER(PARTITION BY UserId ORDER BY DateTimeStamp) as pOrder 
     FROM tbl) AS p 
    PIVOT(MIN(PageViewed) FOR pOrder IN ([1],[2],[3])) 

在正確的方向上沒有任何幫助或指針將不勝感激!

在此先感謝!

+0

這裏的輸出對我沒有意義。你能爲此提供一個用例嗎?也許有更好的方法?我發現頂部X頁面更適合於數據透視/報告,而不是每個頁面都適合列。 –

回答

1

我見過的關於動態旋轉的最好例子是Itzik Ben-Gan的例子。這個相關的SO Question有一個很好的例子,你需要做什麼。基本上,你需要使用一些動態的SQL來完成你的目標。

+0

嗨蒂姆,感謝您的迴應,雖然我無法點擊到您發佈的鏈接? –

+0

@SirBelmalot很抱歉。我更新了鏈接。 –