-5

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

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

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

我怎样才能做到这一点?

4

2 回答 2

0

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

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

正如一位评论者指出的那样,您不能对字母求和,但您可以检查一个值是否是您要查找的值,然后将这种出现计数为 1 或 0。最后将这些值相加并返回总和。

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;

对于您的示例行,这将返回:

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

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

于 2019-03-27T15:31:10.977 回答
0

我对此进行了测试,感谢帮助

 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 

其他解决方案...

于 2019-04-03T19:51:33.350 回答