2

我现在有一个示例输出:我们称它为表 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

但这无济于事。

任何帮助表示赞赏。

4

1 回答 1

1

如果最低列重复,或者如果名称、标题和最低列重复,您是否要显示单行?

通常你会有保留哪一行的标准,但如果没关系,一个简单GROUP BY的 with MAXorMIN应该可以工作。这假设您关心名称和标题也是不同的:

SELECT name, title, MIN(best) best, lowest
FROM tablex
GROUP BY name, title, lowest

SQL 小提琴演示

如果您只关心不同的最低字段,您可以使用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

更多小提琴

于 2013-04-02T16:50:19.707 回答