我有一个查询可以生成一个人在一年内捐赠的名称和总金额列表。它看起来像这样多列查询到单列子查询
select ad1.adbdesg_name as "Desg_Name",
sum(ag1.agvglst_amt) as "Total_Amt"
from agvglst ag1 INNER JOIN adbdesg ad1 ON ag1.agvglst_desg = ad1.adbdesg_desg
where ag1.agvglst_pidm = 12345
and to_char(ag1.agvglst_gift_date,'YYYYMMDD') >= 20150101
and to_char(ag1.agvglst_gift_date,'YYYYMMDD') <= 20151231
group by ad1.adbdesg_name;
简单的权利?而我得到正确的结果是这样的:
Desg_Name Total_Amt
Administrative Council Scholarship End Prin NS (65%) 16.9
Blount County Campus 240
Administrative Council Scholarship (35%) 9.1
Faculty Senate Scholarship 10
我的问题,现在我需要为单行子查询,将它放在报告中,他们希望每个人一时间,看看他们的捐款数额。
我做了一些研究想法也许我可以尝试使用listagg函数来实现此目的,但我不相信您可以使用这种聚合函数,因为不允许使用组函数。
select listagg('DESG: '|| adbdesg_name as "Desg_Name" ||' AMT: $' || sum(AGVGLST_AMT), ',')
WITHIN GROUP (ORDER BY AGVGLST_GIFT_DATE) "DesgHC2015"
任何建议/提示,将不胜感激:)
这正是我需要!我曾试过这个,但我做了倒退。谢谢! –
我也想感谢您使用EXTRACT功能。我完全忘记了这件事 –