我正在尝试将表格数据处理成更具视觉吸引力的输出格式。这可能是问题的一部分,因为我想要的可能是用于单独的报告软件。
我有一张看起来像这样的桌子
teacher student
----------------------
teacher1 Bob
teacher1 Jim
teacher2 Sam
teacher3 Bill
teacher3 John
teacher3 Eric
我想要一个看起来像这样的表:
teacher1 teacher2 teacher3
---------------------------------
Bob Sam Bill
Jim null John
null null Eric
因此,我尝试将所有教师姓名填充到一个变量中,然后使用 aPivot
但由于我必须选择一个聚合,所以我只能像这样得到Max
orMin
学生:
DECLARE @teacherList AS VARCHAR(max)
SELECT @teacherList = Stuff((SELECT DISTINCT',[' + teacher + ']'
FROM myTable
FOR xml path('')), 1, 1, '')
DECLARE @dynamic_pivot_query AS VARCHAR(max)
SET @dynamic_pivot_query = 'select' + @teacherList +
'from
(
SELECT [teacher],[student]
FROM [dbo].[myTable]
) as S
Pivot
(
MIN([student])
FOR teacher IN (' + @teacherList + ')
) as P
'
EXEC(@dynamic_pivot_query)
结果是:
teacher1 teacher2 teacher3
---------------------------------
Bob Sam Bill
假设如下:
- # 教师及其姓名未知(变量)
- 每位教师的学生人数是未知的,并且可能因每位教师而异
有没有办法做到这一点?