2

我有一个表格,其中的数据如下所示:

pageno  groupid
100100  mpadilla
100101  Mine
105101  swachman
100100  swachman
105101  Mine
107101  mpadilla

我希望数据在 SQL Server 2000 中看起来像这样(交叉表/数据透视表)(在 SQL Server 2000 中不可PIVOT用):

pageno  Mine    mpadilla        swachman
100100  --          X           X
100101  X           --          --
105101  X           --          X
107101  --          X           --

这是我基于本教程http://msdn.microsoft.com/en-us/library/aa172756.aspx的静态解决方案:

SELECT pageno, 
    [Mine] = MAX(CASE groupid WHEN 'Mine' THEN 'X' ELSE '--' END),
    [mpadilla] = MAX(CASE groupid WHEN 'mpadilla' THEN 'X' ELSE '--' END),
    [swachman] = MAX(CASE groupid WHEN 'swachman' THEN 'X' ELSE '--' END)
FROM #DistinctPages
GROUP BY pageno
ORDER BY pageno

我需要的是 SQL Server 2000 的动态交叉表解决方案。我尝试根据我的情况调整它,但我就是不明白:SQL Server 2000 中的行到列

任何指导都会有所帮助!

4

1 回答 1

2
declare @a varchar(4000)
set @a = ''
select @a = @a + x
from
(select top 100 percent
',[' +groupid + ']=MAX(CASE groupid WHEN ''' +groupid+ '''  THEN ''X'' ELSE ''--'' END)' x
from #DistinctPages Group by groupid order by groupid) t

exec ('SELECT pageno' + @a + ' FROM #DistinctPages GROUP BY pageno ORDER BY pageno')
于 2013-09-12T22:52:57.287 回答