我有一个表格,其中的数据如下所示:
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 的动态交叉表解决方案。我尝试根据我的情况进行调整,但我就是不明白:Rows to Columns in SQL Server 2000
任何指导都会有帮助!
最佳答案
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')
关于sql - SQL Server 2000 中的动态交叉表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18774387/