尝试将不可为空的列的值设置为NULL

时间:2019-02-24 08:49:54

标签: sql sql-server

我正在尝试将不可为空的列的值设置为NULL

  

我使用FOR XML PATH('')时出错

代码:

select  
    fdp.POLICYNUMBER,
    fdp.INSUREDNAME,
    fdp.OWNERNAME,
    fdp.AGENCYCODE, 
    p.WFWORKSTEPNAME,
    fdpc.NIGO,
    fdpc.NIGOREASON,
    d.NIGOREQUIREMENT,
    wci.WCSTATUS,
    wci.DATECOMPLETED,
    fdCI.NEWUNDERWRITINGUSER,
    fdr.NBAMOUNT 
into
    #t
from
    PINewBusiness p 
join
   FDPolicyDetails fdp on SUBSTRING(p.CFREPKEY, 9, LEN(p.CFREPKEY)) = fdp.PARENT_CASEID 
                       and (p.WFWORKSTEPNAME = 'PendingRequirements' or 
                            p.WFWORKSTEPNAME = 'FollowUpRequirements' )
join
    FDProcessing fdpc on SUBSTRING(p.CFREPKEY, 9, LEN(p.CFREPKEY)) = fdpc.PARENT_CASEID
join
    FDRounting fdr on SUBSTRING(p.CFREPKEY, 9, LEN(p.CFREPKEY)) = fdr.PARENT_CASEID
cross apply
    (select NIGOREQUIREMENT + ', ' 
     from FDNIGORequirements nr 
     where nr.PARENT_CASEID = fdpc.PARENT_CASEID 
     for xml path('')) D (NIGOREQUIREMENT)
--join FDNIGORequirements nr on SUBSTRING(p.CFREPKEY, 9, LEN(p.CFREPKEY)) = nr.PARENT_CASEID
cross apply
    (select NIGOREQUIREMENT + ', ' 
     from FDNIGORequirements nr 
     where nr.PARENT_CASEID = SUBSTRING(p.CFREPKEY,9,LEN(p.CFREPKEY)) 
     for xml path('')) D (NIGOREQUIREMENT)
join
    (select max(CREATEDDATETIME) as CREATEDDATETIME, PARENT_CASEID 
     from FDWelcomeCall 
     group by PARENT_CASEID ) wc on fdr.PARENT_CASEID = wc.PARENT_CASEID
join
    FDWelcomeCall wci on wci.PARENT_CASEID = wc.PARENT_CASEID 
                      and wci.CREATEDDATETIME = wc.CREATEDDATETIME
join
    FDCaseInformation fdCI on SUBSTRING(p.CFREPKEY, 9, LEN(p.CFREPKEY)) = fdCI.PARENT_CASEID
where
    p.WFSTEPENTRYTIME >= @sdate 
    and p.WFSTEPENTRYTIME <= @edate
order by 
    p.WFFLOWENTRYTIME desc

1 个答案:

答案 0 :(得分:0)

如果要将行保留为NULL值,则必须替换出现错误的列中的null,为此,可以使用:

SELECT COALESCE([MyColumn],__ReplacementValue__) AS [MyColumn] FROM MyTable

SELECT ISNULL([MyColumn],__ReplacementValue__) AS [MyColumn] FROM MyTable

您可以在内部或外部SELECT中使用其中之一。

否则,如果该值不为空,则该行不应该存在,则必须通过添加WHERE子句将其过滤掉:

WHERE [MyColumn] IS NOT NULL