這是一個簡單的查詢,與CTE一起使用,但不像我想要的那樣工作。CTE更新
這個想法是過濾這些記錄precio_90 = null,然後更新字段precio_90與mytable2的價格,其中codigo = codigo在特定日期。 目前我得到的所有記錄沒有實際的過濾器更新。
DECLARE @mytable1 TABLE
(
codigo VARCHAR(10) NOT NULL,
precio_90 NUMERIC(10, 4)
);
DECLARE @mytable2 TABLE
(codigo VARCHAR(10) NOT NULL,
fecha date NOT NULL,
precio NUMERIC(10, 4) NOT NULL
);
INSERT INTO @mytable1(codigo, precio_90)
VALUES ('stock1', 51),
('stock1', 3),
('stock1',5),
('stock1',6),
('stock1',2),
('stock1',7),
('stock1',null)
INSERT INTO @mytable2(codigo, fecha, precio)
VALUES ('stock1', '20140710', 26),
('stock2', '20140711', 66),
('stock1', '20140712', 23),
('stock2', '20140710', 35);
;WITH CTE_1
as
(SELECT codigo, precio_90
FROM @mytable1
where precio_90 is null)
UPDATE t1
SET t1.precio_90= t2.[precio]
from @mytable1 as t1
INNER JOIN @mytable2 as t2
ON t1.codigo = t2.[codigo] and '2014-07-10'=t2.fecha
嘗試在更新中使用CTE而不是表格。 – 2014-11-04 18:07:32
http://sqlfiddle.com/#!6/d41d8/22705 – 2014-11-04 18:15:22