SQL - Как посчитать количество пустых и непустых столбцов в записи? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть таблица, содержащая 4 столбца, и я хочу создать два новых столбца, которые подсчитывают соответственно

  • количество непустых (Count_1) и
  • количество пробелы / пусто (Счетчик_2)

в первых 4 столбцах.

Другими словами, это мой ввод:

Column1 | Column2 | Column3 | Column4
   X    |    X    |    .    |    Y    
   .    |    .    |    Y    |    X    
   .    |    .    |    .    |    .    

, и это желаемый output:

Column1 | Column2 | Column3 | Column4 | Count_1 | Count_2
   X    |    X    |    .    |    Y    |    3    |    1        
   .    |    .    |    Y    |    X    |    2    |    2    
   .    |    .    |    .    |    .    |    0    |    4   

Есть ли какое-нибудь простое решение, позволяющее получить этот результат за один шаг?

1 Ответ

0 голосов
/ 06 августа 2020

В SQL вы можете использовать case выражения:

select t.*,
       ((case when column1 is not null then 1 else 0 end) +
        (case when column2 is not null then 1 else 0 end) +
        (case when column3 is not null then 1 else 0 end) +
        (case when column4 is not null then 1 else 0 end)
       ) as count_1,
       ((case when column1 is null then 1 else 0 end) +
        (case when column2 is null then 1 else 0 end) +
        (case when column3 is null then 1 else 0 end) +
        (case when column4 is null then 1 else 0 end)
       ) as count_2
from t;
...