记录表(记录表)结构如下
编号 客户名称 电话 设计费列名 安装费列名 优惠列名
20 客户1 15938393 0 200 0
22 客户2 138055555 0 0 0
23 客户3 135677666 3000 0 1000
25 客户4 1844554645 3800 2400 0
订购明细表
编号 产品型号 数量 价格
20 C9080W 5 270.00
20 9080W 6 660.00
22 A8091W 3 30
23 C7000W 3 80.00
25 C3102W 8 12.00
需求帮助解决的是两个表联合查询后,怎么进行列转行问题同时注意优惠,结果如下
编号 客户名称 电话 产品型号 数量 价格
20 客户1 15938393 C9080W 5 270.00
20 客户1 15938393 9080W 6 660.00
20 客户1 15938393 安装费 1 200
22 客户2 138055555 A8091W 3 30
23 客户3 135677666 C7000W 3 80.00
23 客户3 135677666 设计费 1 3000
23 客户3 135677666 优惠 1 -1000
25 客户4 18445546 C3102W 8 12.00
25 客户4 18445546 设计费 1 3800
25 客户4 18445546 安装费 1 2400
--a. 记录表,b.明细表
create table #t(编号 int,客户名称 varchar(20),电话 varchar(20),产品型号 varchar(20),价格 int)
insert into #t
select 编号,客户名称,电话,'设计费',设计费 from a where 设计费<>0 union all
select 编号,客户名称,电话,'安装费',安装费 from a where 安装费<>0union all
select 编号,客户名称,电话,'优惠', 0-优惠 from a where 优惠<>0
select * from #t union all
select a.编号,客户名称,电话,产品型号,价格 from a,b where a.编号=b.编号
drop table #t
----------------------------------------------------------------------------
编号 客户名称 电话 产品型号 价格
----------- -------------------- -------------------- -------------------- ---------------------
23 客户3 135677666 设计费 3000.00
25 客户4 1844554645 设计费 3800.00
20 客户1 15938393 安装费 200.00
25 客户4 1844554645 安装费 2400.00
23 客户3 135677666 优惠 -1000.00
20 客户1 15938393 C9080W 270.00
20 客户1 15938393 9080W 660.00
22 客户2 138055555 A8091W 30.00
23 客户3 135677666 C7000W 80.00
25 客户4 1844554645 C3102W 12.00
(10 行受影响)