SQL отображает все (включая оригинальные) дубликаты, если в поле есть отличное значение

Я использую Access 2007 и новичок в SQL. У меня есть таблица, в которой я хочу указать строки, в которых имя клиента и номер детали совпадают, а местоположение - нет. Приложение должно легко определить разницу в цене, если та же самая деталь заказана тем же клиентом, но отправлена ​​в другое место. Мой запрос возвращает приведенную ниже информацию, если я не включаю последнюю строку кода:

   CustomerNumber CompanyName PartNumber CustomerName Location SumOfQuantity AvgOfPrice
   5            Prestige    1000-A-26631-0  FINLAND OY  FINLAND 1            $5.00
   5            Prestige    1000-A-26631-0  FINLAND OY  KARHULA 2            $10.00
   15           Prestige    1000-A-29230-0  Portland    (US)    2            $15.00
   3            Prestige    1000-A-29230-0  BARBOU      BARBOU  2            $5.00
   9            Prestige    1000-A-29230-0  MEXICO      MEXICO  6            $20.00

Первые два ряда - именно то, что я ищу. CustomerName и PartNumber совпадают, но расположение отличается. Тем не менее, мой запрос также возвращает строки, в которых PartNumbers совпадают, а CustomerNames нет. Я считаю, что мне нужно добавить аналогичный оператор Group By, HAVING COUNT для CustomerName, но я получаю синтаксическую ошибку. Я полагаю, что решение очень простое, но я не смог его найти. Может кто-нибудь помочь определить, почему я получаю ошибку?

SQL:

SELECT [2-B: Avg Prices by Customer].[Customer Number], [2-B: Avg Prices by Customer].[Company Name], *
FROM [2-B: Avg Prices by Customer]
WHERE ((([2-B: Avg Prices by Customer].[Company Name])=[Forms]![Start Form]![Combo73]))
OR ((([2-B: Avg Prices by Customer].[Company Name])=[Forms]![Start Form]![List67])
AND (([2-B: Avg Prices by Customer].[Part Number]) In 
(SELECT [Part Number] FROM [2-B: Avg Prices by Customer] 
GROUP BY [Part Number] HAVING COUNT([Part Number]) >1)), 
[Customer Name] HAVING COUNT([Customer Name])>1))); ------ > **Syntax error here, missing operator**

1 ответ

SELECT
  CustomerName,
  PartNumber
FROM [2-B: Avg Prices by Customer] p
GROUP BY CustomerName,PartNumber
HAVING COUNT(DISTINCT Location) > 1
Другие вопросы по тегам