不可逆转的电影类型

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

SQLFIDDLE

如果您只想显示值为 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