我现在有一个示例输出:我们称之为表X并且属性为x.name,x.title,x.best x.lowest
NAME TITLE BEST LOWEST
-------------------- ------------------------- --------------- -------
Andy Aardverk Avarice is Good CARP 215.95
Andy Aardverk Avarice is Good YRB Bronze 215.95
Andy Aardverk Yon-juu Hachi CARP 41.95
Andy Aardverk Yon-juu Hachi YRB Bronze 43.95
鉴于最后一列的重复值为215.95,我想只显示包含相同值的2行中的1行。所以我希望它能显示出类似的东西
NAME TITLE BEST LOWEST
-------------------- ------------------------- --------------- -------
Andy Aardverk Avarice is Good CARP 215.95
Andy Aardverk Yon-juu Hachi CARP 41.95
Andy Aardverk Yon-juu Hachi YRB Bronze 43.95
我知道我可以取出X.best,它会给我一个关于X.lowest的唯一行,但是我稍后需要另一个查询的属性X.best。 我试过了
select distinct x.name, x.title, x.best, x.lowest
但它没有帮助。
任何帮助表示感谢。
答案 0 :(得分:1)
如果最低列重复,或者名称,标题和最低列是否重复,是否要显示单行?
通常情况下,您有要保留哪一行的标准,但如果无关紧要,则应使用GROUP BY
或MAX
的简单MIN
。这假设您关心的名称和标题也是不同的:
SELECT name, title, MIN(best) best, lowest
FROM tablex
GROUP BY name, title, lowest
如果您只关心不同的最低字段,则可以使用ROW_NUMBER()
:
SELECT name, title, best, lowest
FROM (
SELECT name, title, best, lowest,
ROW_NUMBER() OVER (PARTITION BY lowest ORDER BY lowest) rn
FROM tablex
) X
WHERE rn = 1