2012-11-05 38 views
0

我有UserID, SiteID, SiteViews列的表,另一個UserID, First, Last如何在SQL中顯示不同的值作爲不同的列?

我需要爲First + Last, Site1Views, Site2Views

顯示的數據只有2個網站的ID和我需要有每個用戶的SiteViews的總和。

目前我有:

select s.UserFirstName + ' ' + s.UserLastName as 'Name', 
j1.SiteViews as 'Site1Name', 
j2.SiteViews as 'Site2Name' 
from (Users s INNER JOIN Usage j on s.UserID = j.UserID) 

我不知道如何做到這一點。任何幫助,將不勝感激。

+0

這些是什麼表之間的主/外鍵關係? –

+0

用戶標識是正在使用的關係。第一個表上的UsageID也是主鍵。 –

回答

1

聽起來像你可能想用這個PIVOT?我無法測試它,但是這會讓你走向正確的方向?

select s.UserFirstName + ' ' + s.UserLastName as Name, 
     [Site1Name], 
     [Site2Name] 
FROM 
     (SELECT s.UserFirstName + ' ' + s.UserLastName, 
       SiteName, 
       SiteVisits 
     from Users s 
     INNER JOIN Usage j1 
      on s.UserID = j1.UserID 
     ) 
PIVOT (SUM(SiteVisits) FOR SiteName IN ([Site1Name],[Site2Name])) as p 
+0

謝謝!要清楚,OtherUsageTable與第一個Usage表相同。即我有用戶ID 1,站點ID 1,視圖200,用戶ID 1,站點ID 2,視圖300.您的語句確實將2個站點分開,但用戶ID未分組,並且視圖仍在多個記錄中出現。 –

+0

我更新了我的答案。不知道它是否會起作用,但希望它能指引您朝正確的方向發展 –

1

我如何理解它

select s.UserFirstName + ' ' + s.UserLastName as Name 
,(Select COUNT(*) from SiteViews s1 where s.UserID = s1.UserID /*other condition*/) as SiteView1 
,(Select COUNT(*) from SiteViews s2 where s.UserID = s2.UserID /*other condition*/) as SiteView2 
from Users s 
相關問題