【发布时间】:2012-08-11 12:45:36
【问题描述】:
我有下表Employee和记录如下:
Eid Ename Phone
------------------------
1 A 043
1 A 067
2 B 073
2 B 072
3 C 753
3 C 464
到目前为止我得到了什么:
SELECT *
FROM (SELECT Row_number() OVER (ORDER BY Eid ASC) AS rownum,
Eid,
Ename,
Phone
FROM Employee
WHERE Eid IN(SELECT DISTINCT(Eid)
FROM Employee
GROUP BY Eid)) AS RESULTSET
WHERE rownum BETWEEN 0 AND 3
实际上,内部查询正在返回distinct 结果,但当我在最终RESULTSET 中获得结果时,它并没有反映出来。
请告知如何获得不同的 RESULTSET。我的输出应该返回如下:
Eid Ename Phone
------------------------
1 A 043
2 B 073
3 C 753
【问题讨论】:
-
获取
043而不是067作为Phone的Eid的规则是什么?如果是“因为这是第一个”,那么您将需要考虑您的设计,因为 SQL 表中的记录没有任何内置排序。 -
假设即使电话号码也相同,在输出中我也需要 rownum 列,我需要从结果集中获取。
-
您需要获取备用行吗?
-
您能否更新您的示例数据以反映这一点?
标签: java sql-server-2008 tsql sql-server-2005 teradata