2014-11-24 95 views
0

因此,我第一次使用SQL Server 2014 Express,并且遇到了问题。根据SQL中的一个值返回重复记录

基本上,我被要求做的事(作为学校任务的一部分)是从一个普通的“顾客表”中返回值,完全基于顾客的存储位置。

我的查询看起来像这样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 

现在来解释它 - 我一直在试图找到所有的客户,其中“城市”栏目中的内容再次发生,只有那些返回 - 沿与他们的订单总额(在这里被看作货币)基于其他三个表的内容(这就是为什么JOIN在那里)。 后面的部分正在工作,但错误的客户端得到返回,而不是返回实际的“ClientNo”,只有发现的客户端返回。我似乎无法在这里找到正确的行动方针。

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

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

任何输入,将不胜感激。

+0

你已经按城市/件/价格分组,这意味着查询结果中的所有其他字段将被“折叠”。您无法从此查询中获取任何客户端ID,并且无需从根本上重新编写查询即可获取每个城市的计数。 – 2014-11-24 14:53:46

+0

你应该只与城市分组。 – 2014-11-24 14:55:18

回答

1

你应该group by子句中只使用City,还可以使用

SUM(Orders.Pieces * products.Price) TotalPrice

在SELECT子句中得到每个城市秩序总和(乘积之和)。

相关问题