如何用SQL结合非空的年、月、日列创建日期列?
解决三列非空时创建Date列的问题
你原来的代码存在两处问题:一是WHERE条件用了OR,这会允许任意一列非空就尝试生成日期,但DATEFROMPARTS()函数要求三个参数必须都不为NULL,否则会直接报错;二是语法上WHERE子句不能放在列定义的位置。
根据你的需求,这里提供两种常用解决方案:
方案1:仅返回三列均非空的行并生成Date列
如果只需要保留三列都有有效值的行,同时生成对应的Date列,可以用以下查询:
SELECT Year, Month, Day, DATEFROMPARTS(Year, Month, Day) AS Date FROM YourTableName WHERE Year IS NOT NULL AND Month IS NOT NULL AND Day IS NOT NULL;
方案2:保留所有行,仅在三列均非空时生成Date值
如果需要保留表中所有行,只在三列都非空的情况下生成Date,其余行的Date列显示NULL,可以用CASE语句实现:
SELECT Year, Month, Day, CASE WHEN Year IS NOT NULL AND Month IS NOT NULL AND Day IS NOT NULL THEN DATEFROMPARTS(Year, Month, Day) ELSE NULL END AS Date FROM YourTableName;
注意替换代码中的YourTableName为你的实际表名。
内容的提问来源于stack exchange,提问作者user12501522
相关产品推荐
相关产品推荐

