首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示每个月并计数或0(如果为空)

问显示每个月并计数或0(如果为空)
EN

Stack Overflow用户
提问于 2019-08-06 18:08:10
回答 1查看 329关注 0票数 0

我使用下面的DDL显示2018年和2019年几个月的销售数据。我的问题是,很明显,我们将没有数据为2019年9月至12月,但我需要返回,并显示一个0的金额。

如何编辑此查询,以便将18和19的所有月份都返回1-12个月?

代码语言:javascript
复制
CREATE TABLE PrevYear (
  [EmployeeNumber] char(8) NOT NULL,
  [SaleAmount] int DEFAULT NULL,
  [SaleDate] date NOT NULL,
  [EmployeeName] char(17) NOT NULL
); 

CREATE TABLE CurrentYear (
  [EmployeeNumber] char(8) NOT NULL,
  [SaleAmount] int DEFAULT NULL,
  [SaleDate] date NOT NULL,
  [EmployeeName] char(17) NOT NULL
); 

INSERT INTO CurrentYear
VALUES ('ea12', '100', '2019-01-10', 'Sam Smith');

INSERT INTO CurrentYear
VALUES ('ea12', '199', '2019-01-13', 'Sam Smith');

INSERT INTO CurrentYear
VALUES ('ea12', '100', '2019-03-01', 'Sam Smith');

INSERT INTO CurrentYear
VALUES ('ls22', '100', '2019-05-01', 'Sam Smith');


INSERT INTO PrevYear
VALUES ('ea12', '100', '2018-01-10', 'Sam Smith');

INSERT INTO PrevYear
VALUES ('ea12', '199', '2018-01-13', 'Sam Smith');

INSERT INTO PrevYear
VALUES ('ea12', '100', '2018-03-01', 'Sam Smith');

INSERT INTO PrevYear
VALUES ('ls22', '100', '2018-05-01', 'Sam Smith');

我想从查询中得到的输出是:

1月18日1美元

1月19日1美元

2月18日$1

2月19日1美元

3月18日$1

3月19日$1

4月18日$1

4月19日$1

五月十八日$1

五月十九日$1

六月十八日1元

六月十九日$1

7月18日1美元

7月19日1美元

8月18日$1

8月19日1美元

9月18日1美元

9月19日0美元

10月18日$1

10月19日0美元

11月18日1美元

11月19日0美元

12月18日$1

12月19日0美元

这是我的查询

代码语言:javascript
复制
SELECT Month, Sum(ia) AS SaleAmount 
FROM   (SELECT Date_format(saledate, '%m-%Y') AS Month, 
           employeename, 
           Sum(SaleAmount)                AS IA 
    FROM   CurrentYear 
    WHERE  employeename = 'Sam Smith' 
    GROUP  BY Date_format(saledate, '%m-%Y'), 
              employeename 
    UNION ALL 
    SELECT Date_format(saledate, '%m-%Y') AS Month, 
           employeename, 
           Sum(SaleAmount)                AS IA 
    FROM   PrevYear
    WHERE  employeename = 'Sam Smith' 
    GROUP  BY Date_format(saledate, '%m-%Y'), 
              employeename) previousQuery 
GROUP  BY month 
ORDER  BY month
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-06 18:26:07

您可以简单地添加一个包含12条记录(每个月一条)的月查找表。

结构将是: id,描述。

在现有表中,您可以按id引用月份:更少的空间,更多的连接性能。

在使用左/右联接的查询中,您将始终有缺少的月份。

PS:只需要一个表来管理它,并在需要的地方添加一个简单的where条件(或按条件分组),以便进行多年的管理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57381746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档