我在数据库中查询到的数据是这样的形式:
订单 存货名称 工序名 数量
0001 aaaa a 1000
0001 aaaa b 2000
0001 aaaa c 3000怎样用SQL语句将其改成这样的形式:订单 存货名称 a b c
0001 aaaa 1000 2000 3000sql数据库
订单 存货名称 工序名 数量
0001 aaaa a 1000
0001 aaaa b 2000
0001 aaaa c 3000怎样用SQL语句将其改成这样的形式:订单 存货名称 a b c
0001 aaaa 1000 2000 3000sql数据库
declare @sql nvarchar(max)
select @sql=isnull(@sql+',max(case [工序名] when ''','max(case [工序名] when ''')+工序名+''' then '+cast(数量 as varchar)+' else 0 end) as ['+工序名+']' from tb
set @sql='select 订单,存货名称,'+@sql+' from tb group by 订单,存货名称'
select @sql
exec(@sql)
use tempdb
go
if OBJECT_ID('Tempdb..#1') is not null
drop table #1
Create table #1(订单 varchar(10), 存货名称 varchar(10), 工序名 varchar(10), 数量 int)
insert into #1
select '0001', 'aaaa', 'a', 1000 union all
select '0001', 'aaaa', 'b', 2000 union all
select '0001', 'aaaa', 'c', 3000
godeclare @sql nvarchar(2000)
set @sql='select 订单,存货名称'
select @sql=@sql+','+QUOTENAME(工序名)+'=max(case when [工序名]='+QUOTENAME(工序名,'''')+' then 数量 else 0 end)'
from #1 group by 工序名
exec(@sql+' from #1 group by 订单,存货名称')
/*
订单 存货名称 a b c
0001 aaaa 1000 2000 3000
*/
http://bbs.csdn.net/topics/240002706