将 SQL 结果写回 Table 列

Write SQL Result back to a Table Column

我有以下查询:

-- Calculate Clock Position & Structural Grade
SELECT IIF(clock_to - clock_at_from < 0,
           12 - (clock_at_from - clock_to),
           clock_to - clock_at_from) AS clock_pos_calc,
       IIF(clock_pos_calc = 1, 3,
       IIF(clock_pos_calc = 2, 4,
       IIF(clock_pos_calc > 3, 5, NULL))) AS clock_pos_value
FROM Conditions;

我想将这些查询的结果添加回条件 table 到以下已经存在的字段。

WRITE clock_pos_calc TO clock_pos
WRITE clock_pos_value TO structural_grade if NULL

但不确定如何。我已经尝试了 UPDATE 和 INSERTS,但无法正常播放。

您可以使用 INSERT INTO .. SELECT FROM 构造来达到此目的,例如

INSERT INTO Conditions (clock_pos, structural_grade)
SELECT IIF(clock_to - clock_at_from < 0,
           12 - (clock_at_from - clock_to),
           clock_to - clock_at_from) AS clock_pos_calc,
       IIF(clock_pos_calc = 1, 3,
       IIF(clock_pos_calc = 2, 4,
       IIF(clock_pos_calc > 3, 5, NULL))) AS clock_pos_value
FROM Conditions
WHERE clock_pos IS NULL
OR structural_grade IS NULL;

查询更新语句

update Conditions 
set clock_pos = IIF(clock_to - clock_at_from < 0,
           12 - (clock_at_from - clock_to),
           clock_to - clock_at_from),
structural_grade = IIF(IIF(clock_to - clock_at_from < 0,
       12 - (clock_at_from - clock_to),
       clock_to - clock_at_from) = 1, 3,
       IIF(IIF(clock_to - clock_at_from < 0,
       12 - (clock_at_from - clock_to),
       clock_to - clock_at_from) = 2, 4,
       IIF(IIF(clock_to - clock_at_from < 0,
       12 - (clock_at_from - clock_to),
       clock_to - clock_at_from) > 3, 5, NULL)))
WHERE clock_pos IS NULL OR structural_grade IS NULL;