如何将if语句与select语句(包括其他if语句)嵌套在一起?

时间:2019-01-17 15:07:16

标签: sql-server tsql

我对SQL还是很陌生,不知道如何组合几个if .. then语句。

正确的语法是什么?

我正在使用SQL Server Management Studio 2017。 我试图结合if... else if..statements并尝试使用case语句,但是我总是迷失在语句的嵌套中。

在执行某种计算之前,我必须满足一些条件。

应该是这样的:

If CalculationMethod = x 

and if (Price * coefficient) < Amount

then CalculatedAmount = Amount

else CalculatedAmount = (Price * coefficient)

Amount拥有if语句的地方:

Amount =

If Category = a and DistanceFrom <= Distance >= DistanceUntill then take amount from that particular cell

If Category = b and DistanceFrom <= Distance >= DistanceUntill then take amount from that particular cell

If Category = c and DistanceFrom <= Distance >= DistanceUntill then take amount from that particular cell

在这种情况下,Amount是表中具有列DistanceFromDistanceUntillabc的单元格。

CalculationMethodCoefficient是另一个表中的列。 Price是第三张表中的一列。

最后,我希望基于CalculatedAmountAmountPrice的{​​{1}}。

这有意义吗?有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您有IF ... THEN ... ELSE类型的方案,我认为正确的方向是使用CASE语句,例如:

SELECT CASE WHEN CalculationMethod = x AND ((Price * coefficient) < Amount) THEN Amount
        ELSE (Price * coefficient) END CalculatedAmount

您可以在这里阅读有关内容:https://ionicframework.com/docs/native/camera/#CameraOptions

在只有一个决策分支的情况下,IIF子句效果很好,但是如果您要从CASE语句中选择多个内容,则该方法是可行的。

答案 1 :(得分:0)

 SELECT IIF(CalculationMethod = x and Price * coefficient < Amount, Amount, Price * coefficient) as CalculatedAmount 
      FROM aTable