【问题标题】:IMDb Ratings: Pivot/UnpivotIMDb 评级:Pivot/Unpivot
【发布时间】:2015-11-18 06:56:12
【问题描述】:

我正在开展一个个人项目,我正在查看一组朋友的 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

【问题讨论】:

    标签: sql sql-server-2012 pivot unpivot imdb


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 2021-12-18
      相关资源
      最近更新 更多