这个逻辑怎么写
1.计款方式 <> '收费' --> 金额=0
2.计款方式 = '收费'  --> 金额=公式A
2.1 进出性质.性质名称='样板(收费)A'  --> 金额=公式B
2.2 进出性质.性质名称<>'样板(收费)A' -->2.3\2.4
2.3 dbo.客户.下订单 = '-1' --> 金额=公式C
2.4 正品 + 备品 > PO量 --> 金额=公式D
round(CAST(
      (CASE WHEN 计款方式 = '收费' THEN 
       CASE WHEN dbo.客户.下订单 = '-1' THEN 
       CASE WHEN 正品 + 备品 > PO量 THEN 
       Case when 进出性质.性质名称='样板(收费)A' then
      round(PO量 * CAST(COALESCE (round(dbo.送货单明细.单价,3),0) AS NUMERIC(10, 3)), 3) 
      ELSE 
      round((正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)), 3) 
      END ELSE
      round((dbo.送货单明细.正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)),3) 
      End else
      round(dbo.送货单明细.单价, 3)
      END ELSE 0 END) 
      AS numeric(10, 3)),3) AS 应收金额
这个我写的好像不行

解决方案 »

  1.   

    CASE WHEN   计款方式 = '收费'  THEN 0
    WHEN 计款方式 = '收费' THEN 公式A
    WHEN 进出性质.性质名称='样板(收费)A' THEN 公式B
    WHEN  进出性质.性质名称<>'样板(收费)A'THEN 2.3\2.4
    WHEN  dbo.客户.下订单 = '-1'THEN 公式C
    WHEN  正品 + 备品 > PO量 THEN 公式D
    END 金额
      

  2.   


      round(CAST(
          (case when 计款方式 = '收费' and 进出性质.性质名称='样板(收费)A' THEN
                round(dbo.送货单明细.单价, 3)
           WHEN (计款方式 = '收费') and (dbo.客户.下订单 = '-1') and ( 正品 + 备品 > PO量) and (进出性质.性质名称<>'样板(收费)A')THEN 
                round((正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)), 3) 
           WHEN 计款方式 = '收费'  and (dbo.客户.下订单 <> '-1') and (进出性质.性质名称<>'样板(收费)A') THEN     
                round((dbo.送货单明细.正品 + 备品)* CAST(COALESCE (round(dbo.送货单明细.单价, 3),0) AS NUMERIC(10, 3)),3) 
           ELSE 0 END) 
          AS numeric(10, 3)),3) AS 应收金额
    好像可以了
      

  3.   

    就是个case when then end,至于怎么组合(具体的逻辑)得你才清楚了.
      

  4.   

    没注意看,2楼写错了。建议写两个SQL语句UNION。
      

  5.   

    不就这个逻辑吗case when 计款方式 <> '收费' then 0 else
    case
    when 进出性质.性质名称='样板(收费)A' --> 金额=公式B
    when dbo.客户.下订单 = '-1' --> 金额=公式C
    when 正品 + 备品 > PO量 --> 金额=公式D
    end
    end
      

  6.   

    case when 计款方式 = '收费'
    then case
    when 进出性质.性质名称='样板(收费)A' --> 金额=公式B
    when dbo.客户.下订单 = '-1' --> 金额=公式C
    when 正品 + 备品 > PO量 --> 金额=公式D
    end
    else 0
    end