MySQL 案例/计数/不同的异常结果

问题描述 投票:0回答:0

我从以下 MySQL 查询中得到异常/不正确的结果:

`select CarrierID, CarrierName,
count(distinct case when CaseYear = '2022'then CaseNumber Else 0 end) as '2022',
count(distinct case when CaseYear = '2021'then CaseNumber Else 0 end) as '2021',
count(distinct case when CaseYear = '2020'then CaseNumber Else 0 end) as '2020'
from SalesRegister where CarrierName like 'Grange%'
group by CarrierName order by 3 desc, 1 asc;`

SalesRegister 表具有以下架构:

SalesRegister Table Schema

使用这个查询

“select CaseNumber, CaseYear, CaseMonth from SalesRegister where CarrierName like 'Grange%' order by CaseYear desc, CaseMonth asc”,

SalesRegister 表具有 CarrierName“Grange%”的以下条目:

CaseNumber CaseYear CaseMonth 24000A019467 2020 4 24000A019468 2020 4 24000A014820 2019 1 24000A015307 2019 3 24000A015308 2019 3 24000A015552 2019 4 24000A015728 2019 4 WEB00A671142 2019 4 WEB00A668109 2019 5 24000A016137 2019 6 WEB00A866344 2019 11

您会注意到,2019 年有 9 个 CaseNumbers,2020 年有 2 个 CaseNumbers。没有 2021 年或 2022 年的 CaseNumbers。

但是,当我执行这个问题顶部显示的查询时,我得到以下结果:

运营商 ID 运营商名称 2022 2021 2020 9761 田庄 1 1 3

当我对所需的每一年(2022 年、2021 年和 2020 年)执行以下查询时:

从 SalesRegister 中选择 CaseYear,count(CaseNumber) 其中 CarrierName 像 'Grange%' 和 CaseYear = '2020' 按 CaseYear 分组;

我得到了正确的结果,但是当我使用这个问题顶部查询中显示的“CASE”函数时,我得到了异常/不正确的结果。

我的问题——顶级查询(使用 CASE 函数)如何产生不正确的结果?语法错误吗? GroupBy 错了吗?

我希望收到准确的结果,但查询返回的信息不正确。

mysql count case distinct
© www.soinside.com 2019 - 2024. All rights reserved.