Как вернуть количество полей с заданным значением в записи? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть таблица базы данных со следующими полями:

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

Для данной записи (строки) я бы хотел посчитать количество полей со значением A. Например, в приведенном выше примере есть два поля со значением A, поэтому ожидаемый результат будет: 2

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Я проверяю это работает Спасибо за помощь .

 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 

Другое решение ...

0 голосов
/ 27 марта 2019

Я пытаюсь ответить на вопрос с точки зрения базы данных .

У вас есть таблица с одной или несколькими строками, и каждая строка в четырех столбцах имеет либо '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 для каждой строки.

...