SQL显示所有(包括原始)重复IF字段中的不同值

时间:2013-07-12 16:03:17

标签: sql duplicates ms-access-2007 syntax-error

我正在使用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不返回。我相信我必须为CustomerName添加类似的Group By,HAVING COUNT语句,但是我收到语法错误。我想这个解决方案很简单,但是无法弄清楚。任何人都可以帮助确定我收到错误的原因吗?

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 个答案:

答案 0 :(得分:0)

SELECT
  CustomerName,
  PartNumber
FROM [2-B: Avg Prices by Customer] p
GROUP BY CustomerName,PartNumber
HAVING COUNT(DISTINCT Location) > 1