2
我想回到以下列格式的结果集:Oracle - 返回汇总数以及汇总汇总数?
YEARMONTH Total ModelA ModelB ModelC
200101 0 0 0 0
200102 10 5 5 0
200103 8 2 2 4
其中总的的时间由yearmonth分组的所有模型类型的总和,以及个别型号列的每个模型小时的总和类型按yearmonth分组。我可以使用嵌套选择以下查询得到正确的结果:
select distinct yearmonth,
sum(a.hours) as Total,
(select sum(b.hours) from model_hours b
where model = 'ModelA' and a.yearmonth = b.yearmonth) as ModelA,
(select sum(b.hours) from model_hours b
where model = 'ModelB' and a.yearmonth = b.yearmonth) as ModelB,
(select sum(b.hours) from model_hours b
where model = 'ModelC' and a.yearmonth = b.yearmonth) as ModelC
from model_hours a
group by yearmonth
order by yearmonth
我很好奇,使用的是Oracle 11枢轴函数来实现同样的结果尝试的,我能得到的所有结果除了总的使用下面的查询时间:
select * from (
select yearmonth, hours, model
from model_hours a
)
pivot
(
sum(hours)
for model in ('ModelA', 'ModelB', 'ModelC')
)
order by yearmonth
返回这个结果:
YEARMONTH ModelA ModelB ModelC
200101 0 0 0
200102 5 5 0
200103 2 2 4
我一直无法弄清楚如何也得到的时间总和为所有车型,G根据yearmonth进行分组,转换为此结果集。可能吗?如果是这样,它可能会比嵌套选择更有效率吗?这个特定的表格现在有大约200K行。