我正在尝试编写像
这样的查询SELECT SUM(a.payment_value) AS paymentvalue
FROM tableA a
WHERE IF (a.column_3 <> 'UOB' AND a.column_3 <> 'Affin',
a.payment_value > 0,
{else a.payment_value can be positive and negative value})
GROUP BY a.column_3;
查询是
a.column_3
if a.column_3 is not 'UOB' or 'AFFIN'
,选择并且仅汇总正值if a.column_3 is UOB' or 'AFFIN'
,选择并汇总正负值我尝试了以下内容(据说总计2行 - > 1000 +( - 5)= 995),但只返回-5作为付款值,而不是总和。
SELECT SUM(a.payment_value) AS paymentvalue
FROM tableA a
WHERE IF (a.column_3 <> 'UOB' AND a.column_3 <> 'Affin', a.payment_value > 0, a.payment_value > 0 OR a.payment_value > 0)
GROUP BY a.column_3;
如何在这些条件下在WHERE子句中编写IF?
答案 0 :(得分:0)
这是一种接近它的方法(有多种方法可以实现)。在我下面的建议中,我为你描述的两个条件中的每一个创建标签,以及为了以防万一而捕获其他所有条件的第三个条件。
然后,我将其包装到子查询中并从子查询中总结payment_value,同时对条件进行分组以区分每个条件。
我希望它可以帮到你:
SELECT
sub.Conditions
,SUM(sub.payment_value) paymentValue
FROM
(
SELECT
*
,CASE
WHEN a.column_3 NOT IN ('UOB','AFFIN') AND a.payment_value > 0 THEN 'Condition1'
WHEN a.column_3 IN ('UOB','AFFIN') THEN 'Condition2'
ELSE 'Condition3'
END Conditions
FROM TableA a
) sub
GROUP BY
sub.Conditions;
答案 1 :(得分:0)
我的团队负责人解决了这个问题,在这里我想与所有人分享解决方案。代码是
SELECT SUM(a.payment_value) AS paymentvalue FROM tableA a WHERE IF (a.column_3 <> 'UOB' AND a.column_3 <> 'Affin', a.payment_value > 0, a.payment_value) GROUP BY a.column_3;
如果不满足条件,将简单地获取a.payment_value列中的任何值(正数或负数)。