注册 登录
编程论坛 SQL Server论坛

SQL 单表多结果查询问题。

CBCBCB 发布于 2021-06-21 20:48, 3691 次点击
有一个表,有公司名、销售日期、销售金额 3个字段

想得出的结果是 公司名 / 全表格所有销售总和 / 2021年销售总额 (没有2021年销售就为0)/2020年销售总额 (没有2020年销售就为0)/2019年销售总额 (没有2019年销售就为0)/ 2018年销售总额 (没有2018年销售就为0)



有没有好的查询语句,请各位大神解答一下,谢谢。
4 回复
#2
mywisdom882021-06-22 09:01
取日期的年份,convert(varchar(4),销售日期,120)
用sum(case when...)组合

如果公司名称,都是一样的
select max(公司名称) as 公司名称,
       sum(case convert(varchar(4),销售日期,120) when '2021' then 销售金额 else 0) as '2021年销售总额',
       sum(case convert(varchar(4),销售日期,120) when '2020' then 销售金额 else 0) as '2020年销售总额',
       sum(case convert(varchar(4),销售日期,120) when '2019' then 销售金额 else 0) as '2019年销售总额',
       sum(case convert(varchar(4),销售日期,120) when '2018' then 销售金额 else 0) as '2018年销售总额'
from 一个表

#3
CBCBCB2021-06-23 19:31
回复 2楼 mywisdom88
不止有一间公司,而且不同公司还有很多不同时间段的记录
#4
CBCBCB2021-06-23 19:42
回复 2楼 mywisdom88
高手,厉害,修改了一下,可以啦!谢谢啊!~
#5
mywisdom882021-06-24 08:35
不同公司,就来个分组,就可以
select 公司名称,
       sum(case convert(varchar(4),销售日期,120) when '2021' then 销售金额 else 0) as '2021年销售总额',
       sum(case convert(varchar(4),销售日期,120) when '2020' then 销售金额 else 0) as '2020年销售总额',
       sum(case convert(varchar(4),销售日期,120) when '2019' then 销售金额 else 0) as '2019年销售总额',
       sum(case convert(varchar(4),销售日期,120) when '2018' then 销售金额 else 0) as '2018年销售总额'
from 一个表
group by 公司名称

[此贴子已经被作者于2021-6-24 08:36编辑过]

1