WITH ОтгруженныеТовары AS (
SELECT
tn.ТорговаяТочкаID,
t.Наименование,
t.ГарантийныйСрок,
dtn.Количество,
tn.Дата
FROM
ТоварнаяНакладная tn
JOIN
ДеталиТоварнойНакладной dtn ON tn.НомерНакладной = dtn.ТоварнаяНакладнаяID
JOIN
Товары t ON dtn.ТоварID = t.ID
WHERE
MONTH(tn.Дата) = 9
AND YEAR(tn.Дата) = 2024
),
ПроданныеТовары AS (
SELECT
s.ТорговаяТочкаID,
t.Наименование,
t.ГарантийныйСрок,
s.Количество,
s.Сумма,
(s.Сумма - (s.Количество * t.ВходнаяЦена)) AS Прибыль
FROM
Сделки s
JOIN
Товары t ON s.ТоварID = t.ID
WHERE
MONTH(s.Дата) = 9
AND YEAR(s.Дата) = 2024
)
SELECT
o.ТорговаяТочкаID,
tt.Название AS НазваниеТорговойТочки,
o.Наименование AS ОтгруженныеТовары,
o.ГарантийныйСрок AS СортТовара,
o.Количество AS КоличествоОтгружено,
pt.Количество AS КоличествоПродано,
pt.Сумма AS СуммаПродажи,
COALESCE(pt.Прибыль, 0) AS Прибыль -- Используем COALESCE для замены NULL на 0
FROM
ОтгруженныеТовары o
LEFT JOIN
ПроданныеТовары pt ON o.ТорговаяТочкаID = pt.ТорговаяТочкаID AND o.Наименование = pt.Наименование
JOIN
ТорговыеТочки tt ON o.ТорговаяТочкаID = tt.ID
ORDER BY
o.ТорговаяТочкаID, o.Наименование;
Продажи фиксируются в таблице "Сделки", где записывается количество проданных товаров и сумма.
Прибыль можно считать через запросы, опираясь на проданные товары и их закупочные цены из таблицы "Товары
вот мои таблицы ДеталиТоварнойНакладной ТоварнаяНакладная
Товары
таблица сделки
результат запроса
объясните и помогите почему не правильно выдает результат