怎么写呢?
我需要检查几个字段的各种条件,以确定是否标记记录Y或N以保留它。 (我试图从不符合某些标准的报告中排除某些记录。)
在此示例中,我将表别名为ES,CQI,NA和CC。所以我需要像
这样的东西CASE
WHEN SD.CType = N'ALT' AND ES.SERVICE = N'Alerts' THEN 'N'
WHEN SD.CType = N'ALT' AND ES.SERVICE <> N'Alerts' THEN 'Y'
WHEN SD.CType <> N'ALT' AND ES.SERVICE <> N'Alerts' THEN 'Y'
WHEN SD.CType = 'BPY' AND CQI.PTYPE = 'BP' THEN 'Y'
WHEN SD.CType <> 'BPY' AND CQI.PTYPE = 'BP' THEN 'N'
WHEN SD.CType <> 'BPY' AND NA.BILL = 'Y' THEN 'Y'
WHEN SD.CType = 'BPY' AND NA.BILL = 'Y' THEN 'N'
WHEN SD.CType = 'LEN' AND CC.PTYPE <> 'CC' THEN 'Y'
WHEN SD.CType = 'LEN' AND CC.PTYPE = 'CC' THEN 'N'
ELSE 'Y'
END
AS Keep
基本上这些都包含SD.CType值,然后它们与3个其他字段中的值组合。我可以在VB中编写一个SELECT CASE语句来执行此操作,但我需要在SQL中运行它。
我感谢任何建议......谢谢!
答案 0 :(得分:3)
运行此错误时是否收到错误消息?如果是,我们需要查看错误和您的查询。此外,由于您已经定义了“Else'Y'”,因此您无需在case语句中添加任何逻辑来标识“Y”。
示例:
CASE
WHEN SD.CType = N'ALT' AND ES.SERVICE = N'Alerts' THEN 'N'
WHEN SD.CType <> 'BPY' AND CQI.PTYPE = 'BP' THEN 'N'
WHEN SD.CType = 'BPY' AND NA.BILL = 'Y' THEN 'N'
WHEN SD.CType = 'LEN' AND CC.PTYPE = 'CC' THEN 'N'
ELSE 'Y'
END
AS Keep