首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套情况时,语句在计算中的时间或其他子句

嵌套情况时,语句在计算中的时间或其他子句
EN

Stack Overflow用户
提问于 2017-04-17 22:37:21
回答 1查看 2.6K关注 0票数 0

我正在将当前的Microsoft Access进程转移到SQL SERVER 2016,并且重写Access SQL查询时遇到了问题。当前访问查询在set函数中有以下代码

代码语言:javascript
复制
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访问函数在很大程度上与statement语句的工作方式相同,但我的问题是,当在SQL SERVER?中的计算中的语句中有一个语句时,处理嵌套大小写的最佳方法是什么?

下面是我试图将New_AVM_Index列添加到表中但没有成功的尝试:

代码语言:javascript
复制
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

当问题出现时,我已经检查了另一个嵌套案例,但是,我还没有看到一个嵌套案例的例子,即在计算中的语句。

如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-17 22:50:06

CASE中使用CASE

代码语言:javascript
复制
SELECT CASE WHEN a.[AVM_Index] > 0 
        THEN a.[AVM_Index] * (CASE WHEN a.[Stratified_Median_AVM] > 0
                                THEN (CASE 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43460753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档