计数大小写语句 - 当一个字段大于另一个字段时



我正在尝试确定特定错误在我的数据库中的普遍程度。我正在将一个字段与另一个字段进行比较,当该字段大于另一个字段时,我希望它对其进行计数。我也通过不同的语句对其进行分组。此查询的目的是确定当一个价格字段大于另一个价格字段时,我的数据库中存在哪些案例。

导致问题的查询部分是 select 语句中的"COUNT(当 p.IMAP> p.MSRP = 1 ELSE NULL END("。我在它周围放了两个小星星,希望这有助于突出它的位置。

select b.brandName, b.BrandCode, p.ProductVendorStockNumber, **COUNT(Case When p.IMAP > p.MSRP = 1 ELSE NULL END) as 'Count'**
from products p
join brands b on p.brandID = b.brandID 
where b.assignedTo = 'Steve' and p.IMAP > p.MSRP and status = 1
GROUP BY b.BrandName

对于计数值 您可以使用总和而不是计数,当条件为真时加 1,在假时加 0

在用于聚合的sql中,选择不在聚合函数中且未在分组依据中提及的列的选择已被弃用,在最新版本的mmysql中是不允许的,对于旧版本,这些值的结果是不可预处理的,因此您应该在分组中,然后选择中没有聚合函数的列,例如:

select b.brandName
, b.BrandCode
, p.ProductVendorStockNumber
,sum(Case When p.IMAP > p.MSRP THEN 1 ELSE 0  END) as my_count
from products p
join brands b on p.brandID = b.brandID 
where b.assignedTo = 'Steve' and p.IMAP > p.MSRP and status = 1
GROUP BY b.BrandName, b.BrandCode,  p.ProductVendorStockNumber

或者使用不带聚合的行和右侧聚合行上的联接来筛选结果

最新更新