【发布时间】:2012-12-14 05:38:32
【问题描述】:
我在 SQL Server 中有 2 个表:
表 1:部门
DeptId Dept Name
------------------
1 Software Development
2 Testing
3 Customization
表 2:名称
DesigId Desig Name DeptId
---------------------------
1 TL 1
2 PL 1
3 TestEngg 2
4 SE 3
我想要以下输出,它将部门作为列标题和相应部门列下的组指定,
Software Development Testing Customization
TL TestEngg SE
PL
我尝试了以下查询,但我只能获得 ID
DECLARE @deptcols AS VARCHAR(MAX);
DECLARE @querystr AS VARCHAR(MAX);
select @deptcols = STUFF((SELECT distinct ',' + QUOTENAME(Dept_Id)
FROM Designation
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @querystr = 'SELECT ' + @deptcols + ' from
(
select Desig_Name, Dept_Id,Desig_Id
from Designation
) p
pivot
(
count(Desig_Id) FOR Dept_Id in (' + @deptcols + ')
) pv '
execute(@querystr)
【问题讨论】:
-
我使用的是 SQL Server 2008 R2
-
What have you tried? - 如果您向我们展示您自己的一些努力,我们将很乐意为您提供帮助 - 但我们不只是为您编写整个代码......
标签: sql sql-server tsql sql-server-2008-r2 pivot