相当新的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
答案 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