簡體   English   中英

如何獲取sql中每一行具有相同值的列數

[英]how to get the count of columns with same value for each row in sql

例如:表

id a  b  c  d 
1  Y  Y  Y  N
2  N  Y  Y  N

我需要的是

id a  b  c  d  e
1  Y  Y  Y  N  3
2  N  Y  Y  N  2

SQL 函數通常跨行聚合數據,而不是跨列,因此我認為沒有通用的方法可以做到這一點。 但是,對於此用例,您可以使用一系列case表達式:

SELECT id, a, b, c, d,
       CASE a WHEN 'Y' THEN 1 ELSE 0 END + 
       CASE b WHEN 'Y' THEN 1 ELSE 0 END + 
       CASE c WHEN 'Y' THEN 1 ELSE 0 END + 
       CASE d WHEN 'Y' THEN 1 ELSE 0 END AS e
FROM   mytable
UPDATE  mytable SET e=
       CASE a WHEN 'Y' THEN 1 ELSE 0 END + 
       CASE b WHEN 'Y' THEN 1 ELSE 0 END + 
       CASE c WHEN 'Y' THEN 1 ELSE 0 END + 
       CASE d WHEN 'Y' THEN 1 ELSE 0 END 
FROM  

暫無
暫無

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

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