zoukankan      html  css  js  c++  java
  • SQLServer 2008R2 用pivot 实现行专列

    先说下需求,在客户表中有字段是个数据字典,表示客户分类,在表单中显示的是下拉框,现在需要一个报表,查看每个分类下有多少客户

    1,表结构如下 create table Test_Acc (name nvarchar(50), type nvarchar(2) )

    现在需要出表1表2两种维度的报表,

    2.先插入模拟数据

    insert test_acc values ('客户2','A')

    insert test_acc values ('客户3','A')

    insert test_acc values ('客户4','B')

    insert test_acc values ('客户5','B')

    insert test_acc values ('客户6','C')

    insert test_acc values ('客户7','D')
    insert test_acc values ('客户8','A')
    insert test_acc values ('客户9','A')

    insert test_acc values ('客户10','A')
    insert test_acc values ('客户11','A')
    insert test_acc values ('客户12','C')
    insert test_acc values ('客户13','C')

    3.表1的统计比较简单,一个Group by type 就能统计出来

    select type ,count(*) from Test_Acc group by type

    4.表2的统计需要进行行专列,我们用pivot的方式 

    select * from (
    select type ,count(*) as type_Count from Test_Acc group by type
    ) as t
    pivot (sum(t.type_Count) for t.type in (A,B,C,D))as c

    5.总结 pivot相对case when方式来进行转列省去了很多代码,性能也比较高

  • 相关阅读:
    AutoResetEvent 2
    AutoResetEvent
    c++ 控制台输入参数
    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped
    filezilla管理网站服务器
    matlab
    WCF:无法满足对安全令牌的请求,因为身份验证失败。
    WCF 学习
    dev
    dotnetbar
  • 原文地址:https://www.cnblogs.com/hellohongfu/p/2705146.html
Copyright © 2011-2022 走看看