Я хочу использовать функцию SUM () из другой таблицы - PullRequest
0 голосов
/ 04 июля 2019

У меня две таблицы отгрузки, и покупка у них обоих имеет следующую структуру

ID, ItemID, Quantity, Date

.Я хочу получить общее количество товара отгрузки - покупка

В третьей таблице есть внешний ключ для идентификатора и структура:

ID int auto_increment,
ItemCode VARCHAR(10) unique NOT NULL,
ItemDescription VARCHAR(50),
Price decimal(4,2) DEFAULT 0,
primary key(ID)

Я пыталсясделать это с помощью объединений, но по какой-то определенной причине я получаю больше дублирующихся данных каждый раз

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Предполагая, что вы хотите общее количество за все дни, упорядоченные по ItemCode

select i.ID, i.ItemCode, i.ItemDescription, i.Price, t.Quantity
from Items i
left join (
    select ItemID, sum(Quantity) Quantity
    from (
        select ItemID, Quantity
        from Shipment 
        union all 
        select ItemID, -Quantity
        from Purchase
        ) t
    group by ItemID
    ) t on t.ItemID = i.ID
order by i.ItemCode;
0 голосов
/ 04 июля 2019
;WITH cte
     AS (SELECT SUM(s.Quantity) AS 'shipment sum',
                s.ItemId
         FROM dbo.Shipment s            
         GROUP BY s.ItemId)

     SELECT c.[shipment sum] - b.[purchase sum] AS 'total quantity',i.ItemDescription
     FROM cte AS c
          INNER JOIN
     (
         SELECT SUM(p.quantity) as'purchase sum',
                p.itemid
         FROM dbo.Purchase p            
         GROUP BY p.ItemId
     ) b ON c.itemid = b.itemid
    INNER JOIN item i ON i.id=c.itemid
...