【发布时间】:2012-04-22 07:17:25
【问题描述】:
好的,这是我断定我迷路的情况之一。
我有一张如下所示的表格:
我写了以下代码:
WITH CTE AS(
SELECT
USER_NBR
,CASE WHEN MOVIE_TYPE = 'Action' THEN MOVIE_NAME END [ACTION]
,CASE WHEN MOVIE_TYPE = 'Drama' THEN MOVIE_NAME END DRAMA
,CASE WHEN MOVIE_TYPE = 'Romance' THEN MOVIE_NAME END ROMANCE
,ROW_NUMBER() OVER (PARTITION BY USER_NBR ORDER BY USER_NBR) AS OCCURANCE
FROM dbo.MOVIE)
SELECT * FROM CTE WHERE OCCURANCE = 1
我得到这个结果:
我不明白为什么我在查询结果中得到空值?
我做错了什么?如您所见,我正在对电影进行分类。
感谢您查看此内容
【问题讨论】:
-
您期望
NULL-valued 列中的值是多少? -
漂亮女人和真爱。属于该类别的两部电影。谢谢!
-
所以您正试图在单行上显示
user_nbr的每种类型的“第一个”(尽管在您的查询中没有明确的顺序定义)movie? -
删除条件
occurance = 1以获得更清晰的图片...查看您在同一列值上的案例条件...如果 movie_type Drama 那么您的输出查询将在 DRAMA 列中没有值。 . -
你的意思是做一个支点然后......
标签: sql sql-server database pivot