我正在尝试编写一个查询,以回答以下问题:
“使用DimProduct
表,仅列出每个产品的产品密钥English product name
和产品备用密钥。对英文产品名称进行排序。”
我遇到问题的地方是,即使两个或多个项目之间的ProductKey
和EnglishProductName
相同,每个项目的第一列(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函数的情况下执行此操作,而我在任何地方都没有找到答案。
预先感谢您的帮助。