‘壹’ sqlSERVER 如何在union all多表查询出结果后再分类汇总
提供一下参考实现:
select wo3状态,sum(wo3售价) 小计
from (
) as a
group by wo3状态
‘贰’ 在sqlserver 里实现类似sumif 的功能
select
[name]
,sum([value])as合计
from
b
groupby
[name]
‘叁’ 如何在sql语句里计算前22行的合计值
select sum(消费记录) from (select top 22 消费记录 from table) a
测试成功,给分吧
‘肆’ sql如何列统计求和
有个思路缓源:
1、在系统表中找出表名对应的列名,并把每个列名都加上SUM()
select 'sum('+name+'),' from syscolumns
where id=(select id from sysobjects where name='表名')
2、物裂把查询结果复制出来,前面加select 后面加 from 表名。。。扰蚂态。你懂的
注意:复制出来后把最后一个逗号去掉。
3、执行查询
也可以写个存储过程来完成。
‘伍’ SQLserver 联合查询排序问题
不知道你原来的sql语句啥样子啊。。。
SELECT
ISNULL(sale_item, '总计') AS item,
CASE
WHEN GROUPING(sale_item) = 1
AND GROUPING(STR(DATEPART(qq, sale_date))) = 1
THEN '总计'
WHEN GROUPING(sale_item) = 0
AND GROUPING(STR(DATEPART(qq, sale_date))) = 1
THEN '小计'
ELSE
STR(DATEPART(qq, sale_date))
END AS sale_q,
SUM(sale_money) [money]
FROM
sale_report
GROUP BY
sale_item, STR(DATEPART(qq, sale_date)) WITH ROLLUP;
item sale_q money
---- ---------- ----------------------------------------
A 1 180810.00
A 2 182819.00
A 3 184828.00
A 4 184828.00
A 小计 733285.00
B 1 180.00
B 2 455.00
B 3 735.00
B 4 1012.00
B 小计 2382.00
C 1 1398.00
C 2 1426.00
C 3 1457.00
C 4 1457.00
C 小计 5738.00
T 3 100.00
T 小计 100.00
总 总计 741505.00
(18 行受影响)
<hr/>
如果希望 总计、小计显示在上面, 那么 ORDER BY 设置一下.
SELECT
ISNULL(sale_item, '总计') AS item,
CASE
WHEN GROUPING(sale_item) = 1
AND GROUPING(STR(DATEPART(qq, sale_date))) = 1
THEN '总计'
WHEN GROUPING(sale_item) = 0
AND GROUPING(STR(DATEPART(qq, sale_date))) = 1
THEN '小计'
ELSE
STR(DATEPART(qq, sale_date))
END AS sale_q,
SUM(sale_money) [money]
FROM
sale_report
GROUP BY
sale_item, STR(DATEPART(qq, sale_date)) WITH ROLLUP
ORDER BY
GROUPING(sale_item) desc, item,
GROUPING(STR(DATEPART(qq, sale_date))) desc
item sale_q money
---- ---------- ----------------------------------------
总 总计 741505.00
A 小计 733285.00
A 1 180810.00
A 2 182819.00
A 3 184828.00
A 4 184828.00
B 小计 2382.00
B 1 180.00
B 2 455.00
B 3 735.00
B 4 1012.00
C 小计 5738.00
C 1 1398.00
C 2 1426.00
C 3 1457.00
C 4 1457.00
T 小计 100.00
T 3 100.00
(18 行受影响)
‘陆’ sql语句统计数量 统计一个字段出现的数量
1、创建测试表,
create table test_stu(id number, u_name varchar2(20), subject varchar2(20));
create table test_subj(id number, subject varchar2(20));
‘柒’ 关于sqlserver分组求和的问题
这个问题主要是分组
我模拟了第一层你要分组的数据
分组sql
select substr(code,1,7), sum(a),sum(b),sum(c),sum(d) from test1 group by substr(code,1,7)
结果:
code sum(a) sum(b)sum(c) sum(d)
1 1010101 16 20 24 28
2 1010104 100 140 180 220
接下来通过结果集更新code 所在的记录
下面的过程就是重复的根据substr(code,起始位置,后移多少位) 来进行分组求和
更新。。
希望能帮到你
‘捌’ sql语句求和
SQL中求和语句分为纵向汇总和横向汇总语句;
假设数据列为:A、B、C、D、E、F、G
纵向汇总语句:
selectsum(A),sum(B),sum(C),sum(D),sum(E),sum(F),sum(G)from表名
横向汇总的SQL语句是:
selectA,B,C,D,E,F,G,A+B+C+D+E+F+Gfrom表名
求所有数据总和的SQL语句是:
selectsum(A)+sum(B)+sum(C)+sum(D)+sum(E)+sum(F)+sum(G)from表名
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
(8)sqlserver小计合计扩展阅读:
sql参考语句
删除新表
drop table tabname
增加一个列
Alter table tabname add column col type
添加主键
Alter table tabname add primary key(col)
删除主键
Alter table tabname drop primary key(col)
创建索引
create [unique] index idxname on tabname(col….)
‘玖’ sqlserver 利用sum求和时,sum时相同的id值加一次
你这个需求很不明确
如果只是按id来汇总,直接group by id就可以
如果想跳开相同AID,可以用distinct关键字跳开就行