Как показать количество в отдельных столбцах в SQL - PullRequest
0 голосов
/ 17 апреля 2020

Я только начинаю использовать SQL и пытаюсь все выяснить. Вот начало моего кода:

SELECT 
Count(DL_Service_ID) AS Group,
Count(DL_Service_ID) AS Individual,
COMPLETED_DATE
FROM DAILY_LOG_DATA 
WHERE Group = '8369' AND Individual = '8219'
AND BETWEEN '2020-04-05' AND '2020-04-11';

Что я пытаюсь выполнить sh - это подсчет количества услуг (8369 и 8219) из столбца DL_service_ID с дат 2020-20-05 и 2020-04-11 (COMPLETED_DATE). Я хотел бы показать результаты в отдельных столбцах (Индивидуальный), который равен 8219, и (Группа), который равен 8369. Даты показаны следующим образом: 2020-04-07 11:14:19 в столбце COMPLETED_DATE, не уверен, что это меняет что угодно. Я также использую DBeaver.

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Попробуйте что-то вроде:

SELECT COMPLETED_DATE,
       sum( case when DL_Service_ID = '8369' then 1 else 0 end ) AS Group_cnt,
       sum( case when DL_Service_ID = '8219' then 1 else 0 end ) as Individual_cnt
FROM DAILY_LOG_DATA 
WHERE COMPLETED_DATE BETWEEN '2020-04-05' AND '2020-04-11'
GROUP BY COMPLETED_DATE;
0 голосов
/ 17 апреля 2020
SELECT Count(DL_Service_ID) AS Individual_cnt, COMPLETED_DATE 
FROM DAILY_LOG_DATA
WHERE DL_Service_ID = '8219'
AND COMPLETED_DATE BETWEEN '2020-04-05' AND '2020-04-11

Поэтому я попытался упростить код, просто чтобы избавиться от своих ошибок. Но я все еще получаю ошибки. На этом я получаю: SQL Ошибка [937] [S1000]: [Oracle] [ODBC] [Ora] ORA-00937: не групповая функция для одной группы.

0 голосов
/ 17 апреля 2020
FROM DAILY_LOG_DATA WHERE DL_Service_ID = '8369'
AND COMPLETED_DATE BETWEEN '2020-04-05' AND '2020-04-11'
GROUP BY DL_Service_ID,COMPLETED_DATE
UNION
SELECT DL_Service_ID AS Individual, Count(DL_Service_ID) AS "Group", COMPLETED_DATE 
FROM DAILY_LOG_DATA WHERE DL_Service_ID = '8219'
AND COMPLETED_DATE BETWEEN '2020-04-05' AND '2020-04-11'
GROUP BY DL_Service_ID,COMPLETED_DATE

enter image description here

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