将空日期值替换为同一列中的匹配值?

时间:2020-09-15 15:23:03

标签: sql sql-server

我有一个看起来像这样的小查询:

SELECT
CS.ID,
CS.Import_Date,
CS.Secondary_Date
FROM
Center_Summary CS
ORDER BY CS.Import_Date

哪个返回如下值:

img1

我想用01/01/1900的值替换作为05/01/2019拉出的这些“空”值。在这种情况下,是因为IDImport_Date匹配,所以Secondary_Date也应该匹配。我曾经考虑使用REPLACE()REPLACE(CS.Secondary_Date, '01/01/1900', ???),但是我不确定如何编写逻辑以基于Secondary_Date从列ID中提取匹配值和Import_Date-我应该在这里使用什么功能?

当前的状态(我要替换的红色日期):

img1

我的预期结果是:

img2

2 个答案:

答案 0 :(得分:0)

为什么不将UPDATEWHERE一起使用?

UPDATE dbo.YourTable
SET SecondaryDate = ImportDate
WHERE SecondaryDate = '19000101';

答案 1 :(得分:0)

“空”值最好用NULL表示。我建议将它们转换为NULL

nullif(secondary_date, '1900-01-01')

如果您确实想要另一个值,则可以使用coalesce()case表达式:

coalesce(nullif(secondary_date, '1900-01-01'), '2019-05-01')

但是,我通常不喜欢代码中的这种神奇价值。