2015-08-24 64 views
-2

我正在一個個人項目,我正在看一羣朋友的IMDb電影評級。我正在嘗試創建一個事實表,其中包含每部電影的評級以及每部電影的評級(如果沒有評級,則爲NULL)。IMDb評分:透視/不透明

以下是我目前正在處理:

enter image description here

有7個評分員:亞歷克斯,詹姆斯·沃克,米歇爾,羅比G.,羅比A.,雅各。如果這個表格是錯誤的,請糾正我,但我想有7列,每個評估者一個。這種方式電影ID將是不同的。我試圖在Power BI中將此視覺化,並且我需要電影ID才能與衆不同。

另一個問題是DateCreated屬性。我將如何處理這個?爲每個MovieID添加7個列?

這裏是我現在有一個不工作:

SELECT [MovieID] 
     ,[Rater] 
     ,[UserRating] 
     ,[DateCreated] 
    FROM [IMDbRatings].[dbo].[vetl_fUserRatings] 
    PIVOT([UserRating] FOR [Rater] IN(Mitchell,Walker,James,Alex,Jacob,Robbie A.,Robbie G.)) as x 

回答

1
SELECT 
    [MovieID] 
    ,max(case when [Rater] = 'Mitchell' then [UserRating] end) as "Mitchell" 
    ,max(case when [Rater] = 'Walker' then [UserRating] end) as "Walker" 
    ,max(case when [Rater] = 'James' then [UserRating] end) as "James"  
    -- likewise for other users 
    ,max([DateCreated]) 
FROM [IMDbRatings].[dbo].[vetl_fUserRatings] 
group by [movieid] 

你可以用case語句做到這一點,如果你知道用戶的數量是固定的。否則,你將不得不使用動態sql。