用户用水量A,计划流量B;
用水量在计划内的按单价C1收取;
在计划流量20%内按C2收取;
之外的按C3收取;
用iif写一个计算用户水费的函数 提示 iif(<test>,<test1>,<test2>) 如果test=true 返回test1 否则 返回 test2 iif可以嵌套使用

解决方案 »

  1.   

    (CASE when a<b then c1 when a<(b*20)/100 when c2 else c3 end)
      

  2.   

    CASE
        WHEN a <(b*20)/100 THEN c2 
        WHEN a <b then c1 
          ELSE c3 
        END
    一楼把其中的一个then写成了when~
      

  3.   

    lz的要求可以用(true_false_term?result_if_true:result_if_false)的表达式来实现~
      

  4.   

    ? :  表达式
    ? :  表达式 我们称为 问号冒号表达式。
    if (a > b) 
       c = 1; 
    else 
       c = 0; 
    没有花括号的代码,感觉多紧凑。不过对于上面的代码,我们还可以继续简化,那就是使用 ? : 语句。 
      c = (a > b)? 1 : 0; 
      就一行话,多简捷!
    语句中的问号问的是什么?问的是 a 是否大于 b ? 如果是,则得到值1,否则,得到值0。 
    ? : 表达式格式语法: 
      (条件) ? 值1 : 值2 
      举一例子:设有int变量 a,b,二者均已初始化。请得到二者中的较大值。 
      方法是:   int c = (a  > b) ?  a : b; 
    并不是所有的if..else...语句都可以用 : ? 来代替,
    只有那些两个分支都只是用来计算一个同一类型的值,然后赋予同一变量的条件分支语句,才适合。