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