Транспонировать строки-столбцы и Подсчет количества экземпляров на столбец в SQLITE - PullRequest
0 голосов
/ 26 октября 2018

У меня есть таблица, структурированная как

|creationDate|rule.      |position| 
|01.01.2018  |squid:S1132|12      |
|01.01.2018  |squid:S1132|14      |
|01.01.2018  |squid:S1132|19      |
|01.01.2018  |squid:S1121|12      |
|01.01.2018  |squid:S1121|14      |
|01.02.2018  |squid:S1130|12      |

Моя цель - подсчитать количество правил за дату, сообщив о них в разных столбцах.

|creationDate| S1132      | S1121 | S1130 |
|01.01.2018  | 3          |2      | 0     |
|01.02.2018  | 0          |0      | 1     |

У меня всего 180 правил ... Возможно ли сделать это за один запрос?

Выполнение этого запроса

select creationDate , count("creationDate") as "squid:S1132" 
from SONAR_ISSUES 
where rule='squid:S1132' group by creationDate

Я получаю этот результат

|creationDate|S1132  | 
|01.01.2018  |3      |

Я могу сделать аналогичный запрос для каждого правила, но затем я не могу объединить их ...

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

попробуйте использовать случай, когда

select creationDate ,count(case when rule='squid:S1132' then 1 end) as S1132,
count(case when rule='squid:S1121' then 1 end) as S1121,
count(case when rule='squid:S1130' then 1 end) as S1130    
from SONAR_ISSUES 
group by 
creationDate
0 голосов
/ 26 октября 2018

Вы можете попробовать использовать условное агрегирование

DEMO

select 
   creationDate, 
   count(case when rule='squid:S1132' then "creationDate" end) as "squid:S1132",
   count(case when rule='squid:S1121' then "creationDate" end) as "squid:S1121" ,
   count(case when rule='squid:S1130' then "creationDate" end) as "squid:S1130" 
from SONAR_ISSUES 
group by creationDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...