Проблемы с суммами - не указана индивидуальная сумма строки, отображается общая сумма по каждой строке - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь объединить два отчета, чтобы найти общую сумму фрахта, веса и доллара на основе соответствующего номера клиента, номера заказа и кода продукта.Первоначально я суммировал груз для каждого клиента: номер, номер заказа, код продукта, вес и сумма в долларах.Но по какой-то причине он повторяет сумму для номера клиента / номера заказа / кода продукта для каждого веса и суммы в долларах, и я не могу понять, почему.

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

    SELECT a.cust, a.order_num, a.prod_code, a.WEIGHT as weight, a.AMOUNT as amount, SUM(b.AMOUNT) as freight_amt
    from dbo.[report1] a
    join dbo.[report2] b on a.cust = b.cust and a.order_num = b.order_num and a.prod_code = b.product and a.loc = b.loc
    where a.order_num = '149254'
    group by a.cust, a.order_num, a.prod_code, a.WEIGHT, a.AMOUNT

То, что я ожидаю, это: Клиент A, номер заказа 123, код продукта 456 имеет вес 10, сумма200, фрахт 76

Заказчик А, номер заказа 789, код продукта 456 имеет вес 15, сумма 150, фрахт 90

Что в настоящее время показывает мой запрос, как этоэто: Клиент A, номер заказа 123, код продукта 456 имеет вес 10, сумма 200, фрахт 166

Клиент A, номер заказа 789, код продукта 456 имеет вес 15, количество 150, фрахт 166

Прошу прощения, если это сбивает с толку.Я не могу дать какие-либо фактические данные, которые я использую, или истинные имена столбцов, основанные на политике компании, так что это лучшее, что я могу сделать на данный момент.Заранее спасибо.

1 Ответ

1 голос
/ 05 июля 2019

Я предполагаю, что вы хотите union all и group by:

select cust, order_num, prod_code, loc,
       sum(weight),  -- I'm not sure if this should be sum() or max()
       sum(amount), sum(freight_amt)
from ((select cust, order_num, prod_code, loc,
              weight, amount,
              null as freight_amt
       from dbo.report1
      ) union all
      (select cust, order_num, product, loc,
              null as weight, null as amount,
              null as freight_amt
       from dbo.report1
      )
     ) rr
group by cust, order_num, prod_code, loc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...