首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

指点上写个查询的存储过程,多谢

2013-03-10 
指点下写个查询的存储过程,谢谢。本帖最后由 AOKMOKM 于 2013-02-25 10:38:22 编辑食品表:食品编号,食品名

指点下写个查询的存储过程,谢谢。
本帖最后由 AOKMOKM 于 2013-02-25 10:38:22 编辑 食品表:
食品编号,食品名称
t01        汤圆
t02        粽子
t03        月饼
---------------------
数量表:
客户编号,食品编号,数量
s01               t01         20
s01               t03         15
s02               t01         30
s02               t02         25
s03               t03         35
---------------------
想用存储过程查询出这样的结果:
客户编号,汤圆数量,粽子数量,月饼数量
s01                     20       0           15
s02                     30       25          0
s03                     0         0           35
------------------------
食品种类数量不是固定的三种,可能很多,每种都要在列名显示,并查询数量。
请问,我的存储过程该怎么写。。 存储过程
[解决办法]
行转列应用啊



declare @sql nvarchar(max)
select @sql=isnull(@sql+',','')+ quotename(食品名称)+'数量' from 食品表 group by 食品名称
set @sql='select * from (select a.客户编号,b.食品名称,a.数量 from 数量表 a,食品表 b where a.食品编号=b.食品编号)t
pivot (sum(数量) for 食品名称 in ('+@sql+'))a'
select @sql
exec(@sql)


[解决办法]
declare @sql nvarchar(max)
select @sql=ISNULL(@sql,'')+',sum(case when 食品编号='''+食品编号+''' then 数量 else 0 end)['+食品名称+'数量]' from 食品表
exec('select 客户编号'+@sql+' from 数量表 group by 客户编号')

热点排行