Oracle11g Oracle-返回聚合和以及数据透视聚合和?

Oracle11g Oracle-返回聚合和以及数据透视聚合和?,oracle11g,pivot,Oracle11g,Pivot,我希望以以下格式返回结果集: YEARMONTH Total ModelA ModelB ModelC 200101 0 0 0 0 200102 10 5 5 0 200103 8 2 2 4 其中,总计是按yearmonth分组的所有车型类型的小时数之和,各个车型列是按yearmonth分组的每个车型类型的小时数之和。我可以使用以下带有嵌套选择的查询获得正确的结果: select disti

我希望以以下格式返回结果集:

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中的pivot函数来获得相同的结果,并且能够使用以下查询获得除总小时数之外的所有结果:

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

我还无法计算出如何将所有模型的小时数总和(按年、月分组)也放入这个结果集中。可能吗?如果是这样,它会比嵌套选择更有效吗?这个特定的表现在有大约20万行。

从forums.oracle.com,有几种类似的方法可以做到这一点。。。最简单的语法似乎是:

select yearmonth,ModelA + ModelB + ModelC Total,ModelA,ModelB,ModelC from (
    select yearmonth, hours, model
    from model_hours a
)
pivot
( 
    sum(hours)
    for model in ('ModelA' as ModelA, 'ModelB' as ModelB, 'ModelC' as ModelC)
)
order by yearmonth

另一方面,数据透视查询的速度大约是带有标量子查询的原始查询的100倍

从forums.oracle.com上,有几种类似的方法可以做到这一点。。。最简单的语法似乎是:

select yearmonth,ModelA + ModelB + ModelC Total,ModelA,ModelB,ModelC from (
    select yearmonth, hours, model
    from model_hours a
)
pivot
( 
    sum(hours)
    for model in ('ModelA' as ModelA, 'ModelB' as ModelB, 'ModelC' as ModelC)
)
order by yearmonth
另一方面,数据透视查询的速度大约是带有标量子查询的原始查询的100倍