首页上一页 1 下一页尾页 1 条记录 1/1页
行专列(不定列)及分组
发表在Oracle视频答疑
2009-05-03
是否精华
是
否
版块置顶:
是
否
有A表结构是这样:p_id为商品ID
p_id pname ... quantity sname
1 杯子 10 仓库1
2 鞋子 5 仓库1
1 杯子 3 仓库1
1 杯子 15 仓库2
2 鞋子 20 仓库2
1 鞋子 8 仓库2
希望转换为B表:
p_id pname ... 仓库1 仓库2
1 杯子 13 15
2 鞋子 5 28
我用下面这语句查询出来却没有分组
declare @sql varchar(8000)
set @sql='Select p_id,pname,standard,medname,makearea,unitname1'
Select @sql=@sql+',sum(case when sname='''+sname+ ''' then quantity else 0 end) As '''+sname+''''
From vw_x_storehouse Group By sname
set @sql=@sql+'From vw_x_storehouse Group By p_id,sname,vw_x_storehouse.PName,Standard,MedName,MakeArea,UnitName1
order by p_id'
Print @sql
EXEC (@SQL)
p_id pname ... 仓库1 仓库2
1 杯子 10 0
1 杯子 0 15
1 杯子 3 0
2 鞋子 5 0
2 鞋子 0 20
2 鞋子 0 8
请问这个语句怎么才能实现B表的结果?
p_id pname ... quantity sname
1 杯子 10 仓库1
2 鞋子 5 仓库1
1 杯子 3 仓库1
1 杯子 15 仓库2
2 鞋子 20 仓库2
1 鞋子 8 仓库2
希望转换为B表:
p_id pname ... 仓库1 仓库2
1 杯子 13 15
2 鞋子 5 28
我用下面这语句查询出来却没有分组
declare @sql varchar(8000)
set @sql='Select p_id,pname,standard,medname,makearea,unitname1'
Select @sql=@sql+',sum(case when sname='''+sname+ ''' then quantity else 0 end) As '''+sname+''''
From vw_x_storehouse Group By sname
set @sql=@sql+'From vw_x_storehouse Group By p_id,sname,vw_x_storehouse.PName,Standard,MedName,MakeArea,UnitName1
order by p_id'
Print @sql
EXEC (@SQL)
p_id pname ... 仓库1 仓库2
1 杯子 10 0
1 杯子 0 15
1 杯子 3 0
2 鞋子 5 0
2 鞋子 0 20
2 鞋子 0 8
请问这个语句怎么才能实现B表的结果?