如下表:
产品内码 备注 长 宽 高 单价 数量 金额
1 上压 10 10 10 10 10 100
1 下压 11 11 11 11 11 121
1 上压 12 13 14 10 10 100
2 上压 10 10 10 10 10 100
2 下压 11 11 11 11 11 121
2 中压 12 13 14 10 10 100
2 侧压 12 13 14 10 10 100
我现在要根据产品内码把列转为行,请高见谢谢!!!
产品内码 规格 单价 数量 金额
1 上压 10X10X10 下压 11x11x11 上压 12X13X14 10.33 31 321
2 上压 10X10X10 下压 11x11x11 上压 12X13X14 10.25 41 421
侧压 12x13x14
也就是上面的规格由各列的 备注 长宽高 组成
谢谢
还是先写个函数将同一产品的所有规格取出来,
再用一个查询去调用吧
create function f_str(@ID int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=
select @str=@str+space()
+[备注]+sapce()
+[长]+X+[宽]+X+[高]
from 表
where [产品内码]=@ID
return ltrim(@str)
end
go
--查询
select 产品内码
,dbo.f_str(产品内码) as 规格
,avg(单价) as 单价
,sum(数量) as 数量
,sum(金额) as 金额
from 表
group by 产品内码
或者是用一个函数处理
Create function F_TGetStr(@Item as varchar(10))
returns varchar(200)
as
begin
declare @s as varchar(200)
set @s=
begin
select @s=@s+,+ltrim(rtrim(备注)) from
(select distinct 备注 from Tabelname where 产品内码=@item)
A
end
return stuff(@s,1,1,)
end
--备注代表的组合
然后 select 产品内码
,dbo.f_str(产品内码) as 规格
,avg(单价) as 单价
,sum(数量) as 数量
,sum(金额) as 金额
from 表
group by 产品内码