Как выбрать count () внутри оператора select - PullRequest
0 голосов
/ 18 сентября 2018

После нескольких часов попыток, я наконец пришел к соглашению, мне нужна помощь.

Я пытаюсь выбрать строку из Таблицы A и затем посчитать количество ячеек в этой строке, которые не являются пустыми.

Я знаю, что это неправильно, но оно говорит о моем намерении

SELECT COUNT(colName), 
    (SELECT (column1, column2, column3, column4) AS colName 
     FROM TableA 
     WHERE location= location) 
AS colCount
FROM TableA  
WHERE colName IS NOT NULL  

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018
select location,
    sum(case when column1 is not null then 1 else 0 end) +
    sum(case when column2 is not null then 1 else 0 end) +
    sum(case when column3 is not null then 1 else 0 end) +
    sum(case when column4 is not null then 1 else 0 end) cnt
from TableA
group by location
0 голосов
/ 18 сентября 2018

SQL DEMO

SELECT id, 
       (`column1` IS NOT NULL) + 
       (`column2` IS NOT NULL) + 
       (`column3` IS NOT NULL) as notnull
FROM Table1
0 голосов
/ 18 сентября 2018

Может быть более скользкий путь, но грубым путем будет:

SELECT
   location, 
    CASE WHEN column1 IS NULL THEN 0 ELSE 1 END + 
    CASE WHEN column2 IS NULL THEN 0 ELSE 1 END + 
    CASE WHEN column3 IS NULL THEN 0 ELSE 1 END + 
    CASE WHEN column4 IS NULL THEN 0 ELSE 1 END
   AS colCount 
 FROM TableA 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...