0
这里做一个子查询内的聚合函数的输入表:帐户需要通过转换行到列
accountnumber year quarter catgeory owedamt payedamt writeoffamt
101 2001 1 Tax 130.0 0.0 30.0
101 2001 1 Interest 130.0 30.0 30.0
101 2001 2 Interest 120.0 20.0 20.0
102 2002 1 Interest 120.0 100.0 20.0
102 2002 2 Tax 110.0 100.0 10.0
输出
accountnumber year quarter Tax (outstanding) Interest (outstanding)
101 2001 1 100.0 70.0
101 2001 2 0.0 80.0
102 2002 2 10.0 0.0
这里的“优秀”是caluclated总和的基础上(OWED_AMT - (PAID_AMT + WRITEOFF_AMT))作为未知数
注意:我们需要将列作为税和利息,但这些列中的金额应该是未完成的,这是在t他是以上公式的基础。
注2:用于accountntumber:102,兴趣(优秀)被计算
总和(OWED_AMT - (PAID_AMT + WRITEOFF_AMT)),其是(120-(100 + 20))= 0.0
但是,我们不要在该年度的任何税种和四分之一所以输出结果0.0
如果我们在同一年同一季度有两种税(优秀)和利息(优秀)为零,我们可以跳过该行
我正在使用的查询是:
with summaryData (accountnumber ,
year ,
quarter, tax, interest) as
(
SELECT accountnumber ,
year ,
quarter ,
SUM(CASE WHEN catgeory = 'Tax' THEN sum(OWED_AMT - (PAID_AMT + WRITEOFF_AMT))
ELSE 0
END),
SUM(CASE WHEN catgeory = 'Interest' THEN sum(OWED_AMT - (PAID_AMT + WRITEOFF_AMT))
ELSE 0
END)
FROM acccount
GROUP BY accountnumber ,
year ,
quarter
)
select * from summaryData
where tax > 0 or interest > 0;
我在这里得到的错误是:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.