将SQL结果写回表列

时间:2016-01-14 14:04:43

标签: sql ms-access sql-update sql-insert

我有以下查询:

-- 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;

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

WRITE clock_pos_calc TO clock_pos
WRITE clock_pos_value TO structural_grade if NULL

但不确定如何。我已经尝试过UPDATE和INSERTS但却无法让它发挥得很好。

2 个答案:

答案 0 :(得分:1)

查询更新声明

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;

答案 1 :(得分:0)

您可以将<{3}}构造用于此目的,例如

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;