繁体   English   中英

案例语句错误无法使用语句添加列值

[英]Case statement error not able to add a column value with statement

如果配置文件日期已更改,我想在 output 中触发,所以也想添加旧日期,但它给出了错误

Select Name,
       case when a.PROFILE_START != b.PROFILE_START then 'Trigger: Start Date Changed'+ b.PROFILE_START  
       else '' end
from a 
join b on a.name = b.name

此代码给出错误

数据类型 varchar 和 date 在 add 运算符中不兼容。

Select Name ,
       case when a.PROFILE_START != b.PROFILE_START then 'Trigger: Start Date Changed '+ CAST(b.PROFILE_START  AS VARCHAR(100))
       else '' end
from a 
  join b  on a.name = b.name

最简单的解决方案是使用concat()

Select Name,
       (case when a.PROFILE_START <> b.PROFILE_START
             then concat('Trigger: Start Date Changed ', b.PROFILE_START)
             else ''
        end)
from a join
     b
     on a.name = b.name;

但是,在处理日期时,我认为您应该明确使用CONVERT()FORMAT()的格式。 我会推荐 ISO 标准格式:

Select Name,
       (case when a.PROFILE_START <> b.PROFILE_START
             then concat('Trigger: Start Date Changed ', 
                         convert(varchar(255), b.PROFILE_START, 121)
                        )
             else ''
        end)
from a join
     b
     on a.name = b.name;

如果您喜欢其他格式,可以仔细阅读文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM