0

我有一个有两列的表......

LN    |   SRCREF
LN-1  |  LN/123456
LN-1  |  LN/789012
LN-2  |  LN/123456
LN-2  |  LN/098765
LN-3  |  LN/123456
LN-3  |  LN/789012
LN-3  |  LN/432109

我想返回这样的东西......

LN    |    SRCREF
LN-1  |  LN/123456
LN-1  |  LN/789012
LN-2  |  LN/098765
LN-3  |  LN/432109

所以换句话说,我只想返回 SRCREF 一次,但按优先顺序,所以我看到所有有 LN-1 的人,然后是那些没有 LN-1 但有 LN-2 的人,最后是那些只有 LN-3 的人.

我希望这是有道理的,谢谢。

4

1 回答 1

2

您可以按 SRCREF 分组。这意味着您的结果中每个值 SRCREF 只有一次。

然后,您可以使用聚合函数从 LN 中获取一个特定值,以配合该 SRCREF 值。在这种情况下,我使用minwhich 返回最小值。因此,您将获得与每个 SRCREF 值对应的最低 LN 值。

最后,我order by用来按最低值排序。

select
  min(LN) as first,
  SRCREF 
from
  YourTable t
group by
  SRCREF 
order by
  min(LN)

请注意,在这种情况下,您可能会得到奇怪的结果,因为第一列是字符字段。这意味着它的内容是按字母顺序比较的。这意味着 L-10 将在 L-2 之前出现。还有其他方法可以解决这个问题,但我不知道这是否会成为您的问题。

于 2013-07-29T17:06:28.900 回答