我有一个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
答案 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
始终为正。