У меня есть таблица, назовем ее Records, где соответствующие данные организованы следующим образом:
| Employee | SubmissionDate | FirstReviewDate | SecondReviewDate |
Anne 2017-10-02 2017-10-03 2017-10-10
Bernard 2017-10-03 2017-10-05 2017-10-10
Charlene 2017-10-06 2017-10-09 2017-10-09
Danielle 2017-10-02 2017-10-03 2017-10-09
Anne 2017-10-03 2017-10-03 2017-10-09
Каждый раз, когда сотрудник делает представление, добавляется новая запись с SubmissionDate. Позже запись редактируется, чтобы включить в нее первую и вторую проверки.
У меня также есть таблица календаря под названием «Календарь» с полем «Дата», в котором есть даты на каждый день в этом году. Что я хотел бы сделать, так это связать даты SubmissionDate, FirstReviewDate и SecondReview с Calendar.TheDate, чтобы я мог подсчитывать все три поля для любого заданного дня.
Я пробовал следующий код:
SELECT Employee,
Count(SubmissionDate) AS "Submissions",
Count(FirstReviewDate) AS "First Reviews",
Count(SecondReviewDate) AS "Second Reviews"
FROM Records
LEFT JOIN Calendar ON Records.SubmissionDate = Calendar.TheDate
AND Records.FirstReviewDate = Calendar.TheDate
AND Records.SecondReviewDate = Calendar.TheDate
WHERE TheDate = '2017-10-11'
Все варианты этого, которые я пробовал, ничего не выводят:
| Employee | Submissions | First Reviews | Second Reviews |
Мой желаемый код будет выглядеть так:
SELECT Employee,
Count(SubmissionDate),
Count(FirstReviewDate),
Count(SecondReviewDate)
FROM ???
WHERE TheDate = '2017-10-03'
куда ??? было бы правильным объединением. Используя желаемый блок кода (включая предложение where), желаемый вывод будет таким для предоставленного примера данных:
| Employee | Submissions | First Reviews | Second Reviews |
Anne 1 2 0
Bernard 1 0 0
Charlene 0 0 0
Danielle 0 1 0
Я не уверен, как это сделать. Я читал много ресурсов о таблицах календаря, но примеры всегда включают объединение таблиц, каждая из которых имеет один идентификатор даты. Моя проблема в том, что у меня есть одна таблица с тремя полями даты, которые необходимо связать с Calendar.TheDate.
Я упорядочиваю свои данные таким образом, чтобы данные можно было визуализировать в Qlik Sense. Я хотел бы, чтобы пользователи могли выбирать TheDate на панели фильтров и объединять все три поля для указанной даты (по сути, идентично предложению WHERE в моем примере кода).