Запрос SQL Server с каждой строкой - PullRequest
0 голосов
/ 06 мая 2018

У меня есть две таблицы, одна содержит список месяцев, а вторая содержит данные о продажах за эти месяцы. Но в течение нескольких месяцев нет продаж, поэтому эти строки не создаются. то есть таблица 1 содержит январь-декабрь. Таблица 2 содержит данные о продажах за январь, продажи за февраль, но за март продаж нет, поэтому в этой строке не существует, апрель с продажами.

Мое требование: мне нужно было избавиться от продаж за январь, от продаж за февраль, за марш с продажей, за апрель с продаж.

Как мне создать запрос для этого?

Ответы [ 4 ]

0 голосов
/ 06 мая 2018

Вы можете сделать это с помощью LEFT OUTER JOIN следующим образом:

SELECT 
    MONTH, SUM(ISNULL(SALES, 0)) 
FROM 
    MONTHS AS M 
LEFT OUTER JOIN 
    SALES_TABLE AS S ON M.<PRIMARY KEY> = S.<FOREIGN KEY> 
GROUP BY 
    M.<PRIMARY KEY>
0 голосов
/ 06 мая 2018

Использовать левое внешнее соединение

table1 left outer join
table2 on table1.month = table2.month
0 голосов
/ 06 мая 2018

Если у вас нет продаж, то не будет идентификаторов, соответствующих месяцам продаж, поэтому строка не будет отображаться. Если вы хотите, чтобы строка в любом случае появлялась, вы должны использовать левое соединение.

select *
from month m left join sales s on m.id_month = s.id_month

Надеюсь, это поможет!

0 голосов
/ 06 мая 2018

Если вы используете обычный JOIN, строка без соответствия будет отброшена.

То, что вы хотите, это LEFT JOIN, он сохранит строку без соответствующей строки во второй таблице (у вас будет выходной результат, например FEB null)

Подробнее о LEFT JOIN здесь https://www.w3schools.com/sql/sql_join_left.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...