请假设我在MS Sqlserver中构建了一个查询,它具有以下结构:
WITH issues_a AS
(
SELECT a_prop
FROM ds_X x
)
, issues_b AS
(
SELECT key
, z.is_flagged as is_flagged
, some_prop
FROM ds_Z z
JOIN issues_a i_a
ON z.a_diff = i_a.a_prop
)
-- {{ run }}
UPDATE samples
SET error =
CASE
WHEN i_b.some_prop IS NULL THEN '#1 ...'
WHEN UPPER(i_b.is_flagged) != 'Y' THEN '#2 ...'
END
FROM samples s
left join issues_b i_b ON s.key = i_b.key;
现在我希望通过将查询的部分内容放在BEGIN TRANSACTION
和COMMIT
中来增强整个事项,以连续的方式更新另一个表,但是不要理解它的方式。尝试用事务括号括起整个表达式,但这并没有让我更进一步。
有没有其他方法可以实现上述任务 - 即使没有以事务方式连接连续更新,但它会更好吗?
再次缩写任务:WITH <...>(...), <...>(...) UPDATE <... Using data from latter WITH> UPDATE <... using data from latter WITH>
?
希望你不介意我的语法不好......