基于SQL中的一个值返回重复项

时间:2014-11-24 14:49:52

标签: sql sql-server

所以我第一次使用SQL Server 2014 Express并且遇到了问题。

基本上,我被要求做的事情(作为在学校的任务的一部分)是从常规"客户表"返回价值,完全基于客户'存储的位置。

我的查询看起来像这个atm:

SELECT 
    City, 
    COUNT(Clients.ClientNo) AS AmountOfClients, 
    Orders.Pieces * products.Price TotalPrice
FROM 
    Clients
INNER JOIN 
    ClientOrder ON Clients.ClientNo = ClientOrder.ClientNo
INNER JOIN 
    Orders ON ClientOrder.OrderNo = Orders.OrderNo
INNER JOIN 
    products ON Orders.ProductNo = products.ProductNo
GROUP BY 
    City, ClientOrders.Pieces, products.Price
HAVING 
    COUNT(Clients.ClientNo) > 1

现在解释一下 - 我一直试图找到所有客户所在的城市" City"列重新发生并仅返回那些 - 以及它们的订单总量(此处显示为货币),基于其他三个表的内容(这就是JOIN存在的原因)。 后一部分正在运行,但错误的客户端被返回,而不是返回实际的" ClientNo",只返回找到的客户端数量。我似乎无法在这里找到正确的行动方案。

理想情况下,返回的信息/输出看起来有点像这样:

City, ClientNo, TotalCost     -- for each client that lives in the same City as another

任何意见都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您应该在group by子句中仅使用City,并使用

SUM(Orders.Pieces * products.Price) TotalPrice

SELECT子句中的

以获取每个城市订单的总和(产品总和)。