【发布时间】:2015-09-25 00:15:00
【问题描述】:
我有一个名为 MY_MOVIES 的表,它有两列:MOVIES 和 GENRES,就像这样(关系是一部电影与多种类型的关系):
GENRE MOVIE
---------- --------------
ACTION MOVIE1
DRAMA MOVIE1
CRIME MOVIE2
DRAMA MOVIE2
CRIME MOVIE3
DRAMA MOVIE3
ACTION MOVIE4
ADVENTURE MOVIE4
FANTASY MOVIE4
ANIMATION MOVIE5
ADVENTURE MOVIE5
COMEDY MOVIE5
此表有超过 100000 行。
我正在尝试获得这样的输出:
MOVIES GENRES
---------- --------------
MOVIE1 ACTION, DRAMA
MOVIE2 CRIME, DRAMA
MOVIE3 CRIME, DRAMA
MOVIE4 ACTION, ADVENTURE, FANTASY
MOVIE5 ANIMATION, ADVENTURE, COMEDY
我正在尝试像这样使用 PIVOT(稍后将 0 和 1 替换为流派的想法):
SELECT * FROM MY_MOVIES
PIVOT (COUNT(MOVIE) FOR GENRE in (SELECT DISTINCT(GENRE) FROM MY_MOVIES) as MOVIE_GENRES
我一直认为我做错了。
【问题讨论】:
-
你应该用你正在使用的数据库标记问题(假设是 Oracle,给定 PL/SQL 标签)。
-
是的@GordonLinoff,我正在使用 Oracle。抱歉,下次我会标记它。
标签: sql oracle pivot string-concatenation