当前位置:编程学习 > VB >>

求助一句SQL查询语句

小弟用VB查询SQL2000数据库中数据,然后写入EXCEl表中。
SQL数据库表名为PP,表结构如下:
编码 数值 时间
  A  0.2 5月4日
  B  0.1 5月4日
  C  0.5 5月4日
  D  1.1 5月4日
  E . .
  F . .
  A  0.5 5月6日
  B  0.8 5月6日
  C  2.5 5月6日
  D  0.1 5月6日
  . . .
  . . .
  A  8   5月9日
  B  1.1 5月9日
  C  5   5月9日
  D  6.0 5月9日
  . . .
  . . .
  . . .

根据时间条件用select语句查询后结果是:
编码 总和 数值 数值 数值 ...
  A   8.7  0.2  0.5  8 ...
  B   2.0  0.1  0.8 1.1 ...
  C   8    0.5  2.5  5 ...   
  D   7.2  1.1  0.1  6 ...
  E
  F
  .

 (同一编码的数值,放在一行)
groupby 分组查询。 按编码GROUP BY 就可以了啊 具体语句,谢谢 --这样将一个月的值做行列转换,可能会超过SQL允许的一个查询语句4000个字符的上限,
select 编码, sum(数值) as 总和, 
  sum(case when 数值 = '5月4日' then 数值 else 0 ) as 数值_5月4日,
  sum(case when 数值 = '5月6日' then 数值 else 0 ) as 数值_5月6日,
  ... from PP
group by 编码
引用 4 楼 hupeng213 的回复:
--这样将一个月的值做行列转换,可能会超过SQL允许的一个查询语句4000个字符的上限,
select 编码, sum(数值) as 总和, 
  sum(case when 数值 = '5月4日' then 数值 else 0 ) as 数值_5月4日,
  sum(case when 数值 = '5月6日' then 数值 else 0 ) as 数值_5月6日,
  ... from……


数据很多,每天都有,动态的怎么写?谢谢! 引用
http://tech.it168.com/db/s/2006-07-31/200607311324786.shtml

注:有2005版本以上的pivot函数使用方法,也有动态转换方法,
引用 6 楼 hupeng213 的回复:
引用
http://tech.it168.com/db/s/2006-07-31/200607311324786.shtml

注:有2005版本以上的pivot函数使用方法,也有动态转换方法,

试了,vb中运行不了 --用于:交叉表的列数是不确定的
declare @sql varchar(8000)
set @sql = 'select name,'

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'

exec(@sql)

go
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,