记录表(记录表)结构如下
编号 客户名称 电话 设计费列名 安装费列名 优惠列名
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
------解决方案--------------------
- SQL code
--a. 记录表,b.明细表create table #t(编号 int,客户名称 varchar(20),电话 varchar(20),产品型号 varchar(20),价格 int)insert into #t select 编号,客户名称,电话,'设计费',设计费 from a where 设计费<>0 union allselect 编号,客户名称,电话,'安装费',安装费 from a where 安装费<>0union allselect 编号,客户名称,电话,'优惠', 0-优惠 from a where 优惠<>0select * from #t union all select a.编号,客户名称,电话,产品型号,价格 from a,b where a.编号=b.编号drop table #t----------------------------------------编号 客户名称 电话 产品型号 价格----------- -------------------- -------------------- -------------------- ---------------------23 客户3 135677666 设计费 3000.0025 客户4 1844554645 设计费 3800.0020 客户1 15938393 安装费 200.0025 客户4 1844554645 安装费 2400.0023 客户3 135677666 优惠 -1000.0020 客户1 15938393 C9080W 270.0020 客户1 15938393 9080W 660.0022 客户2 138055555 A8091W 30.0023 客户3 135677666 C7000W 80.0025 客户4 1844554645 C3102W 12.00(10 行受影响)