SQL选择特定列的行的第一个记录

时间:2011-02-03 22:34:27

标签: sql db2

我意识到我的头衔可能并不能很好地解释我的情况,但老实说我真的不知道怎么说这个。

我正在使用SQL来访问DB2数据库。

使用我的屏幕截图图片1 作为参考:

第1列有三个“U11124”实例,有三个不同的描述(第2列)

我希望这个查询返回“U11124”的第一个实例及其描述,但是还要返回其他行的唯一记录。 图片 2显示了我想要的结果。

图片1

image1

图片2

image2

-----编辑----

回答一些问题/帖子: 从技术上讲,它不需要是第一个,只需要那些记录中的任何一个。问题是我们有三个描述,只需要显示一个,我现在被告知哪一个并不重要。

4 个答案:

答案 0 :(得分:5)

SELECT STVNST, MAX(STDESC) FROM MY_TABLE GROUP BY STVNST;

答案 1 :(得分:3)

在SQL Server中:

select stvnst, stdesc
from (
  select     
     stvnst, stdesc
     row_number() over (order by stdesc partition by stvnst) row
  from table
) a
where row = 1

此方法优于简单组,因为当表中有两列以上时,它也可以工作。

答案 2 :(得分:2)

SELECT STVNST,FIRST(STDESC) from table group by STVNST ORDER BY what_you_want_first

答案 3 :(得分:1)

您需要做的就是使用GROUP BY。

你说你想要STDESC列的第一个实例吗?那么你不能保证没有其他列的行的顺序,但是如果你想按最高有序值排序,下面就足够了:

SELECT STVNST, MAX(STDESC) FROM MY_TABLE GROUP BY STVNST;