我有一张有8条记录的表。
我在17年12月有4条记录,在1月18日中有4条记录(仅更改yearmon)
我也希望在2月18日这一个月也有相同的记录。所有列的值都应该相同,只有yearmon必须更改为Feb-18。
如果我的记录少于5条,我可以写一条插入语句。还有其他方法可以编写查询以获取所需的输出吗?
income score_1 score_2 rank yearmon
800 77 90 10 Dec-17
900 72 44 99 Dec-17
700 62 44 06 Dec-17
600 55 23 06 Dec-17
800 77 90 10 Jan-18
900 72 44 99 Jan-18
700 62 44 06 Jan-18
600 55 23 06 Jan-18
输出类似于
income score_1 score_2 rank yearmon
800 77 90 10 Dec-17
900 72 44 99 Dec-17
700 62 44 06 Dec-17
600 55 23 06 Dec-17
800 77 90 10 Jan-18
900 72 44 99 Jan-18
700 62 44 06 Jan-18
600 55 23 06 Jan-18
800 77 90 10 Feb-18
900 72 44 99 Feb-18
700 62 44 06 Feb-18
600 55 23 06 Feb-18
答案 0 :(得分:3)
这回答了原始问题。
最简单的方法是union all
:
select income, score_1, score_2, rank, yearmon
from t
union all
select income, score_1, score_2, rank, 'Feb-2018'
from t;
如果要更改表,请insert
:
insert into t (income, score_1, score_2, rank, yearmon)
select income, score_1, score_2, rank, 'Feb-2018'
from t;
答案 1 :(得分:1)
首先插入收入,得分_1,得分_2,RANK组合的所有唯一值。 然后将yearmon更新为2月18日
INSERT INTO T
SELECT DISTINCT income, score_1, score_2, RANK
FROM T;
UPDATE T
SET yearmon = 'Feb-18'
WHERE yearmon IS NULL;