0

我正在尝试编写 SQL (Access 2010) 以从零件可以重复的表中选择具有最低价格的零件,因为其他一些字段是不同的。

看起来像这样的表:

Dist Part Num  Ven Part Num     Dist  Desc                Price
DD7777QED      7777QED          DD    Product A              10
IM7777QED      7777QED          IM    This is Product A      12
SY7777QED      7777QED          SY    Product A Desc         15
DD8888QED      8888QED          DD    Product B              15
IM8888QED      8888QED          IM    This is Product B      10
SY8888QED      8888QED          SY    Product B Desc         12
IM999ABC       999ABC           IM    Product C Desc         15

我正在尝试提取具有重复的 Ven Part Num 最低价格的每一行的所有详细信息。本质上,该供应商零件号价格最低的供应商行的所有详细信息。

上述样本数据的结果应该是这样的:

Dist Part Num  Ven Part Num     Dist   Desc               Price
DD7777QED      7777QED          DD     Product A             10
IM8888QED      8888QED          IM     This is Product A     10
IM999ABC       999ABC           IM     Product A Desc        15

谢谢

编辑:感谢 jurgen d 的回答,尽管我认为您的意思是使用 Ven Part Num(而不是 Dist Part Num)。我现在已经修改了这个查询,它几乎可以满足我的要求:

SELECT T1.* 
FROM My_Table T1
INNER JOIN
(
   SELECT [Ven Part Num], MIN(Price) AS MPrice
   FROM My_Table
   GROUP BY [Ven Part Num]
) T2 ON T1.[Ven Part Num] = T2.[Ven Part Num] AND T1.Price = T2.MPrice

现在的挑战是,如果两个 Dist 对相同的 Ven Part Num 具有相同的 MIN 价格,那么生成的提取包含该 Ven Part Num 的 2 行,但我只想要一个,或者都可以。我尝试了 TOP 1,但它运行并仅显示一行作为整个查询的结果。我期待 40K 行!如何在最终报告中仅提取这两行之一?

再次感谢!

4

1 回答 1

1
select t1.* 
from your_table t1
inner join 
(
   select [Dist Part Num], min(price) as mprice
   from your_table
   group by [Dist Part Num]
) t2 on t1.[Dist Part Num] = t2.[Dist Part Num] and t1.price = t2.mprice
于 2013-07-05T02:32:49.760 回答