SELECT e.Code,e.OnlineSeq,(SELECT CASE WHEN a IS NULL THEN '2010-01-18' ELSE a END FROM
(SELECT TOP 1 d.SentOn AS a FROM sn_tx_dat d WHERE d.XType<>'D' AND (d.WorkType IN('R','J','U','Y')) AND d.SpecialWork<>'Y' 
AND d.AccountDate='2010-01-18' AND d.ServiceStatus='O' AND d.Company=e.Company AND d.WaiterCode=e.Code ORDER BY a DESC) t ) AS LastWorkTime,(SELECT CASE WHEN UpdatedOn IS NULL THEN '2010-01-18' ELSE UpdatedOn END FROM 
(SELECT TOP 1 d.UpdatedOn FROM sn_reject d WHERE d.Company=e.Company  
AND d.AccountDate='2010-01-18' AND d.ReplacedBy=e.Code ORDER BY UpdatedOn DESC) x ) AS LastSentTime,(SELECT CASE WHEN c IS NULL THEN '2010-01-18' ELSE c END FROM 
(SELECT TOP 1 d.SentOn AS c FROM sn_tx_dat d WHERE d.XType='D' AND (d.WorkType IN('R','J','U','Y')) AND d.SpecialWork<>'Y' 
AND d.AccountDate='2010-01-18' AND d.Company=e.Company AND d.WaiterCode=e.Code ORDER BY c DESC) w ) AS LastCancelTime FROM employee e
========
上述语句中, LastSentTime 返回的值的确是NULL, 但按理是NULL的应返回'2010-01-18' 才是啊. 
请教高手: 为何得不到想要的 '2010-01-18' ???

解决方案 »

  1.   

    SELECT CASE WHEN c IS NULL THEN '2010-01-18' ELSE c END FROM 
    改为:
    SELECT ISNULL(c,'2010-01-18') AS C FROM 
      

  2.   


    SELECT CASE WHEN isnull(a,'')='' THEN '2010-01-18' ELSE a END 
      

  3.   

    select case isnull(c,'') when '' then '2010-01-18' else c end
      

  4.   

    SELECT CASE WHEN UpdatedOn IS NULL THEN '2010-01-18' ELSE UpdatedOn END 
    --换成
    SELECT ISNULL(UpdatedOn,'2010-01-18') FROM 
    --看看还有问题不?
      

  5.   

    SELECT ISNULL(c,'2010-01-18') AS C FROM >>行不通.
      

  6.   

    楼主确定
    SELECT TOP 1 d.UpdatedOn FROM sn_reject d WHERE d.Company=e.Company  
    AND d.AccountDate='2010-01-18' AND d.ReplacedBy=e.Code ORDER BY UpdatedOn DESC
    有返回值???
      

  7.   


    SELECT CASE WHEN c IS NULL THEN '2010-01-18' ELSE c END FROM 
    这个测试没有问题啊