我有一个复杂的查询,提供如下输出。
Name Date Value1 Value2
D 1493803432 12 14
S 1493803424 20 15
T 1493804556 30 12
Y 1493823445 44 13
我想要的输出是将行添加为两行或更多行的总和,这里我只给出了两行来重现需要
Name Date Value1 Value2
D 1493803432 12 14
S 1493803432 20 15
T 1493803432 30 12
Y 1493803432 44 13
TY 1493803432 74 25
所以它是两行的总和,其中名称在'T'和'Y'中,并将其添加到与新行相同的输出
答案 0 :(得分:2)
回答问题的原始版本:
WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
-- insert your complex query here
)
SELECT LISTAGG( NAME, NULL ) WITHIN GROUP ( ORDER BY NAME ) AS NAME,
MAX( "Date" ) AS "Date",
SUM( Value1 ) AS value1,
SUM( Value2 ) AS value2
FROM your_complex_query
GROUP BY CASE WHEN name IN ( 'T', 'Y' ) THEN 0 ELSE ROWNUM END;
要回答问题的更新版本:
WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
-- insert your complex query here
)
SELECT *
FROM your_complex_query
UNION ALL
SELECT 'TY',
MAX( "Date" ),
SUM( Value1 ),
SUM( Value2 )
FROM your_complex_query
WHERE name IN ( 'T', 'Y' );