【发布时间】:2019-02-27 09:32:15
【问题描述】:
所以我有这个有动态标题的表。
下面的查询用于生成将用于表查询的日期。
select listagg(INSERT_DATE,
''',''') WITHIN GROUP(ORDER BY INSERT_DATE)
from (select distinct INSERT_DATE from TEST_TBL order by INSERT_DATE asc)
上面查询的结果用于下面的 in 子句。
select * from (select log, lot, insert_date from TEST_TBL)
pivot(count(distinct log || insert_date)
for(insert_date) in ('17-JAN-19', '21-JAN-19', '22-JAN-19'))
现在,我希望得到这样的结果,每列的总数将显示在所有行的末尾。我尝试使用 GROUP BY ROLLUP 但它不起作用。
我试过这个查询:
select *
from (select * from (select log, lot, insert_date from TEST_TBL) pivot(count(distinct log || insert_date)
for(insert_date) in ('17-JAN-19', '21-JAN-19', '22-JAN-19')))
group by rollup (log);
有人可以帮我解决我应该使用什么查询吗?谢谢。
编辑:我使用了@q4za4 的解决方案,并得出了这个最终查询
from (select *
from (select log,
lot,
insert_date
from TEST_TBL)
pivot(
count(distinct lot || insert_date)
for (insert_date)
in ('17-JAN-19','21-JAN-19','22-JAN-19'))
)
UNION ALL
select 'TOTAL # OF LOGS',
sum(jan1719),sum(jan2119),sum(jan2219)
FROM (select *
from (select log,
lot,
insert_date
from TEST_TBL)
pivot(
count(distinct lot || insert_date)
for (insert_date)
in (
'17-JAN-19' as jan1719,'21-JAN-19' as jan2119,'22-JAN-19' as jan2219
)))
也感谢@Ponder Stibbons 的解决方案,它也帮助了我,让我想到在我的 listagg-query 中添加附加部分来创建目标查询的第一行。
【问题讨论】:
标签: sql oracle pivot rollup dynamic-columns