Суммировать все строки, где столбец отличается в SQL? - PullRequest
0 голосов
/ 08 января 2019

У меня есть простая таблица.

Соответствующие поля: Возвращаемое значение и Возвращаемый номер

Таким образом, в этой таблице показаны все возвращенные товары, номер возврата, который был возвращен, и значение всех предметов в этом возвращении.

Таким образом, пример таблицы может выглядеть примерно так

Line # | Item Number | Quantity Returned | Return Value | Return Number | Cust Order #

 1        789            1                   $40             123          456

 1        780            1                   $40             123          456

 1        780            1                   $20             124          456

Я просто хочу, чтобы он суммировал все возвращаемые значения различными номерами возврата. Так, например, есть две строки с номером возврата 123 и одна строка с номером возврата 124. Так что нужно взять одну из 123 и сложить ее до 124, что даст мои $ 60

Я пробовал

    SUM((rh.Total_Value-rh.Freight_Charges)) OVER (PARTITION BY  rh.Customer_Purchase_Order_Number) as Total_Returned_Value 

    SUM((rh.Total_Value-rh.Freight_Charges)) OVER (PARTITION BY rh.Return_Number) as Total_Returned_Value 

    SUM((rh.Total_Value-rh.Freight_Charges)) OVER (PARTITION BY rh.Return_Number Order by rh.Customer_Purchase_Order_Number) as Total_Returned_Value 

    SUM((rh.Total_Value-rh.Freight_Charges)) OVER (PARTITION BY rh.Customer_Purchase_Order_Number Order by rh.Return_Number) as Total_Returned_Value 

Похоже, что ничего из этого не работает, и я чувствую, что у меня нет достаточного понимания порядка и разбиения по

Это мой полный код

select  rh.Return_Number,
        rd.Odet_Line_Number, rd.Item_Number, rd.Color_Code, rd.Quantity_Returned,
        (rh.Total_Value-rh.Freight_Charges)as Returned_Value, rh.Remarks,
        SUM((rh.Total_Value-rh.Freight_Charges)) OVER (PARTITION BY /*rh.Return_Number Order by*/ rh.Customer_Purchase_Order_Number) as Total_Returned_Value 

from

[JMNYC-AMTDB].[AMTPLUS].[dbo].Returns_Header rh (nolock)

LEFT JOIN

[JMNYC-AMTDB].[AMTPLUS].[dbo].Returns_Detail rd (nolock) on rd.Return_Number = Rh.Return_number

WHERE rh.Customer_Purchase_Order_Number = @Shopify

1 Ответ

0 голосов
/ 08 января 2019

Возможно, вы получили несколько строк подробностей на заголовок, что привело к дублированию данных заголовка. Если вы хотите суммировать по уникальному номеру возврата, сделайте сначала вычисление для заголовка в CTE и присоедините результат к детали, например,

with rh as 
 ( select -- assuming the rh.Return_Number is unique
          rh.Return_Number, 
         (rh.Total_Value-rh.Freight_Charges)as Returned_Value,
          rh.Remarks,
          SUM((rh.Total_Value-rh.Freight_Charges)) 
          OVER (PARTITION BY rh.Customer_Purchase_Order_Number) as Total_Returned_Value 
          -- don't know if this is the PARTITION you want, maybe none
   from

      [JMNYC-AMTDB].[AMTPLUS].[dbo].Returns_Header rh (nolock)
 )
select  rh.Return_Number,
        rd.Odet_Line_Number, rd.Item_Number, rd.Color_Code, rd.Quantity_Returned,
        rh.Returned_Value, rh.Remarks,
        rh.Total_Returned_Value 

from

   rh

LEFT JOIN

[JMNYC-AMTDB].[AMTPLUS].[dbo].Returns_Detail rd (nolock) on rd.Return_Number = Rh.Return_number

WHERE rh.Customer_Purchase_Order_Number = @Shopify
...