У меня есть база данных, где у нас есть список заданий. Каждая работа находится во многих местах. Пользователь может подать заявку на работу в любом месте. Они могут применяться отдельно к одной и той же работе в разных местах. Каждое приложение задания имеет 4 статуса по мере их продвижения: от 1. Новый до 4. Закрыт.SQL Aggregate Query - Count Nulls
Мне нужно запустить SQL-запрос, чтобы представить сводку каждого задания, в каждом месте и для каждого состояния - количество соответствующих приложений. Так, например
+ ---- + -------- + ------ + ----- +
| Job | Location | Status | Count |
+ ---- + -------- + ------ + ----- +
| 1000 | 1 | 1 | 7 |
| 1000 | 1 | 2 | 0 |
| 1000 | 1 | 3 | 1 |
| 1000 | 1 | 4 | 1 |
| 1000 | 2 | 1 | 4 |
| 1000 | 2 | 2 | 2 |
| 1000 | 2 | 3 | 0 |
| 1000 | 2 | 4 | 8 |
+ ---- + -------- + ------ + ----- +
Кроме того, я в идеале стремится подвести статус 4 подсчитывает вместе в общую сумму в том же списке.
Это SQL заявление я написал до сих пор: -
SELECT B.JobID, B.LocationID, B.ApplicationStatusID, COUNT(B.JobID) AS CountOfResults
FROM Job AS A
JOIN JobApplication AS B ON A.JobID = B.JobID
LEFT JOIN JobApplicationStatus AS C ON B.ApplicationStatusID = C.JobApplicationStatusID
WHERE A.BrandID = 1
GROUP BY B.JobID, B.LocationID, B.ApplicationStatusID
Он работает, бар две вещи: -
- Я не уверен, как получить общее количество (или я мог сделать это на стороне сервера позже)
- это не показывает результаты, где отсчет 0.
может кто-нибудь посоветовать о том, как получить 4 статуса для каждой работы в каждом месте, даже если это 0? Я видел различные советы по другим темам о левом соединении, но я пока не добился успеха.
Заранее благодарен!
Edit - Отображение работы Пример таблицы данных
Предполагая Job Locations таблица адресов с идентификационными номерами 5, 6 и 7.
Job
+ ------ + ---------- + ------------------- +
| Job ID | Job Title | Description |
+ ------ + ---------- + ------------------- +
| 1 | Developer | My Nice Description |
| 2 | Full Stack | Another Description |
+ ------ + ---------- + ------------------- +
Job Location
+ -- + ------ + ----------- +
| ID | Job ID | Location ID |
+ -- + ------ + ----------- +
| 1 | 1 | 5 |
| 2 | 1 | 6 |
| 3 | 2 | 5 |
| 4 | 2 | 6 |
| 5 | 2 | 7 |
+ -- + ------ + ----------- +
Job Application
+ -- + ------- + ------ + ----------- + --------------------- +
| ID | User ID | Job ID | Location ID | Application Status ID |
+ -- + ------- + ------ + ----------- + --------------------- +
| 1 | 1 | 1 | 5 | 1 |
| 2 | 1 | 1 | 6 | 2 |
| 3 | 2 | 1 | 5 | 1 |
| 4 | 2 | 2 | 7 | 4 |
+ -- + ------- + ------ + ----------- + --------------------- +
В таблице состояния приложения работы: -
Пользователь 1 подает заявку на Job 1 at Location 5, а их статус приложения - 1.
пользователь 1 также применяется для задания 1 на участке 6, и их статус приложения 2.
пользователь 2 применяется для задания 1 на участке 5 и их статус приложения 1.
Пользователь 2 также применяется для задания 2 на участке 7 и их статуса приложения 4.
То, что я ищу здесь, будет запрос, чтобы вернуться в следующем: -
Result
+ --- + -------- + ------ + ----- +
| Job | Location | Status | Count |
+ --- + -------- + ------ + ----- +
| 1 | 5 | 1 | 2 |
| 1 | 5 | 2 | 0 |
| 1 | 5 | 3 | 0 |
| 1 | 5 | 4 | 0 |
| 1 | 6 | 1 | 0 |
| 1 | 6 | 2 | 1 |
| 1 | 6 | 3 | 0 |
| 1 | 6 | 4 | 0 |
+ --- + -------- + ------ + ----- +
И так далее, должны отображаться 0. Счетчик - это количество заявок на работу в этом статусном номере. Существует 4 номера статуса, которые заданы в таблице соединений, называемой JobApplicationStatus.
, какая версия SQL-сервера вы используете? также покажите ожидаемый результат. –
Только что обновлено, чтобы показать ожидаемый результат выше. SQL Server 2014. –
где вы хотите показать общую сумму? Должен ли быть столбцом? –