繁体   English   中英

在多列中出现特定字符串的计数

[英]Count of a occurrence of specific string in multiple columns

我有一张如下表:

Auction_Date Auction_No   L1_Status   L2_Status  L3_Status 
2022-08-01   AUC00123     Acc         Rej        Acc
2022-08-01   AUC00122     Rej         Acc        Acc
2022-08-02   AUC00223     Acc         Acc        Acc
2022-08-12   AUC00221     Rej         Rej        Acc

现在我想要另一列,当 Status = 'Acc' 时,将显示L1_StatusL2_StatusL3_Status的计数。 所以结果表就像

Auction_Date Auction_No   L1_Status   L2_Status  L3_Status   Count_Acc
2022-08-01   AUC00123     Acc         Rej        Acc             2
2022-08-01   AUC00122     Rej         Acc        Acc             2
2022-08-02   AUC00223     Acc         Acc        Acc             3
2022-08-12   AUC00221     Rej         Rej        Acc             1

我知道一种方法可能是UNPIVOT最后 3 个字段,然后获取Acc计数。 然后这个UNPIVOT表必须在GROUP BY Auction_No之后与上表连接才能获得Count_Acc字段。

或者

SELECT Auction_No, SUM(CASE WHEN L1_Status = 'Acc' THEN 1 ELSE 0 END) +
                   SUM(CASE WHEN L2_Status = 'Acc' THEN 1 ELSE 0 END) +
                   SUM(CASE WHEN L3_Status = 'Acc' THEN 1 ELSE 0 END) AS Count_Acc
FROM Table GROUP BY Auction_No

有没有更好的方法?

你的方法已经很好了,但我有一个更短的方法:)

SELECT Auction_No
    , SUM(IIF(L1_Status='Acc',1,0) + IIF(L1_Status='Acc',1,0) + IIF(L1_Status = 'Acc',1,0)) as Count_Acc                   
FROM Table GROUP BY Auction_No

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM