SQL 查询 Distinct / Group By 不工​​作

Posted

技术标签:

【中文标题】SQL 查询 Distinct / Group By 不工​​作【英文标题】:SQL query Distinct / Group By not working 【发布时间】:2013-03-06 15:45:25 【问题描述】:

我不是一个很好的选择陈述工匠,希望有人能提供帮助。我有两个制造零件表:

STOCK 表中有常备库存。它包含所有零件编号,这些零件编号存在于多行中,因为零件分散在多个位置。这是正确的。

RECEIPT 表是某人构建的表。它只是最近收到零件的年份。每一行只有零件编号和收货年份。零件编号仅明确列出一次。

我正在尝试将“收货年份”列粘贴到原始 STOCK 表上,以仅报告收到零件的年份。我不想更改 STOCK 表中的原始数据,只需根据 PART NUMBER 上的匹配将收据年份添加到每一行。 这是我的选择语句:

SELECT DISTINCT STOCK.Project, STOCK.[Part Id], STOCK.Warehouse, STOCK.Location, RECEIPTS.Year from STOCK LEFT JOIN RECEIPTS on STOCK.[Part Id] = RECEIPTS.ITEM_ID GROUP BY STOCK.Project, STOCK.[Part Id], STOCK.Warehouse, STOCK.Location, RECEIPTS.Year;

不幸的是,我的查询不断复制 RECEIPTS 表中可用的每一年的行,如下所示:

Proj        Part Id         Whse_ID Loc         Receipt_Year
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2004
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2005
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2006
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2007
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2009
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2011
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2012
A198.730    5962-9313101MPA 770 GFMSTK-116B2    2013

仅在 2004 年收到了 5962- 部分(收据中的一个不同行)。

非常感谢任何帮助。谢谢, 杰米

【问题讨论】:

【参考方案1】:

通过首先提取数据上的最大日期记录的引物查询解决。

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 抱歉,我自己通过两个后续查询解决了这个问题。第一个查询提取最大日期的数据以消除重复记录,然后第二个查询完成我需要的过滤器

以上是关于SQL 查询 Distinct / Group By 不工​​作的主要内容,如果未能解决你的问题,请参考以下文章

SQL 性能:SELECT DISTINCT 与 GROUP BY

具有 group by 和/或 distinct 和 pivot 的复杂 SQL Server 查询

SQL中Distinct和group by性能区别

SQL中Distinct和group by性能区别

sql 中,distinct 和 group by 的效率,哪个更快

sql group by 与 distinct