我有一个数据集,我想创建一个列date2,用非1900-01-01值替换每个ID的date1值。我知道这可以通过多个查询完成,但我想在我生成前3列的同一查询中完成。这可行吗?
ID Col2 Date1 Date2
A 123 2015-01-10 2015-01-10
A 223 1900-01-01 2015-01-10
A 387 1900-01-01 2015-01-10
B 257 2016-03-04 2016-03-04
B 682 1900-01-01 2016-03-04
B 916 1900-01-01 2016-03-04
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以尝试以下查询:
SELECT
T1.*,
CASE
WHEN T1.date1 = '1900-01-01'
THEN T2.date1
ELSE T1.date1
END AS date2
FROM
tbl T1
LEFT JOIN
(
SELECT
MAX(date1) date1, id
FROM tbl
GROUP BY id
)T2
ON T1.ID=T2.ID
请注意,T2中的内部查询仅评估一次。