我在SQL SERVER2000里要写一个交叉表查询语句:
如统计各个销售员全国各省的客户数,每行显示一个销售员,省名做为列标题(但省的数目姓名不定),SQL帮助里用CASE写的交叉表不实用,就是因为省的数目姓名不定。
举例来说有如下一张表:
职员 | 省份 | 顾客数
――――――――――――――
小代 四川 | 5
小王 四川 | 3
小李 X省 | 3
小王 X省 | 2
小王 NULL | 4
......
要形成如下一张交叉表
职员 四川 X省 NUll (其它还有很多未知名的省) 所有省
------------------------------------------------------------------------
小代 5 0 0 .... 5
小王 3 2 4 .... 9
小李 0 3 0 .... 3
......(还有好多职员行)
各位清楚了吗?是有点难度哈。一起来讨论吧。
genie007说的对,可以用存储过程/函数或都TADOQUERY。
declare @sql varchar(8000)
set @sql = 'select name,sum(source),'
select @sql = @sql + 'sum(case subject when '''+subject+''' then source else 0 end) as '''+subject+''','from (select distinct subject from test) as a
select @sql = left(@sql,len(@sql)-1) + ' from test group by name'
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载