2015-11-06 3 views
1

Слишком новый для SQL и попытка построить запрос, который «должен» захватить всех клиентов и объединить их транзакции и доставку QTY. К сожалению, я не могу найти способ просто SUM данных в одну строку на каждого клиента.Комбинат Общие расходы

Use Test 
set NOCOUNT ON 

select CompanyName, (SUM(t.Quantity) * b.Cost) AS TotalCost, 
SUM(t.Quantity) AS Qty 
FROM 
    tblSFCOrder o 
    join tblSFCClient c on o.ClientNumber = c.ClientNumber 
    JOIN tblSFCOrderTxn t ON o.OrderID = t.OrderID 
    JOIN tblSFCInventory i ON t.SKU = i.SKU 
      AND o.ClientNumber = i.ClientNumber 
    JOIN tblSFCBox b ON i.BoxID = b.Id 
    JOIN tblSFCShipment s ON o.OrderID = s.OrderID 

where o.StatusID = 4 and o.ClientNumber = 1486 
and shipdate between '2015-10-01 00:40:01.370' AND '2015-10-31  23:23:38.163' 
group by 
CompanyName, b.Cost 

и конечный результат

1.CompanyName TotalCost Qty 
2.Client1  191.60  479 
3.Client1  159.12  306 
4.Client1  2.64  4 

И я хочу просто

1.CompanyName TotalCost Qty 
2. Client1  353.36  789 
+1

Вы можете удалить поле b.Cost из вашей группы По пункту? –

ответ

0
SELECT 
    CompanyName, 
    SUM(t.Quantity * b.Cost) AS TotalCost, 
    SUM(t.Quantity) AS Qty 
FROM tblSFCOrder o 
INNER JOIN tblSFCClient c 
     ON o.ClientNumber = c.ClientNumber 
INNER JOIN tblSFCOrderTxn t 
     ON o.OrderID = t.OrderID 
INNER JOIN tblSFCInventory i 
     ON t.SKU = i.SKU 
     AND o.ClientNumber = i.ClientNumber 
INNER JOIN tblSFCBox b 
     ON i.BoxID = b.Id 
INNER JOIN tblSFCShipment s 
     ON o.OrderID = s.OrderID 
WHERE 
     o.StatusID = 4 
    AND o.ClientNumber = 1486 
    AND shipdate BETWEEN '2015-10-01 00:40:01.370' 
        AND '2015-10-31 23:23:38.163' 
GROUP BY 
     CompanyName 
+0

Это сделало это, спасибо Хуан! – Austin

2

Изменение TotalCost в

SUM(t.Quantity * t.Cost) AS TotalCost 

и удалить b.Cost из группы по, только group by CompanyName

group by CompanyName 
Смежные вопросы