我需要在单个字符串中缺少必需值的所有列名,在下面显示的select语句中。
我尝试过使用CASE语句,但它没有工作,因为如果第一个匹配,它会省略第二个条件。
SELECT
stg2.StageID
,[CSP]
,[CSPRegionID]
,[SoldToCompanyID]
,[EndUserCompanyID]
,[SupportOptionID]
,'One/More Mandatory value/s is/are missing' FailureReason
,CASE WHEN stg2.CSP IS NULL THEN @FailureDetails + 'CSP'
WHEN stg2.CSPRegionID IS NULL THEN @FailureDetails + 'CSP Region'
WHEN stg2.SoldToCompanyID IS NULL THEN @FailureDetails + 'SoldToCompany'
WHEN stg2.EndUserCompanyID IS NULL THEN @FailureDetails + 'EndUserCompany'
WHEN stg2.SupportOptionID IS NULL THEN @FailureDetails + 'SupportOption'
END FailureDetails
FROM [EntitlementTracker_SRV4Stage].[dbo].[srv4_ClassicLoad_Stage2] stg2
WHERE stg2.CSP IS NULL
OR stg2.CSPRegionID IS NULL
OR stg2.SoldToCompanyID IS NULL
OR stg2.EndUserCompanyID IS NULL
OR stg2.SupportOptionID IS NULL
任何人请帮忙。提前谢谢。
答案 0 :(得分:5)
你是对的,CASE
只会评估匹配的第一个案例。我建议像:
, CASE WHEN stg2.CSP IS NULL THEN 'CSP, ' ELSE '' END
+ CASE WHEN stg2.CSPRegionID IS NULL THEN 'CSP Region, ' ELSE '' END
+ CASE WHEN stg2.SoldToCompanyID IS NULL THEN 'SoldToCompany, ' ELSE '' END
+ CASE WHEN stg2.EndUserCompanyID IS NULL THEN 'EndUserCompany, ' ELSE '' END
+ CASE WHEN stg2.SupportOptionID IS NULL THEN 'SupportOption, ' ELSE '' END
FailureDetails