SQL查询根据内容复制列

时间:2016-04-29 22:13:17

标签: sql

目前我有一个如下所示的SQL查询:

INSERT INTO my_table
(Date, Name, Age, City)
SELECT
DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City
FROM my_table

这让我可以通过推广"日期"结束新的一周。列,同时复制一致的列(我有其他数字列,不能复制)。但是我还有一个名为" Status"我只想在状态是" Hold"或"待定"。如果状态是其中任何一个,我希望它继续作为"需要检查"。

我知道我的SQL代码中需要某种类型的if函数,但我不确定如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

您可以CASE执行此操作,如果Status不匹配,则可以添加为空字符串。

INSERT INTO my_table (Date, Name, Age, City, Status)
SELECT DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City, 
       CASE WHEN Status IN ('Hold', 'Pending') THEN 'Needs Examining'
       ELSE '' END AS Status
FROM my_table

或者,如果您只想为Hold,Pending状态INSERT,则需要在WHERE子句和SELECT中添加条件,您可以放置​​所需的内容:

INSERT INTO my_table (Date, Name, Age, City, Status)
SELECT DATE_ADD (Date, INTERVAL 7 DAY), Name, Age, City, 'Needs Examining' AS Status
FROM my_table
WHERE Status IN ('Hold', 'Pending')