我有一个包含以下字段的数据库表:
---------------------
FIELDS : | H1 | H2 | H3 | H4
---------------------
VALUES : | A | B | A | C
---------------------
对于给定的记录(行),我想计算值为A
的字段数。例如,在上面的示例中,有两个值为A
的字段,因此预期结果为:2
我该如何实现?
答案 0 :(得分: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的数量。
答案 1 :(得分: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
其他解决方案...