日期:2014-05-17  浏览次数:20536 次

分组相关的问题
表T有A,B,C列
查询要求,行数不变,每行增加下面两列:
按AB分组查询C的和,和按A分组查询C的和。

select A,B,sum(C)通过A,B分组,sum(C) 只通过A分组
from T


这是一个复杂查询的简化的问题。
group by已经用在其他字段了。
这里能够不用group by实现吗?以前看过好像oracle是可以。

------解决方案--------------------
表T有A,B,C列
查询要求,行数不变,每行增加下面两列:
按AB分组查询C的和,和按A分组查询C的和。


;with c1 as
(
select A,B,sum(C)通过A,B分组
from T
 ),
c2 as
(
select NULL,NULL sum(C) 只通过A分组
from T
)
SELECT *
FROM c1
UNION ALL SELECT * FROM c2

简单点,虚视图把两个查询分隔开
------解决方案--------------------
select A, b,
(select SUM(c) from T where a= o.a and b= o.b ) '通过ab分组',
(select SUM(c) from T where a= o.a ) '通过a分组'
from T o
------解决方案--------------------
mysql不能用这个语法吧
------解决方案--------------------
mysql问题建议转到mysql板块!
------解决方案--------------------
mysql也可以通过2个group by实现吧,最后关联回一张表