использовать выбор в качестве столбца, где идентификатор равен идентификатору строки SQL - PullRequest
1 голос
/ 28 марта 2019

Я хочу запросить что-то вроде этого.

SELECT 
    COLUMN_ID, 
    (SELECT COUNT() WHERE ID = the current row COLUMN_ID WHERE status = 1) as column2, 
    (SELECT COUNT() WHERE ID = the current row COLUMN_ID WHERE status = 2) as column 3 

Как можно сделать счетчик выбора, используемый в качестве столбца, динамическим в зависимости от значения COLUMN_ID в каждой строке

Пример данных для запроса:

|      Column id      |       status     |
+---------------------+------------------+
|        0001         |         1        |
|        0001         |         2        |
|        0001         |         1        |
|        0002         |         1        |

Пример вывода

|      Column id      |     status 1     |     status 2     |
+---------------------+------------------+------------------+
|        0001         |         2        |        1         |
|        0002         |         1        |        0         |

1 Ответ

2 голосов
/ 28 марта 2019

Вы можете использовать SUM с предложением CASE WHEN

SELECT 
    COLUMN_ID, 
    SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as column2, 
    SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) as column3
FROM TABLE
GROUP BY COLUMN_ID

Другой метод

SELECT DISTINCT
    COLUMN_ID, 
    SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) OVER(PARTITION BY COLUMN_ID) as column2, 
    SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) OVER(PARTITION BY COLUMN_ID) as column3
FROM TABLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...