как получить количество столбцов с одинаковым значением для каждой строки в sql - PullRequest
1 голос
/ 16 марта 2020

например: таблица

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

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

SQL функции обычно агрегируют данные по строкам, а не по столбцам, поэтому я не думаю, что есть общий c способ сделать это. Однако для этого варианта использования вы можете использовать серию 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
0 голосов
/ 16 марта 2020
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  
...