SQL Server2005 中用 Pivot 生成交叉表

最近在做一个数据统计,要求对一个表中的数据按照两个维度呈现,也就是传统的交叉表

比如,有一个问题表,有三个字段,(标题、问题类别、问题状态)

要求按照不同的类别,分别统计处各个状态的问题数量(如:产品问题中未处理的数量、服务问题中遗留问题数量等等)。

经过查找和尝试,终于生成了结果,现在分享给大家。

通过 Sql 2005 中的 Pivot 函数,可以方便的制作交叉表。

关于Pivot的用法,就不详细说了,大家可以百度一下,或者看sql server的帮助文档

 

下面是代码部分

 

 

 

 

结果截图:

 

进一步思考:

经过使用大家会发现,由于pivot中的字段必须是静态输入的,in([未处理],[已处理],[无效反馈])

这使得程序不够灵活,比如我增加了一个状态,那就需要修改SQL语句

能不能把这些字段也变成动态生成的呢,答案是肯定的。

我们可以通过自定义函数,读取QuestionClass生成 in 部分的字段。

 

动态生成sql:


这样可以得到同样的结果。

 

总结:

通过Pivot和动态生成sql的方法,可以使交叉表统计更加灵活。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值