#sql #sql-server
#sql #sql-сервер
Вопрос:
У меня есть две таблицы: таблица ШАБЛОНОВ с уникальными идентификаторами шаблонов электронной почты и именем
Идентификатор шаблона | имя шаблона |
---|---|
1 | Apple |
2 | река |
3 | Нулевой |
4 | телефон |
5 | дерево |
и таблица СОСТОЯНИЯ, в которой отображаются отправленные электронные письма, ожидающие или неудачные. Он также имеет идентификатор шаблона, поэтому я знаю, какой шаблон электронной почты был использован
status_type | Идентификатор шаблона |
---|---|
доставлен | 1 |
рассматриваемый | 1 |
провалившийся | 1 |
доставлен | 1 |
доставлен | 2 |
Я хочу создать новую таблицу, которая показывает:
- уникальный идентификатор шаблона
- количество типов статуса на идентификатор шаблона (только количество, если статус = «доставлен»)
- тип шаблона (возвращает «fra», если имя шаблона равно NULL, или «em»)
Комментарии:
1. Примеры данных великолепны, но вам также нужно указать ожидаемый результат.
Ответ №1:
Вы можете использовать inline query
, как показано ниже.
select template_id, (select count(*) from Status s where s.Template_id=t.template_id AND s.status_type='delivered') deliveredcount, case when t.template_name is null then 'fra' else 'em' end as template_type from template t
Или попробуйте ниже window function
с distinct
помощью .
select distinct t.template_id, count (s.template_Id) over (partition by t.template_id) deliveredcount, case when t.template_name is null then 'fra' else 'em' end as template_type from template t left join Status s on t.template_id=s.template_Id AND s.status_type='delivered'