Вопрос о населении и структуре результатов CREATE TABLE - PullRequest
0 голосов
/ 25 апреля 2019

Это действительно простой вопрос, но я очень мало занимаюсь программированием, и поэтому я просто не уверен, какую именно терминологию я должен пытаться исследовать.По сути, я пытаюсь сделать SQL-запрос, чтобы вернуть результаты через CREATE TABLE.

У меня есть база данных, которая содержит только два поля: модели автомобилей и годы.Например, в нем перечислены Соглашения 2010–2019 годов, Civics за 2015–2019 годы и Пилоты на 2017–2019 годы (всего 18 записей).

Мне нужна простая таблица, которая создает столбцы для ВСЕХ лет - в данном случае 2010до 2019 года - и ряды для ВСЕХ моделей (Accords, Civics, Pilots).В этом случае это будет таблица из 10 столбцов и 3 строк.Это должно быть заполнено "Да" или "Нет" в зависимости от того, есть ли соответствующая запись для этой ячейки.

Таким образом, было бы "Да" во всех клетках рядом с Аккордом.Но было бы "Нет" в пилотных ячейках для столбцов 2010-2016;«Да» в остальном.

Может ли кто-нибудь указать мне, где я могу обучиться этой задаче?

Большое спасибо, Джон

1 Ответ

0 голосов
/ 25 апреля 2019

Вы можете использовать cross join для генерации строк и left join для получения желаемых результатов.Итак:

select m.model, y.year,
       (case when t.model is not null then 'Y' else 'N' end) as flag
from (select distinct model from t) m cross join
     (select distinct year from t) y left join
     t
     on t.model = m.model and t.year = y.year;

Примечание. Предполагается, что в таблице указаны все модели и все годы, которые вас интересуют.

...