Исключить пустой столбец из выбора - PullRequest
0 голосов
/ 31 октября 2019

У меня есть команда выбора:

select 
sum(case when co_dim_tempo = 20190901 then 1 else 0 end) "1" , 
sum(case when co_dim_tempo = 20190902 then 1 else 0 end) "2" , 
sum(case when co_dim_tempo = 20190903 then 1 else 0 end) "3" , 
sum(case when co_dim_tempo = 20190904 then 1 else 0 end) "4" , 
sum(case when co_dim_tempo = 20190905 then 1 else 0 end) "5" , 
sum(case when co_dim_tempo = 20190906 then 1 else 0 end) "6"
from table

Результат:

 1 |  2 |  3 |  4 |  5 |  6
 5 |  0 |  8 |  7 |  0 |  3

Мне нравится исключать столбцы 2 and 5, потому что результат равен нулю, например:

 1 |  3 |  4 |  6
 5 |  8 |  7 |  3

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Вы можете получить COUNT из приведенного ниже запроса.

Класс HAVING удаляет значения 0 из результата.

Если мы хотим использовать функции String, такие как RIGHT, тонам нужно CAST тип данных от co_dim_tempo до VARCHAR ОТ BIGINT.

SELECT RIGHT(CAST(co_dim_tempo AS VARCHAR),1) co_dim_tempo,
    SUM(*) NoOfOccurences
FROM YourTable
GROUP BY RIGHT(CAST(co_dim_tempo AS VARCHAR),1)
HAVING SUM(1) > 0

Кроме того, ожидаемый результат может быть возможен к PIVOT или Dynamic SQL Query.

0 голосов
/ 31 октября 2019

ВЫБРАТЬ ПРАВО (CAST (co_dim_tempo AS VARCHAR), 1) co_dim_tempo SUM (*) NOOFOCCURENCES GROUP ПО ПРАВОЙ (CAST (co_dim_tempo AS VARCHAR), 1) СУММА (1)> 0;

...