【发布时间】:2009-11-18 16:49:10
【问题描述】:
我有一个包含几个聚合函数和几个分组列的查询。我想从组中取出一个分组列,并对它拥有的所有 VARCHAR 值执行某种聚合“连接”。 (理想情况下是在一个新的用马车分隔的列表中)。
这是我的查询,我记下我想在哪里执行此操作:
SELECT rownum, F.*
FROM (SELECT
c.logical_type "MerchantType",
c.merchant_id "MerchantID",
c.m_name "MerchantName",
m.m_name "TransferredBy", /* <----- Make this aggregate */
SUM(DECODE(b.ba_price,null,0,DECODE(b.BILL_SRVC_ID,'CREDITCHANGE',0,b.ba_price))) "TotalValue",
sum(DECODE(b.ba_price,null,0,DECODE(b.BILL_SRVC_ID,'CREDITCHANGE',b.ba_price,0))) "LimitChange",
SUM(DECODE(b.ba_status,'bdone',1,0)) "TxnCount",
sum(to_number(decode(substr(b.ba_merchant_freetext,1,10),'Commission',substr(b.ba_merchant_freetext, 12,(instr(b.ba_merchant_freetext,';',1,1)-12))))) "Commission"
FROM bill_auth0 b,
merchant0 m,
merchant0 c
WHERE
b.srvc_prod_id = 'TRANSFER'
AND b.ba_channel = 'WPSS'
AND b.ba_status IN ('bdone')
AND b.merchant_id = m.merchant_id
AND b.customer_id = c.merchant_id
AND b.ba_timestamp BETWEEN to_date( '11/01/2009', 'MM/DD/YYYY' )
AND to_date( '11/17/2009', 'MM/DD/YYYY' )+1
GROUP BY
c.logical_type,
c.merchant_id,
c.m_name,
m.m_name /* <-- Remove from Grouped By */
ORDER BY c.logical_type, c.merchant_id, m.m_name) F;
所以基本上我希望能够得到一个结果,其中“TransferredBy”看起来像:
商户1
商家2
商户3
如果此组行有 3 个单独的 m.m_name 匹配项。
【问题讨论】:
标签: oracle aggregate concatenation