使用LEFT JOIN计数记录

佩罗佐

我正在尝试计算每种状态下我有多少张账单。对于没有匹配项的状态,请显示0。

当我使用LEFT JOIN 任何WHERE子句时,它可以完美地工作:

SELECT bs.name 'status', count(b.StatusId) 'quantity'
FROM BillStatus bs
LEFT JOIN Bill b on b.StatusID = bs.Id
GROUP BY bs.name

在此处输入图片说明

但是,当我添加WHERE子句时,它仅显示具有匹配项的状态(“ Pendente”状态丢失):

SELECT bs.name 'status', count(b.StatusId) 'quantity'
FROM BillStatus bs
LEFT JOIN Bill b on b.StatusID = bs.Id
WHERE MONTH(b.RefDate) = 2
AND YEAR(b.RefDate) = 2019
GROUP BY bs.name

在此处输入图片说明

如何显示带有WHERE子句的查询中缺少的“ Pendente”状态

拉努

将子句WHERE隐式地放入会变成一个INNER JOIN另外,请避免在ON/列上使用函数,WHERE因为它会(会)影响性能。使用正确的日期逻辑:

SELECT bs.[name] AS Status,
       COUNT(b.StatusId) AS Quantity
FROM dbo.BillStatus bs
     LEFT JOIN dbo.Bill b ON b.StatusID = bs.Id
                         AND b.RefDate >= '20160301'
                         AND b.RefDate < '20160401';
GROUP BY bs.[name];

另外,通常最好避免别名使用文字字符串;它会使事情变得难以理解。可以使用括号([])(它们是T-SQL分隔符),也可以使用双引号(")作为ANSI。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mysql pdo使用LEFT JOIN更新记录

来自分类Dev

SQLite LEFT JOIN计数(*)?

来自分类Dev

使用 MySQL,如何使用 Left Join 记录计算 MEDIAN?

来自分类Dev

表的GROUP BY在使用LEFT JOIN的MySQL中返回错误计数

来自分类Dev

使用LEFT OUTER JOIN返回计数,即使0

来自分类Dev

mysql Left Join,按计数分组

来自分类Dev

从LEFT JOIN计数行,其中column是值

来自分类Dev

MySQL Left Join 丢弃我的计数

来自分类Dev

使用 LEFT JOIN 查询 MongoDB

来自分类Dev

LEFT OUTER JOIN仅最新记录

来自分类Dev

MySQL LEFT OUTER JOIN不过滤记录

来自分类Dev

在此LEFT JOIN上避免NULL记录

来自分类Dev

GroupBy与Left Join重复记录

来自分类Dev

MySQL LEFT OUTER JOIN不过滤记录

来自分类Dev

SQL INNER JOIN与使用WHERE的LEFT JOIN

来自分类Dev

为什么在使用WHERE子句时,MySQL的LEFT JOIN返回“ NULL”记录?

来自分类Dev

MySQL-使用LEFT OUTER JOIN和WHERE子句选择记录

来自分类Dev

MySQL-使用LEFT OUTER JOIN和WHERE子句选择记录

来自分类Dev

Jquery 数据表:使用 Left Join 和 Where 子句计算记录

来自分类Dev

使用JOIN而不是NOT IN消除记录

来自分类Dev

使用 JOIN 命令更新记录

来自分类Dev

使用WHERE子句的SQL LEFT OUTER JOIN

来自分类Dev

使用子查询语法的LEFT OUTER JOIN

来自分类Dev

使用LEFT JOIN的T-SQL INSERT INTO

来自分类Dev

使用LEFT和INNER JOIN创建视图

来自分类Dev

如何使用SQL LEFT JOIN查询

来自分类Dev

在PostgreSQL中使用LEFT OUTER JOIN删除

来自分类Dev

使用WHERE条件的SQL LEFT JOIN

来自分类Dev

MySQL LEFT JOIN无法使用多个表