Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как вывести общую прибыль в этот запрос

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

UNION ALL

SELECT
NULL AS ТорговаяТочкаID,
NULL AS НазваниеТорговойТочки,
NULL AS НаименованиеТовара,
NULL AS ГарантийныйСрок,
NULL AS КоличествоОтгружено,
NULL AS КоличествоПродано,
NULL AS СуммаПродажи,
SUM(pt.Прибыль) AS Прибыль
FROM
ПроданныеТовары pt;

почему то результат получается такой
1 БелКомп Клавиатура HyperX Alloy Origins 1 10 8 3917.28 1485.28 31553.68
1 БелКомп Монитор Samsung 24" 1 2 2 14496.30 13296.30 31553.68
1 БелКомп Мышь Logitech G502 1 10 1 240.00 40.00 31553.68
2 ПкСтор Клавиатура HyperX Alloy Origins 1 2 0 0.00 0.00 31553.68
2 ПкСтор Моноблок Raskat Studio 1 20 10 27013.70 9403.70 31553.68
2 ПкСтор Ноутбук HP Pavilion 2 5 5 19328.40 7328.40 31553.68
где 31553.68 там пишет общая прибль во всех столбцах а мне надо в одном
Голосование за лучший ответ
Mansyr Hilmi Мастер (2489) 2 месяца назад
WITH ОтгруженныеТовары AS (
SELECT
tn.ТорговаяТочкаID,
t.Наименование,
t.ГарантийныйСрок,
SUM(dtn.Количество) AS КоличествоОтгружено
FROM
ТоварнаяНакладная tn
JOIN
ДеталиТоварнойНакладной dtn ON tn.НомерНакладной = dtn.ТоварнаяНакладнаяID
JOIN
Товары t ON dtn.ТоварID = t.ID
WHERE
MONTH(tn.Дата) = 9
AND YEAR(tn.Дата) = 2024
GROUP BY
tn.ТорговаяТочкаID, t.Наименование, t.ГарантийныйСрок
),
ПроданныеТовары AS (
SELECT
s.ТорговаяТочкаID,
t.Наименование,
t.ГарантийныйСрок,
SUM(s.Количество) AS КоличествоПродано,
SUM(s.Сумма) AS СуммаПродажи,
SUM(s.Сумма - (s.Количество * t.ВходнаяЦена)) AS Прибыль
FROM
Сделки s
JOIN
Товары t ON s.ТоварID = t.ID
WHERE
MONTH(s.Дата) = 9
AND YEAR(s.Дата) = 2024
GROUP BY
s.ТорговаяТочкаID, t.Наименование, t.ГарантийныйСрок
)
SELECT
COALESCE(o.ТорговаяТочкаID, pt.ТорговаяТочкаID) AS ТорговаяТочкаID,
tt.Название AS НазваниеТорговойТочки,
COALESCE(o.Наименование, pt.Наименование) AS НаименованиеТовара,
COALESCE(o.ГарантийныйСрок, pt.ГарантийныйСрок) AS ГарантийныйСрок,
COALESCE(o.КоличествоОтгружено, 0) AS КоличествоОтгружено,
COALESCE(pt.КоличествоПродано, 0) AS КоличествоПродано,
COALESCE(pt.СуммаПродажи, 0) AS СуммаПродажи,
COALESCE(pt.Прибыль, 0) AS Прибыль
FROM
ОтгруженныеТовары o
FULL OUTER JOIN
ПроданныеТовары pt ON o.ТорговаяТочкаID = pt.ТорговаяТочкаID AND o.Наименование = pt.Наименование
LEFT JOIN
ТорговыеТочки tt ON COALESCE(o.ТорговаяТочкаID, pt.ТорговаяТочкаID) = tt.ID

UNION ALL

SELECT
NULL AS ТорговаяТочкаID,
NULL AS НазваниеТорговойТочки,
NULL AS НаименованиеТовара,
NULL AS ГарантийныйСрок,
NULL AS КоличествоОтгружено,
NULL AS КоличествоПродано,
NULL AS СуммаПродажи,
SUM(pt.Прибыль) AS ОбщаяПрибыль
FROM
ПроданныеТовары pt;
Артём Аксёнов Мастер (1998) 2 месяца назад
 WITH ОтгруженныеТовары AS (  
SELECT
tn.ТорговаяТочкаID,
t.Наименование,
t.ГарантийныйСрок,
SUM(dtn.Количество) AS КоличествоОтгружено
FROM
ТоварнаяНакладная tn
JOIN
ДеталиТоварнойНакладной dtn ON tn.НомерНакладной = dtn.ТоварнаяНакладнаяID
JOIN
Товары t ON dtn.ТоварID = t.ID
WHERE
MONTH(tn.Дата) = 9
AND YEAR(tn.Дата) = 2024
GROUP BY
tn.ТорговаяТочкаID, t.Наименование, t.ГарантийныйСрок
),
ПроданныеТовары AS (
SELECT
s.ТорговаяТочкаID,
t.Наименование,
t.ГарантийныйСрок,
SUM(s.Количество) AS КоличествоПродано,
SUM(s.Сумма) AS СуммаПродажи,
SUM(s.Сумма - (s.Количество * t.ВходнаяЦена)) AS Прибыль
FROM
Сделки s
JOIN
Товары t ON s.ТоварID = t.ID
WHERE
MONTH(s.Дата) = 9
AND YEAR(s.Дата) = 2024
GROUP BY
s.ТорговаяТочкаID, t.Наименование, t.ГарантийныйСрок
),
ОбщаяПрибыль AS (
SELECT SUM(Прибыль) AS ОбщаяПрибыль
FROM ПроданныеТовары
)
SELECT
COALESCE(o.ТорговаяТочкаID, pt.ТорговаяТочкаID) AS ТорговаяТочкаID,
tt.Название AS НазваниеТорговойТочки,
COALESCE(o.Наименование, pt.Наименование) AS НаименованиеТовара,
COALESCE(o.ГарантийныйСрок, pt.ГарантийныйСрок) AS ГарантийныйСрок,
COALESCE(o.КоличествоОтгружено, 0) AS КоличествоОтгружено,
COALESCE(pt.КоличествоПродано, 0) AS КоличествоПродано,
COALESCE(pt.СуммаПродажи, 0) AS СуммаПродажи,
COALESCE(pt.Прибыль, 0) AS Прибыль,
(SELECT ОбщаяПрибыль FROM ОбщаяПрибыль) AS ОбщаяПрибыль
FROM
ОтгруженныеТовары o
FULL OUTER JOIN
ПроданныеТовары pt ON o.ТорговаяТочкаID = pt.ТорговаяТочкаID AND o.Наименование = pt.Наименование
LEFT JOIN
ТорговыеТочки tt ON COALESCE(o.ТорговаяТочкаID, pt.ТорговаяТочкаID) = tt.ID;
ITBRУченик (19) 2 месяца назад
результат не поменялся мне сегодня превышено колво фото вот вам скрин по ссылке https://imgur.com/a/cAEJF18
Артём Аксёнов Мастер (1998) ITBR,
Похожие вопросы