如何 return 记录中具有给定值的字段的计数?

How to return a count of fields with a given value in a record?

我有一个包含以下字段的数据库 table:

          ---------------------  
FIELDS :  | H1 | H2 | H3 | H4  
          ---------------------  
VALUES :  | A  | B  | A  | C   
          ---------------------  

对于给定的记录(行),我想计算值为 A 的字段数。例如,在上面,有两个值为 A 的字段,因此预期结果将是:2

我怎样才能做到这一点?

我试图从数据库的角度回答问题

您有一个包含一行或多行的 table,并且每一行在四列中都有一个 'A' 或其他内容。对于给定的行(或许多行),您想要获取其中包含 'A' 的列数。

正如一位评论者所指出的,您不能对字母求和,但您可以检查某个值是否是您要查找的值,然后将此事件计为 1 或 0。最后求和 这些 值和return 总和。

SELECT (CASE H1 WHEN 'A' THEN 1 ELSE 0 END) +
       (CASE H2 WHEN 'A' THEN 1 ELSE 0 END) +
       (CASE H3 WHEN 'A' THEN 1 ELSE 0 END) +
       (CASE H4 WHEN 'A' THEN 1 ELSE 0 END) AS number_of_a
FROM   name_of_your_table;

对于您的示例行,这将 return:

NUMBER_OF_A
===========
          2

如果您有不止一行,您将获得每一行的 As 数。

我测试了它的工作原理感谢您的帮助

 SELECT count(H1) + count(H2) + count(H3) + count(H4) + count(H5) + 
count(H6) + count(H7) + count(H8) as TOT
from Table T
where T.H1 = 'A' or T.H2 = 'A' or T.H3 = 'A' or T.H4 = 'A' 
or T.H5 = 'A' or T.H6 = 'A' or T.H7 = 'A' or T.H8 = 'A'
group by T.ID
order by 1 DESC 

其他解决方案...