Выберите Проданный и непроданный продукт из той же таблицы на SQL Сервере за последний месяц. - PullRequest
0 голосов
/ 04 марта 2020

У меня есть таблица базы данных и я пытаюсь написать запрос, чтобы найти список проданных и не проданных товаров из одной таблицы.

Таблица ниже

enter image description here

Ожидаемый результат

enter image description here

Как мне получить этот результат? Я использую CTE для создания таблицы Tamp со всеми услугами, а затем оставляю соединение, но это дает мне только продукт, проданный в феврале, но я хочу, чтобы весь продукт тоже не продавался.

1 Ответ

1 голос
/ 04 марта 2020

Вы можете перекрестно соединить товары и даты, а затем принести таблицу с left join:

select 
    p.product,
    t.quantity_sold,
    d.yr,
    d.mn
from (select distinct product from mytable) p
cross join (select distinct yr, mn from mytable) d
left join mytable t
    on  t.product = p.product
    and t.yr = d.yr
    and t.mn = d.mn

. Это ставит null s для строк без продажи - предположительно, число c столбец, поэтому вы обычно не хотите записывать в него строку типа 'Not Sold'.

Если существует возможность дублирования (product, yr, mn), вы можете использовать внешнее агрегирование:

select 
    p.product,
    sum(t.quantity_sold) quantity_sold,
    d.yr,
    d.mn
from (select distinct product from mytable) p
cross join (select distinct yr, mn from mytable) d
left join mytable t
    on  t.product = p.product
    and t.yr = d.yr
    and t.mn = d.mn
group by p.product, d.yr, d.mn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...