我正在使用SQL Server,并且没有对数据库的写访问权限。我只能提取。
我正在加入nph2表以查看是否有记录。如果没有记录,我只需要该字段为空白。为了说明我想要做的事情,其中一个字段是“状态”,这很好用:
case when lsf2.STARTDATE > lsf.STARTDATE and lsf2.STARTDATE is not NULL then
lsf2.LEGALSTATUS else '' end as 'Status'
另一个字段是日期字段,我不能做任何类似的工作。如:
case when lsf2.STARTDATE > lsf.STARTDATE and lsf2.STARTDATE is not NULL then
nph2.STARTDATE else '' end as 'StartDate'
我一直收到'1900-01-01 00:00:00'或错误。
我理解为什么我会这样做。我已经尝试了几种方法来转换等,但没有任何作用。
基本上如果我的日期不符合,因为没有符合它的记录,我仍然需要一行包含其他数据,但是需要日期字段来填充任何内容。任何想法都会很棒。
答案 0 :(得分:1)
您需要在结果中选择NULL
或将整个表达式转换为varchar类型。您将无法将空字符串放入日期列。
coalesce(cast(case when lsf2.STARTDATE > lsf.STARTDATE then nph2.STARTDATE else NULL end as varchar(20)),'') as 'StartDate'