+ -
当前位置:首页 → 问答吧 → SQL语句组合,怎样能将下面3个语句 组合成一个SQL语句

SQL语句组合,怎样能将下面3个语句 组合成一个SQL语句

时间:2011-11-17

来源:互联网

1.(select a.cBusType as 类别,a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 from RdRecord a left join RdRecords b on a.id=b.id where a.dDate>='2011-10-01' and a.cBusType ='调拨出库')ck

2.(select a.cBusType as 类别,a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 from RdRecord a left join RdRecords b on a.id=b.id where a.dDate>='2011-10-01' and a.cBusType ='调拨入库')rk

3.update RdRecords set rk.单价=ck.单价 where rk.业务号=ck.业务号 and rk.产品编码=ck.产品编码

作者: ghlk880826   发布时间: 2011-11-17

晕 直接写一个事务里面吧


UPDATE的和SELECT怎么合并哦?

作者: fredrickhu   发布时间: 2011-11-17

SQL code
UPDATE b
SET iUnitCost=c.单价
from RdRecord a 
inner join RdRecords b on a.id=b.id 
INNER JOIN 
    (select a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 
    from RdRecord a left join RdRecords b on a.id=b.id 
    where a.dDate>='2011-10-01' and a.cBusType ='调拨出库') AS c 
ON c.业务号=a.cBusCode AND c.产品编码=b.cInvCode
where a.dDate>='2011-10-01' and a.cBusType ='调拨入库'

作者: roy_88   发布时间: 2011-11-17

呵呵 谢谢 2楼的亲,也谢谢1楼得

作者: ghlk880826   发布时间: 2011-11-17

其实你自己已经写出来了,把2个结果集都当成表就是了。。。
SQL code

update rk set rk.单价=ck.单价 
from (select a.cBusType as 类别,a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 from RdRecord a left join RdRecords b on a.id=b.id where a.dDate>='2011-10-01' and a.cBusType ='调拨出库')ck
join (select a.cBusType as 类别,a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 from RdRecord a left join RdRecords b on a.id=b.id where a.dDate>='2011-10-01' and a.cBusType ='调拨入库')rk
on (rk.业务号=ck.业务号 and rk.产品编码=ck.产品编码)


引用楼主 ghlk880826 的回复:
1.(select a.cBusType as 类别,a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 from RdRecord a left join RdRecords b on a.id=b.id where a.dDate>='2011-10-01' and a.cBusType ='调拨出库')ck

2.(select ……

作者: geniuswjt   发布时间: 2011-11-17

貌似错了,再多一层连接就是了,把RdRecords和rk再连接一次
看大版的吧
引用 4 楼 geniuswjt 的回复:
其实你自己已经写出来了,把2个结果集都当成表就是了。。。

SQL code

update rk set rk.单价=ck.单价
from (select a.cBusType as 类别,a.cBusCode as 业务号,b.cInvCode as 产品编码,b.iUnitCost as 单价 from RdRecord a left join RdRecords b on a.……

作者: geniuswjt   发布时间: 2011-11-17

update RdRecords c set iUnitCost =
(select iUniCost fromRdRecords a from RdRecord a left join RdRecords b on a.id=b.id where a.dDate>='2011-10-01' and a.cBusType ='调拨出库' and a.cBusCode =c.cBusCode and b.cInvCode=c.cInvCode)
where c.id in (select d.id from RdRecord d where d.id=c.id and d.dDate>='2011-10-01' and d.cBusType ='调拨入库')

这个应该能实现,不过效率很低

作者: nineritian   发布时间: 2011-11-17