类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
根据如下sql生成的的表
create table product
(productID varchar(10),
suttle numeric(10,2),
gross numeric(10,2)
)
insert product values(product1,12,8)
insert product values(product1,14,7)
insert product values(product1,13,9)
insert product values(product2,12,4)
insert product values(product2,13,10)
insert product values(product2,12,8)
insert product values(product3,12,8)
insert product values(product3,12,8)
insert product values(product3,12,8)
insert product values(product3,12,8)
select * from product
希望得到
productID suttle gross suttle gross suttle gross suttle gross
product1 12 8 14 7 13 9 null null
product2 12 4 13 10 12 8 null null
product3 12 8 12 8 12 8 12 8
网友回答:
这样
select id=identity(int,1,1),* into #t from product
select a.productID,a.suttle,a.gross,b.suttle,b.gross,c.suttle,c.gross
,d.suttle,d.gross
from #t a
left join #t b on a.id=b.id-1 and a.id % 4=1 and b.id % 4=2
left join #t c on a.id=c.id-2 and a.id % 4=1 and c.id % 4=3
left join #t d on a.id=c.id-3 and a.id % 4=1 and d.id % 4=4
up learn
如果product3 再加10個產品﹐那么表的結構會發生很大的變化﹐可以通過別的辦法求出來﹐不用表的形式還好
lsxaa(小李铅笔刀) 的不行啊,是以下結果
product1 12.00 8.00 14.00 7.00 13.00 9.00 NULL NULL
product1 14.00 7.00 NULL NULL NULL NULL NULL NULL
product1 13.00 9.00 NULL NULL NULL NULL NULL NULL
product2 12.00 4.00 NULL NULL NULL NULL NULL NULL
product2 13.00 10.00 12.00 8.00 12.00 8.00 NULL NULL
product2 12.00 8.00 NULL NULL NULL NULL NULL NULL
product3 12.00 8.00 NULL NULL NULL NULL NULL NULL
product3 12.00 8.00 NULL NULL NULL NULL NULL NULL
product3 12.00 8.00 12.00 8.00 NULL NULL NULL NULL
product3 12.00 8.00 NULL NULL NULL NULL NULL NULL
create table product
(productID varchar(10),
suttle numeric(10,2),
gross numeric(10,2)
)
insert product values(product1,12,8)
insert product values(product1,14,7)
insert product values(product1,13,9)
insert product values(product2,12,4)
insert product values(product2,13,10)
insert product values(product2,12,8)
insert product values(product3,12,8)
insert product values(product3,12,8)
insert product values(product3,12,8)
insert product values(product3,12,8)
go
--查询处理
select id=0,* into #t from product order by productID
declare @productID varchar(10),@i varchar(10),@s varchar(8000)
update #t set @i=case productID when @productID then @i+1 else 1 end
,id=@i,@productID=productID
select @i=max(id),@s= from #t
while @i>0
select @s=,[suttle+@i+]=sum(case id when +@i+ then suttle end),[gross
+@i+]=sum(case id when +@i+ then gross end)+@s
,@i=@i-1
exec(select productID+@s+ from #t group by productID)
drop table #t
go
--删除测试
drop table product
/*--结果:
productID suttle1 gross1 suttle2 gross2 suttle3 gross3 suttle4 gross4
---------- --------- --------- --------- --------- --------- --------- --------- ---------
product1 12.00 8.00 14.00 7.00 13.00 9.00 NULL NULL
product2 12.00 4.00 13.00 10.00 12.00 8.00 NULL NULL
product3 12.00 8.00 12.00 8.00 12.00 8.00 12.00 8.00
--*/