51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> sqlserver >> 文章正文

两个表联合查询后,怎么进行列转行问题

更新时间:2012-8-15:  来源:51代码网

记录表(记录表)结构如下
编号 客户名称 电话 设计费列名 安装费列名 优惠列名
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 行受影响)

赞助商链接
推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |