Sql server 不同字段的Case语句
这是怎么写的 我需要检查几个字段中的各种条件,以确定是否将记录标记为Y或N以保存它。(我试图从报告中排除某些不符合某些条件的记录。) 在本例中,我将表别名为ES、CQI、NA和CC。所以我需要像这样的东西Sql server 不同字段的Case语句,sql-server,Sql Server,这是怎么写的 我需要检查几个字段中的各种条件,以确定是否将记录标记为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
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=N'ALT'和ES.SERVICE=N'Alerts'时,则为'N'
当SD.CType=N'ALT'和ES.SERVICE N'Alerts'时,则为'Y'
当SD.CType N'ALT'和ES.SERVICE N'Alerts'时,则为'Y'
当SD.CType='BPY'和CQI.PTYPE='BP'时,则为'Y'
当SD.CType'BPY'和CQI.PTYPE='BP'时,则为'N'
当SD.CType'BPY'和NA.BILL='Y'时,则为'Y'
当SD.CType='BPY'和NA.BILL='Y'时,则为'N'
当SD.CType='LEN'和CC.PTYPE'CC'时,则为'Y'
当SD.CType='LEN'和CC.PTYPE='CC'时,则为'N'
还有“Y”
结束
照常
基本上,这些都包括SD.CType值,然后它们与其他3个字段中的值组合在一起。我可以在VB中编写一个SELECT CASE语句来实现这一点,但我需要在SQL中运行它
谢谢你的建议,谢谢 运行此操作时是否出现错误?如果是,我们需要查看错误和您的查询。此外,由于您已经定义了“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
案例
当SD.CType=N'ALT'和ES.SERVICE=N'Alerts'时,则为'N'
当SD.CType'BPY'和CQI.PTYPE='BP'时,则为'N'
当SD.CType='BPY'和NA.BILL='Y'时,则为'N'
当SD.CType='LEN'和CC.PTYPE='CC'时,则为'N'
还有“Y”
结束
照常
您的手机出了什么问题?您可以嵌套您的CASE语句,但这看起来非常简单。谢谢,它似乎有效,但我想知道它是否有明显的低效之处,或者我是否应该尝试一些更容易阅读的其他语法。我只是不相信所有的案例都在这里面。谢谢你的编辑。现在它更有意义了:PMy鼠标比我的手指快:D