Sql 合并包含join的update和select语句

Sql 合并包含join的update和select语句,sql,sql-server,Sql,Sql Server,具有以下工作选择语句: SELECT ITEM, LOW, SUM(CASE WHEN ITEM_STATE = 'RT' THEN QUANTO*-1 ELSE ITEMS.QUANTO END) AS QUANTO_TOTAL FROM ITEMS INNER JOIN CMS ON ITEMS.ORDERNO = CMS.ORDERNO INNER JOIN STOCK ON ITEMS.ITEM = STOCK.NUMBER WHERE ODR_DATE BE

具有以下工作选择语句:

SELECT 
  ITEM,
  LOW,
  SUM(CASE WHEN ITEM_STATE = 'RT' THEN QUANTO*-1 ELSE ITEMS.QUANTO END) AS QUANTO_TOTAL 
FROM ITEMS
INNER JOIN CMS 
  ON ITEMS.ORDERNO = CMS.ORDERNO
INNER JOIN STOCK 
  ON ITEMS.ITEM = STOCK.NUMBER
WHERE ODR_DATE BETWEEN '2014-03-28 00:00:00.000' 
AND '2015-03-28 00:00:00.000'
GROUP BY ITEM, LOW
;
如何使用QUANTO_TOTAL更新STOCK.LOW?

使用CTE,然后将其与STOCK一起使用:


您正在使用哪些RDBMS?您必须指定它。
with cte as (
select ITEM,LOW,
       sum( CASE 
              WHEN ITEM_STATE = 'RT' THEN QUANTO*-1 
              ELSE ITEMS.QUANTO
            END) AS QUANTO_TOTAL 
FROM ITEMS 
INNER JOIN CMS ON ITEMS.ORDERNO = CMS.ORDERNO 
INNER JOIN STOCK ON ITEMS.ITEM = STOCK.NUMBER 
where ODR_DATE BETWEEN '2014-03-28 00:00:00.000' AND '2015-03-28 00:00:00.000' 
GROUP BY ITEM,LOW)
update stock
set stock.low = cte.QUANTO_TOTAL 
from cte 
join stock on cte.ITEM = STOCK.NUMBER