SELECT DISTINCT在除第一个WITHOUT分钟或分组依据之外的其他列

时间:2019-02-11 21:50:46

标签: sql-server

我正在尝试编写一个查询,以回答以下问题:

“使用DimProduct表,仅列出每个产品的产品密钥English product name和产品备用密钥。对英文产品名称进行排序。”

我遇到问题的地方是,即使两个或多个项目之间的ProductKeyEnglishProductName相同,每个项目的第一列(ProductAlternateKey)也不同。好吧,当我将查询结构化为时。 。

select distinct ProductKey, EnglishProductName, ProductAlternateKey
from dbo.DimProduct
order by EnglishProductName;

。 。 。我得到的结果是。 。

ProductKey  EnglishProductName       ProductAlternateKey
1           Adjustable Race          AR-5381
486         All-Purpose Bike Stand   ST-1401
223         AWC Logo Cap             CA-1098
224         AWC Logo Cap             CA-1098
225         AWC Logo Cap             CA-1098
3           BB Ball Bearing          BE-2349
2           Bearing Ball             BA-8327

正如您在表格的这个小片段中看到的那样,它会三次返回AWC徽标帽,并且在表格的其余部分也有许多其他类似的内容重复出现。我需要它返回的结果更像是这样:

ProductKey  EnglishProductName       ProductAlternateKey
1           Adjustable Race          AR-5381
486         All-Purpose Bike Stand   ST-1401
223         AWC Logo Cap             CA-1098
3           BB Ball Bearing          BE-2349
2           Bearing Ball             BA-8327

但是,如果尝试将SELECT列表中的第二个或第三个项目编码为DISTINCT,SQL Server会告诉我语法错误。

select ProductKey, distinct EnglishProductName, ProductAlternateKey
from dbo.DimProduct
order by EnglishProductName;

如果我将SELECT语句的顺序更改为,则会得到正确的唯一结果。 。

select distinct EnglishProductName, ProductKey, ProductAlternateKey
from dbo.DimProduct
order by EnglishProductName;

。 。 。但这不是指示我列出各列的顺序。最后,我们仅在入门级SQL课上学习了一半,还没有学习过min或group by等功能,而我们的教授也不希望我们使用尚未涵盖的功能来获得答案。我见过类似的问题,但是对它们的所有答案都需要课堂上尚未涉及的复杂动作。因此,从表面上看,这似乎是一个重复的问题,但实际上并非如此,因为我的问题是如何在没有min或group函数的情况下执行此操作,而我在任何地方都没有找到答案。

预先感谢您的帮助。

0 个答案:

没有答案