SQL表如何查询___-急

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:30:20
客户编号 日期 数量
0001 2009-1-1 1
0001 2009-1-2 2
0001 2009-1-3…… 3
以上为原表
如做成如下表:

客户编号 日期格式(1-1) 日期格式(1-2) 日期格式(1-3) 数量合计
0001 1 2 3 6

…………………… 数量合计6
日期据有不确定性,请在补充一下好吗

create proc usp_name
@b_date datetime,@e_date datetime
as
declare @sql varchar(max),@day int ,@i int
select @day=1+datediff(day,@b_date,@e_date)
set @sql='select 客户编号 ,'
set @i=0
while @i<@day
begin
set @sql=@sql+' max(case when 日期='''+convert(varchar(8),dateadd(day,@i,@b_date),112)+''' then 数量 else 0 end) as ['+convert(varchar(8),dateadd(day,@i,@b_date),112)+'] , '
set @i=@i+1
end
set @sql=@sql+' sum(数量) as 数量合计 from 表名 where 日期>='''+convert(varchar(8), @b_date,112) + ''' and 日期< ''' +convert(varchar(8),dateadd(day,1,@e_date),112)+''' group by 客户编号 '
exec(@sql)

oracle数据库的写法
http://zhidao.baidu.com/question/88106723.html?si=3