2013-07-05 53 views
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 

我试图提取具有最小代价的是法师部分民是重复的每一行的所有细节。实质上,该供应商行的所有详细信息对于该供应商零件编号具有最便宜的价格。

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

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 

感谢

编辑:谢谢您尤尔根·d的回答,虽然我觉得你想用法师部分NUM(而不是Dist Part Num)。我已经ammended到了现在这个查询几乎工程,我想:

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 

现在面临的挑战是,如果两个地区具有相同的最低报价为同一法师部分民,然后将得到的提取物中含有2排为Ven Part Num,但我只想要一个,要么会做。我尝试了TOP 1,但是它运行并且由于整个查询而导致只有一行。我有40,000行我期待!如何在最终报告中只提取这两行中的一行?

再次感谢!

+0

对不起,我力得到的,你是说达DIST是一个独特的密钥,那么它怎么可能重复,有IM在3条 –

+0

嗨马里兰州佩尔韦兹×阿拉姆的Dist_Part_Num是唯一的密钥(不重复)。 Juergen's的答案似乎很接近,因为我认为他误以为Dist_Part_Num和Ven_Part_Num。一旦我做出这个改变,我最终会接近结果。唯一的问题是两个Dist行(不同的Dist)在同一个MIN价格中包含相同的Ven_Part_Num ...我得到两行,我真的想要这两个行中的任何一行,因此只有一行被提取。你知道我怎么能过滤到一行吗? – TheRealPapa

+0

在内部查询中尝试使用不同的关键字 –

回答

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 
+0

嗨Juergen d,感谢您的快速回复!我尝试了你的问题,但我重复了Vendor Part Num值......实质上,Vendor Part Num应该在报告中出现一次,但包含最低价格和来自供应商销售的所有详细信息......您的查询不是我以前做过,所以难怪我被卡住了!你有什么建议来检查为什么结果会像我一样?谢谢! – TheRealPapa

相关问题