在视图中组合案例陈述

时间:2015-02-05 21:26:28

标签: sql

我有这两个案例陈述,并且在我的生活中无法弄清楚如何将它们组合在MSSQL视图中显示。任何帮助都会很棒。

CASE WHEN [ordertype] = '2' THEN [CommissionAmt1] * - 1 ELSE [CommissionAmt1] END

CASE WHEN (is_member('Buyer') = 1 OR is_member('CustomerService') = 1) THEN 0 ELSE CommissionAmt1 END

1 个答案:

答案 0 :(得分:2)

只需将第一个案例添加到第二个陈述中引用CommissionAmt1的任何地方。

CASE WHEN (is_member('Buyer') = 1 OR is_member('CustomerService') = 1) THEN 
    0 
ELSE 
    CASE WHEN [ordertype] = '2' THEN 
      [CommissionAmt1] * - 1 
    ELSE 
      [CommissionAmt1] 
    END
 END

或者走另一条路。很难理解需要执行哪种计算方式。唯一的提示是[]

CASE WHEN [ordertype] = '2' THEN 
    (
        CASE WHEN (is_member('Buyer') = 1 OR is_member('CustomerService') = 1) THEN 
            0 
        ELSE 
            CommissionAmt1 
        END
    ) * - 1
ELSE
    CASE WHEN (is_member('Buyer') = 1 OR is_member('CustomerService') = 1) THEN 
        0 
    ELSE 
        CommissionAmt1
    END
END 

无论哪种方式,您都可以通过子查询相关值来保存一些计算。

SELECT
    *,
    ValueWithDependant=CASE WHEN (Dependant>0) THEN (SomeValue / Dependant) ELSE NULL END
FROM
(
    SELECT
       X,Y,Z,   
       Dependant=CASE WHEN SomeValue=1 THEN 1 ELSE 0 END
    FROM
       SomeTable
)AS DETAIL