当前位置: 代码迷 >> Sql Server >> 需求帮助解决的是两个表联合查询后,如何进行列转行有关问题
  详细解决方案

需求帮助解决的是两个表联合查询后,如何进行列转行有关问题

热度:31   发布时间:2016-04-27 11:26:56.0
需求帮助解决的是两个表联合查询后,怎么进行列转行问题
记录表(记录表)结构如下
编号 客户名称 电话 设计费列名 安装费列名 优惠列名
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 行受影响)
  相关解决方案