我正在开展一个个人项目,我正在观看一群朋友的IMDb电影评级。我正在尝试创建一个事实表,其中包含每部电影和每部电影的评级(如果没有评级,则为NULL)。
以下是我目前正在处理的问题:
有7位评价者:Alex,James,Walker,Mitchell,Robbie G.,Robbie A.和Jacob。如果这个形式错误,请纠正我,但我想要有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
答案 0 :(得分: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。