在数据透视表中聚合函数的必要性是什么

时间:2014-02-24 06:57:48

标签: sql pivot

我有一个数据表

id id_1 id_2
1   C1   0
1   C2   0
1   C3   0
1   C4   1
2   C1   0
2   C2   0
2   C3   0
2   C4   0
3   C4   0

我正在使用数据透视表来打印数据

select *
from 
(
    select Id, id_1,id_2
    from table1
) x
pivot
(
    sum(id_2)
    for id_1 in ([C1], [C2], [C3], [C4])
) p

问题:在不需要时使用聚合函数(本例中为sum)的必要性,因为所有值都不同。如果我删除聚合函数,那么它会生成一个错误(这是我不是应该的点

SQL Fiddle

由于

1 个答案:

答案 0 :(得分:0)

此处所有值都不同,但Oracle在解析时并不知道这一点。需要进行聚合以确保没有重复。

是的,他们可能已经在运行时实现了这个检查,如果找到重复项就会引发异常,但这似乎是一个随意的决定,事实并非如此。