不可逆转的电影类型
Unpivoting movie genres
我正在查看来自 IMDb 的一些电影数据,但发现我的知识有限。这是我正在查看的数据:
我想我会 运行 遇到当前 table 的问题。我怎样才能得到它以便有两列,MovieID 和 Genre?然后它会导致 MovieID 不明确。这需要回转吗?
如有任何帮助,我们将不胜感激!
我看不到你的屏幕截图,所以我在猜测这些列,但大致如下:
SELECT MovieID, "Horror" As Genre
WHERE Horror = 1
UNION ALL
SELECT MovieID, "Comedy" As Genre
WHERE Comedy = 1
UNION ALL
SELECT MovieID, "Drama" As Genre
WHERE Drama = 1
UNION ALL
...
我确实认为 UNPIVOT 会给你想要的东西。这样的事情应该可行(我特意将示例简化为仅包含三种类型,但您应该能够从我所做的事情中得到这个想法):-
SELECT MovieID, Genre, [Count]
FROM
(SELECT MovieID, Crime, Comedy, Drama --comma separated list of the genres
FROM MovieGenres) p
UNPIVOT
([Count] FOR Genre IN
(Crime, Comedy, Drama) --list genres again
) as upvt
如果您只想显示值为 1 的 genres/movieIDs 那么在上面添加一个 WHERE 子句是一个简单的例子:-
SELECT MovieID, Genre, [Count]
FROM
(SELECT MovieID, Crime, Comedy, Drama --list your genres here
FROM #MovieGenres) p
UNPIVOT
([Count] FOR Genre IN
(Crime, Comedy, Drama) --list genres again, same order
) as upvt
WHERE [Count] = 1
我正在查看来自 IMDb 的一些电影数据,但发现我的知识有限。这是我正在查看的数据:
我想我会 运行 遇到当前 table 的问题。我怎样才能得到它以便有两列,MovieID 和 Genre?然后它会导致 MovieID 不明确。这需要回转吗?
如有任何帮助,我们将不胜感激!
我看不到你的屏幕截图,所以我在猜测这些列,但大致如下:
SELECT MovieID, "Horror" As Genre
WHERE Horror = 1
UNION ALL
SELECT MovieID, "Comedy" As Genre
WHERE Comedy = 1
UNION ALL
SELECT MovieID, "Drama" As Genre
WHERE Drama = 1
UNION ALL
...
我确实认为 UNPIVOT 会给你想要的东西。这样的事情应该可行(我特意将示例简化为仅包含三种类型,但您应该能够从我所做的事情中得到这个想法):-
SELECT MovieID, Genre, [Count]
FROM
(SELECT MovieID, Crime, Comedy, Drama --comma separated list of the genres
FROM MovieGenres) p
UNPIVOT
([Count] FOR Genre IN
(Crime, Comedy, Drama) --list genres again
) as upvt
如果您只想显示值为 1 的 genres/movieIDs 那么在上面添加一个 WHERE 子句是一个简单的例子:-
SELECT MovieID, Genre, [Count]
FROM
(SELECT MovieID, Crime, Comedy, Drama --list your genres here
FROM #MovieGenres) p
UNPIVOT
([Count] FOR Genre IN
(Crime, Comedy, Drama) --list genres again, same order
) as upvt
WHERE [Count] = 1