SQL查询结果为二维表

 1 ---测试数据---
 2 if object_id('[tb]') is not null drop table [tb]
 3 go
 4 create table [tb]([code] varchar(6),[Month] int,[Num] int)
 5 insert [tb]
 6 select 'C00001',200401,3 union all
 7 select 'C00001',200402,1 union all
 8 select 'C00001',200403,1 union all
 9 select 'C00001',200404,3 union all
10 select 'C00001',200405,3 union all
11 select 'C00001',200604,1 union all
12 select 'C00002',200401,3 union all
13 select 'C00002',200402,2 union all
14 select 'C00002',200404,1 union all
15 select 'C00002',200405,1 union all
16 select 'C9999',200401,5 union all
17 select 'C9999',200402,2 union all
18 select 'C9999',200403,2
19 go
20 
21 ---查询---
22 declare @sql varchar(8000)
23 select 
24   @sql=isnull(@sql+',','')
25   +'sum(case when [month]='+ltrim([month])+' then num else 0 end) as ['+ltrim([month])+']'
26 from
27 (select distinct [month] from tb) t
28 
29 exec ('select code,'+@sql+' from tb group by code')
30 
31 ---结果---
32 code   200401      200402      200403      200404      200405      200604
33 ------ ----------- ----------- ----------- ----------- ----------- -----------
34 C00001 3           1           1           3           3           1
35 C00002 3           2           0           1           1           0
36 C9999  5           2           2           0           0           0
37 
38 (3 行受影响)

原文自:https://bbs.csdn.net/topics/350043942

转载于:https://www.cnblogs.com/Doumiao/p/9075875.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建立运行环境-Excel Vba,可移植到VB环境中(需修改一些代码) '仿制简单的SQL查询语句,用于对二维数组的查询 '参照SQL语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle] ' '实现功能: ' 依条件设置查询数组,返回包含查询字段(或全部字段)的数组,可多条件组合。 ' 条件运算符包括:> = < >= <= <> , like(正则达式) ' '附注: ' 使用此函数,需要在文件中引用正则达式脚本 Microsoft VBScript Regular Expressions x.x ' (根据不同的电脑配置和环境此处会有差异) '算法简要: ' 1、查询条件运算符:仅有 >, =, <, >=, <=, <> , like(正则达式) ' 本函数中仅有上述运算符。原因在于,更多的运算符编制逻辑过于复杂,又不太常用。 ' 为了尽可能多地容纳各种运算关系,添加了正则达式匹配运算, ' 在某个单一条件中,正则几乎可以容纳绝大部分的比对运算关系了。 ' 2、数字比较: ' 采用了将数字型字符串类型换为数字之后再比较的方法,结果更为准确。 ' 3、其他算法和运算速度: ' 编制过程中,试验过使用 正则+逻辑分支+达式引用 的方法, ' 可以实现几乎等同于SQL查询语句的复杂功能,而且代码更简捷。 ' 但运算速度相差过于悬殊(大概几十到上百倍 - "一闪而过"和"一袋烟"的差距!),最后不得不放弃。 ' 所以现在的版本相当于一个简化了的select语句,但对于大多数查询情况而言够用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值