【发布时间】:2017-04-18 06:50:06
【问题描述】:
我正在将当前的 Microsoft Access 进程转移到 SQL SERVER 2016,但我在重写其中一个 Access SQL 查询时遇到了问题。当前的 Access 查询在 set 函数中有如下代码
b.New_AVM_Index = IIf(a.[AVM_Index]>0
,a.[AVM_Index]*(IIf(a.[Stratified_Median_AVM]>0
,IIf(b.[Stratified_Median_AVM]>0
,b.[Stratified_Median_AVM]/a.[Stratified_Median_AVM]
,1),1)),10000)
IIf Access 函数的工作原理与 SQL CASE WHEN 语句大致相同,但我的问题是在 SQL SERVER 中的 THEN 子句或 ELSE 子句下的计算中的语句时处理嵌套 case 的最佳方法是什么?
下面是我尝试将 New_AVM_Index 列添加到表中但没有成功:
CASE WHEN (a.[AVM_Index]>0
THEN a.[AVM_Index]* (WHEN(a.[Stratified_Median_AVM]>0
THEN WHEN (b.[Stratified_Median_AVM]>0
THEN b.[Stratified_Median_AVM]/a.[Stratified_Median_AVM]
ELSE 1 END) ELSE 1 END)) ELSE 10000)
END AS New_AVM_Index
我已经查看了另一个嵌套 case when 提问,但是我没有看到计算中的嵌套 case when 语句的示例。
任何提示将不胜感激
【问题讨论】:
标签: sql-server ms-access nested case