ISNULL是不是后面只能跟两个值呢?
如果有3种以上的情况用SQL 语句怎么写,如:表  编号   数量1   数量2     
                                               1             5
                                         2     6          
                                         3               求数量与金额(3元)的乘积:如果数量1有就与数量1乘,如果没有就与数量2乘,如果数量1和数量2都没有就乘0,用SQL怎么写呢?
这样可以吗  3*ISNULL(数量1,数量2,0)

解决方案 »

  1.   

    COALESCE
    会返回第一个非空的值,参数是任意多个。
      

  2.   

    COALESCE
    返回其参数中第一个非空表达式。语法
    COALESCE ( expression [ ,...n ] ) 参数
    expression任何类型的表达式。n表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
      

  3.   

    是不是只要把3*ISNULL(数量1,数量2,0)这个中的ISNULL换成COALESCE 就可以了
      

  4.   


    嗯,是这样的。
    COALESCE ( expression [ ,...n ] )  等价于  CASE    WHEN (expression1 IS NOT NULL) THEN expression1    ...    WHEN (expressionN IS NOT NULL) THEN expressionN    ELSE NULL END 
      

  5.   


    我觉得也应该是用case的方式
      

  6.   

    SELECT 编号,
       CASE 
       WHEN 数量1 is not null THEN 1*3
       WHEN 数量2 is not null THEN 2*3
       else 0*3
       END AS m
    FROM tb