用 union 做多查询连接
SELECT A, SUM(real_qty) AS qiuhe, B
FROM AA
GROUP BY A, B
HAVING (B = '小明')
ORDER BY item_barcode
union
SELECT A, SUM(real_qty) AS qiuhe, B
FROM AA
GROUP BY A, B
HAVING (B = '小 花')
ORDER BY item_barcode
union
SELECT ''as a, SUM(real_qty) AS qiuhe, '' as b
FROM AA
GROUP BY A, B
group by一般用于将查询结果分组,多配合聚合函数,sum,count,min,max等一起使用。
如表名test,数据如下
id grade
1 10
1 50
2 30
2 40
3 20
如果按照id,求grade的和,则可以
select id,sum(grade) as grade from test group by id
结果就是
id grade
1 60
2 70
3 20
注意:count,min,max函数等也是同样道理
但有时,group by也配合having使用,如上边的例子,如果要查询grade的和大于50的id及grade的和,就可以这样使用
select id,sum(grade) as grade from test group by id having sum(grade)>50
结果如下:
id grade
1 60
2 70
select max(时刻值)
,min(时刻值)
from (select 日期 时刻 名称 类型 等级 sum(时刻值)
from TO
group by 日期 时刻 名称 类型 等级)
select 单位,sum(case when 月份=1 then 金额 end) as 金额月份1 ,
(case when 月份=2 then 金额 end) as 金额月份2 ,
(case when 月份=3 then 金额 end) as 金额月份3 ,
from 表
group by 单位
真不知道为什么你们总会搞出这些奇奇怪怪的问题 SQL的精髓在于如何用最小的代价完成最高的工作量 而不是在搞这些奇奇怪怪的问题
每次出现这种问题,你们首先第一件事应该是问自己 表设计错了没有
我知道 很多时候是遗留系统 或者你们使用了某种开发库 为了接口而不得不再一条SQL语句中完成这些乱七八糟的工作 那么 你们可以考虑把数据导出来放到应用程序中 如C#,JAVA等来完成功能。
要谨记,SQL,数据库 只是用来帮你管理数据 而不是用来完成业务逻辑!即便要完成业务逻辑,那也是存储过程的事!
这是测试用例 oracle写的:
create table test(a integer,b varchar2(10),c varchar2(10));
1 "a" "b"
2 "c" "b"
3 "a" "d"
insert into test values(1,'a','b');
insert into test values(2,'c','b');
insert into test values(3,'a','d');
commit;
selectfrom test;
select t1b,t1c,t1sum_a,t2sum_a from (select b,c,sum(a) as sum_a from test group by b,c) t1,
(select b,sum(a) as sum_a from test group by b) t2
where t1b=t2b(+)
order by t1sum_a asc;
以上就是关于sql 分组求和 同时满足2个条件,再把求和结果相加全部的内容,包括:sql 分组求和 同时满足2个条件,再把求和结果相加、数据库问题,group by之后,某一类相似的数据怎么进行累加、sql 分组求和,取各组极值,求高手等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)