簡體   English   中英

計數案例陳述-當一個領域大於另一個領域時

[英]Count Case Statement - When One Field Greater Than Another

我正在嘗試確定數據庫中特定錯誤的普遍程度。 我正在將一個字段與另一個字段進行比較,當該字段大於另一個字段時,我希望它對其進行計數。 我也通過不同的陳述將其分組。 該查詢的目的是確定一個價格字段大於另一個價格字段時我的數據庫中有哪些案例。

導致問題的查詢部分是select語句中的“ COUNT(CASE,當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

對於計數值,可以在條件為true時使用sum而不是count加1,在條件為false時為0

在用於聚合的sql中,不建議使用不用於聚合功能且在group by中未提及的列的選擇,在最新版本的mmysql中不允許使用,對於較舊的版本,這些值的結果不可預測,因此應在group by中然后在未選擇聚合的列中選擇例如:

    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

或使用沒有聚合的行和右側聚合行上的聯接過濾結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM