1

我正在尝试用一status列和一DateSent列查询一个表。在我的查询中,我想将这两列合并为一sent列 - 如果状态为c(关闭/发送),则显示DateSent- 但如果不是,则显示适当的状态。

任何不是sent的行都将具有DateSentNULL。

所需的输出如下:

ID     Sent
-----------------
1      Queued
2      Failed
3      2013-02-28
4      Queued

我当前的 SQL Server CE 查询:

select 
    ID, DateAdded, 
    case when DateSent is null then 
      (case when Status='W' then 'Waiting' else 
       case when Status='O' then 'Uploaded' else 
       case when Status='F' then 'Failed' else 
       case when Status='E' then 'Expired' else 
       'Unknown' end end end end) else DateSent 
    end as Sent 
from table

但是第else DateSent7 行的部分抛出了一个错误:

日期格式存在语法错误。[0, 0, 0,表达式:失败,,]

有人可以帮助我解决这个问题吗?

编辑:一个更容易阅读的问题片段是:

select case when DateSent is null
then 'null' else DateSent --<---- problem is here
end as Sent from table
4

1 回答 1

2

试试这个; (您可能需要将 DateSent 转换为 nvarchar)

 select ID, 
        DateAdded, 
        case when DateSent is null
             then (case status when 'W' then 'Waiting'  
                               when 'O' then 'Uploaded'  
                               when 'F' then 'Failed'  
                               when 'E' then 'Expired' 
                                        else 'Unknown' 
                   end)
             else  convert(nvarchar(30), DateSent) 
        end as Sent
from table
于 2013-02-28T16:38:21.697 回答