检查Case Statement字段是正数还是负数Sql

时间:2017-08-07 12:30:51

标签: c# mysql sql

我有一个sql查询,我想添加另一列,同时检查case语句字段是否具有正值,以便将结果显示为Sales或Refund。例如,我想检查Total是否为负值或正值。如果是正数,则显示Sales else显示退款

以下查询示例:

Select F01,
CASE 
WHEN R.F1034=3 THEN convert(DOUBLE PRECISION,  F65 * 100 ) * 10
ELSE 0 
END as Total
FROM RPT_CLT R

4 个答案:

答案 0 :(得分:1)

XXX替换为您的字段/计算

SELECT CASE WHEN XXX >= 0 THEN 'Sales' ELSE 'Refund' END AS newfield

在你的例子中:

SELECT F01,
CASE WHEN R.F1034 = 3 
     THEN CONVERT(DOUBLE PRECISION,  F65 * 100 ) * 10
     ELSE 0 
END AS Total,
CASE WHEN (CASE WHEN R.F1034 = 3 
     THEN CONVERT(DOUBLE PRECISION,  F65 * 100 ) * 10
     ELSE 0 
END) >= 0 THEN 'Sales' ELSE 'Refund' END AS newfield
FROM RPT_CLT R

答案 1 :(得分:0)

试试这个:

Select F01,
    CASE 
        WHEN R.F1034=3 THEN convert(DOUBLE PRECISION,  F65 * 100 ) * 10
        ELSE 0
    END as Total,
    CASE 
        WHEN (CASE WHEN R.F1034=3 
                   THEN convert(DOUBLE PRECISION,  F65 * 100 ) * 10
                   ELSE 0
              END)>=0 
        THEN 'Sales'
        ELSE 'Refund'
    END as Result
FROM RPT_CLT R

答案 2 :(得分:0)

select F01,
       Total,
       case when total>=0 then 'Sales' else 'Refund' end as new
from (
     select F01,
            case when R.F1034 = 3 
                 then convert(double precision,  F65*100)*10
                 else 0 
            end as Total
     from RPT_CLT
   )

答案 3 :(得分:-1)

这是你想要的吗?

Select F01,
       (CASE WHEN R.F1034 = 3
             THEN convert(DOUBLE PRECISION,  F65 * 100 ) * 10
             ELSE 0 
        END) as Total,
       (CASE WHEN R.F1034 = 3 AND F65 > 0 THEN 'SALES' ELSE 'REFUND'
        END) as which
FROM RPT_CLT R

我觉得您可能需要ABS(),因此Total始终为正。