结合总成本

时间:2015-11-06 20:32:57

标签: sql

相当新的SQL并尝试构建一个“应该”抓取所有客户端并合并其交易和发送数量的查询。不幸的是,我无法找到将每个客户端的数据简化为一行的方法。

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

2 个答案:

答案 0 :(得分:2)

将TotalCost更改为

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

并从group by中删除b.Cost,仅按CompanyName

分组
 group by CompanyName

答案 1 :(得分: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