【发布时间】:2015-12-12 17:54:04
【问题描述】:
我知道 earlier 也有人问过这个问题,但我似乎无法根据我的要求应用解决方案
我需要一个应用 PIVOT 以便这个表(从连接生成):
Category | Tag | Title
----------------------------------
First | Tag 1 | Article 1
Second | Tag 2 | Article 1
Third | Tag 4 | Article 1
First | Tag 1 | Article 2
Second | Tag 4 | Article 2
Third | Tag 5 | Article 2
First | Tag 1 | Article 5
Third | Tag 7 | Article 5
First | Tag 8 | Article 7
变成:
Title | First | Second | Third
---------------------------------------------
Article 1 | Tag 1 | Tag 2 | Tag 4
Article 2 | Tag 1 | Tag 4 | Tag 5
Article 5 | Tag 1 | NULL | Tag 7
Article 7 | Tag 8 | NULL | NULL
这是我的查询:
declare
@cols nvarchar(max),
@stmt nvarchar(max)
select @cols = isnull(@cols + ', ', '') + '[' + T.CategoryTypeTitle + ']' from (select CategoryTypeTitle from CategoryTypes) as T
Select @stmt = '
select Distinct * from
(
Select
C.CategoryTypeTitle,
A.* from Articles A
Join
ArticleToTags AT on AT.ArticleID = A.ArticleID
Join
Tags T on T.CategoryID = AT.CategoryID
Join
CategoryTypes C on C.CategoryTypeID = T.CategoryTypeID
) src
PIVOT
(
Count(Title) --**I need Tag Names (i.e. "Tag 1, Tag 2") instead of getting count or max etc**
for [CategoryTypeTitle] in ('+ @cols +')
) as piv
'
Exec sp_executesql @stmt = @stmt
【问题讨论】:
标签: sql-server tsql sql-server-2008-r2 pivot