⑴ sql 分类汇总查询语句
select dept as 部门,sum(pay) as 合计,sum(case zt when '01'then 1 else 0 end) as 个数(01状态),
sum(case zt when '02'then 1 else 0 end) as 个数(02状态),count(*) as 总数
from 表 group by dept
以上,希望对你有所帮助
⑵ SQL 语句的分类汇总
select * from table group by subject,title,name order by subject,title,name
⑶ SQL查询语句,分类,汇总
创建测试表,插入数据
createtabletast
(序号int,
姓名varchar(10),
电话卡号varchar(20),
卡类型varchar(10))
insertintotastvalues(1,'张三','1000000000','移动')
insertintotastvalues(2,'张三','1000000001','移动')
insertintotastvalues(2,'张三','1000000002','移动')
insertintotastvalues(4,'张三','1000000003','联通')
insertintotastvalues(5,'张三','1000000004','联通')
insertintotastvalues(6,'李四','1000000004','联通')
insertintotastvalues(7,'李四','1000000005','联通')
insertintotastvalues(8,'李四','1000000006','移动')
insertintotastvalues(9,'王麻','1000000007','移动')
insertintotastvalues(10,'王麻','1000000008','移动')
insertintotastvalues(11,'王麻','1000000010','移动')
insertintotastvalues(12,'王麻','1000000011','联通')
运行:
selectcasewhena.电话卡号=b.电话卡号thena.姓名else''end姓名,a.电话卡号,a.卡类型
fromtastaleftjoin
(select姓名,min(电话卡号)电话卡号fromtastgroupby姓名)b
ona.电话卡号=b.电话卡号anda.姓名=b.姓名
结果:
⑷ sql语句分类汇总,排序查询语句怎么实现
select商品id,sum(商品数量)商品数量from表名groupby商品idorderbysum(商品数量)desc
这样试试
⑸ 关于使用sql语句sum(case when……)来实现分类汇总功能
有两处有笔误,如果结果不同的话,需要检查一下,先对比下总金额,再对比各个的销售额,再检查姓名是否完全一致,EXCEL中经常有前后空格或是不容易显示出来的字符会有影响,用select 月份,姓名,sum(销售数量*产品单价) from 表格 group by 月份,姓名
例如:
select
月份,
sum(casewhen销售人员='姓名1'then销售数量*产品单价else0end)as姓名1销售额,
sum(casewhen销售人员='姓名2'then销售数量*产品单价else0end)as姓名1销售额,
sum(casewhen销售人员='姓名3'then销售数量*产品单价else0end)as姓名1销售额
from表格
groupby月份,销售人员
(5)sql语句分类汇总扩展阅读:
注意事项
case when有用两种用法如下:
用法一:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
用法二:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
⑹ SQL语句实现分类汇总的方法
Select id, isNull(sum(case when value>aa then num end),0) as 'sum_num_of_value>aa' ,
isNull(sum(case when value<aa then num end),0) as 'sum_num_of_value<aa'
from abc
group by id
⑺ SQL 分类汇总查询语句
select
ROW_NUMBER()
over(order
by
a.dept)
序号,
a.dept
部门,
a.合计,
b.个数01,
c.个数02,
d.总数
from
(select
dept,SUM(pay)
合计
from
t
where
zt='01'
or
zt='02'
group
by
dept)
a,
(select
dept,COUNT(pay)
个数01
from
t
where
zt='01'
group
by
dept)
b,
(select
dept,COUNT(pay)
个数02
from
t
where
zt='02'
group
by
dept)
c,
(select
dept,COUNT(pay)
总数
from
t
group
by
dept)
d
where
a.dept=b.dept
and
b.dept=c.dept
and
c.dept=d.dept
参照楼上的写法,改进一下有:
select
ROW_NUMBER()
over(order
by
dept)
序号,
dept
as
部门,
sum(case
when
zt='01'
OR
zt='02'
then
pay
else
0
end)
合计,
sum(case
when
zt='01'
then
1
else
0
end)
as
个数01状态,
sum(case
when
zt='02'
then
1
else
0
end)
as
个数02状态,
count(*)
as
总数
from
t
group
by
dept
⑻ 怎么用SQL语句对表【收支表】进行分类汇总
--建立测试表 并插入数据
-- 执行一个查询 ,你可以写在一个存储过程里面,我困了,不过格式按照你说的写好了
CREATETABLETB
(说明NVARCHAR(20)
,
类别NVARCHAR(20),
金额INT,
款项类别NVARCHAR(20)
)
INSERTINTOdbo.TB
(说明,类别,金额,款项类别)
VALUES(N'项目A',--说明-nvarchar(20)
N'支出',--类别-nvarchar(20)
900,--金额-int
N'费用B'--款项类别-nvarchar(20)
)
INSERTINTOdbo.TB
(说明,类别,金额,款项类别)
VALUES(N'项目A',--说明-nvarchar(20)
N'收入',--类别-nvarchar(20)
2000,--金额-int
N'收入A'--款项类别-nvarchar(20)
)
INSERTINTOdbo.TB
(说明,类别,金额,款项类别)
VALUES(N'项目B',--说明-nvarchar(20)
N'支出',--类别-nvarchar(20)
3500,--金额-int
N'费用C'--款项类别-nvarchar(20)
)
INSERTINTOdbo.TB
(说明,类别,金额,款项类别)
VALUES(N'项目C',--说明-nvarchar(20)
N'支出',--类别-nvarchar(20)
200,--金额-int
N'费用D'--款项类别-nvarchar(20)
)
INSERTINTOdbo.TB
(说明,类别,金额,款项类别)
VALUES(N'项目A',--说明-nvarchar(20)
N'支出',--类别-nvarchar(20)
300,--金额-int
N'费用A'--款项类别-nvarchar(20)
)
CREATETABLE#temp
(
说明NVARCHAR(20),
类别NVARCHAR(20),
金额INT,
款项类别NVARCHAR(20)
)
INSERTINTO#temp
SELECT*
FROMdbo.TB
UNIONALL
SELECT说明,
CASEWHEN说明ISNOTNULLTHENISNULL(类别,'收支净值')
ELSE类别
END+'合计'AS类别,
SUM(CASEWHEN类别='收入'THEN金额
ELSE-金额
END)AS金额,
MAX(款项类别)AS款项类别
FROMTB
WHERE说明ISNOTNULL
GROUPBYROLLUP(说明,类别)
ORDERBY说明INSERT#temp
SELECTB.*
FROM(SELECTDISTINCT
说明,
'收入合计'AS类别,
0AS金额,
''AS款项类别
FROM#temp
WHERE说明ISNOTNULL
)B
WHEREB.说明+B.类别NOTIN(SELECT说明+类别
FROM#temp
WHERE说明ISNOTNULL)
INSERT#temp
SELECTB.*
FROM(SELECTDISTINCT
说明,
'支出合计'AS类别,
0AS金额,
''AS款项类别
FROM#temp
WHERE说明ISNOTNULL
)B
WHEREB.说明+B.类别NOTIN(SELECT说明+类别
FROM#temp
WHERE说明ISNOTNULL);
WITHtt
AS(SELECT说明,
类别,
CASEWHEN类别='支出合计'THENABS(金额)
ELSE金额
ENDAS金额,
CASEWHEN类别='收入'
OR类别='支出'THEN款项类别
ELSE''
ENDAS款项类别,
CASEWHEN类别='支出'THEN1
WHEN类别='收入'THEN2
WHEN类别='收入合计'THEN3
WHEN类别='支出合计'THEN4
WHEN类别='收支净值合计'THEN5
ELSE6
ENDASnum
FROM#temp
WHERE说明ISNOTNULL
)
SELECTtt.说明,
tt.类别,
tt.金额,
tt.款项类别
FROMtt
ORDERBY说明,
num
DROPTABLE#temp