SQL несколько счетов с несколькими утверждениями выигрывают разные столбцы - PullRequest
0 голосов
/ 20 апреля 2020

Я ищу способ получить несколько счетов из таблицы, используя один запрос. Я хочу получить сумму для каждого уровня USER_level (есть только 3), который использовал указанный терминал c и где предоставлен статус

Таблица

CARD    TERMINAL        TRANSIT_DATE        STATUS  STR_DIRECTION   USER_Level
12      D1      2019-12-02 07:12:30.000     Granted Exit            level1
10      D1      2019-12-02 13:22:29.000     Granted Exit            level3
11      D2      2019-12-02 17:09:05.000     Granted Exit            level1
17      D2      2019-12-03 09:58:22.000     deny    Entry           level2
19      D3      2019-12-03 12:17:29.000     Granted Entry           level2
32      D3      2019-12-03 13:48:33.000     Granted Exit            level1
20      D2      2019-12-04 10:36:22.000     Granted Exit            level3
11      D3      2019-12-07 22:01:41.000     Granted Exit            level1
15      D2      2019-12-09 11:12:16.000     Granted Exit            level2
14      D3      2019-12-10 06:32:22.000     Granted Entry           level2
12      D2      2019-12-10 10:31:26.000     Granted Exit            level1
39      D2      2019-12-11 06:42:08.000     Granted Exit            level3
12      D2      2019-12-11 09:32:13.000     Granted Exit            level1
11      D3      2019-12-11 12:44:36.000     Granted Exit            level2
56      D2      2019-12-12 06:48:33.000     Granted Exit            level2
78      D2      2019-12-12 12:03:23.000     Granted Entry           level1
66      D3      2019-12-10 12:16:54.000     Granted Exit            level3
22      D2      2019-12-09 16:02:02.000     Granted Exit            level1

Пример будет выглядеть следующим образом этот результат

TERMINAL    level 1  level 2 level 3
D1          1               1 
D2          6        2      2
D3          2        3      1
...

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете попробовать что-то вроде этого, обратите внимание, что если присутствует больше терминалов, вы должны добавить их в запрос.

select terminal, 
       sum(case when user_level = 'level1' then 1 else 0 end) as level1, 
       sum(case when user_level = 'level2' then 1 else 0 end) as level2,
       sum(case when user_level = 'level3' then 1 else 0 end) as level3
from yourTable
    where status = 'Granted' 
      and transit_date > your_initial_date
group by terminal

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...