2017-02-13 14 views
0

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

enter image description here

Спасибо.

ответ

0

Вы должны выделить скидку на основе (rate * qty) в процентах от общей суммы сделки:

WITH transaction_totals AS (

    SELECT h.header_id 
      ,h.discount 
      ,SUM(d.rate * d.ty) AS total 
    FROM header h 
     INNER JOIN detail d 
      ON h.header_id = d.header_id 
    GROUP BY h.header_id 
      ,h.discount 

) 

SELECT d.item 
     ,d.rate 
     ,d.qty 
     ,d.total 
     --,d.total/tt.total AS DetailPctTotal 
     ,tt.discount * (d.total/tt.total) AS DetailDiscount 
FROM detail d 
    INNER JOIN transaction_totals tt 
     ON d.header_id = tt.header_id 
; 
+0

Спасибо. это сработало. – user3625561