SQL查询:根据一个不同的列从表中获取行(所有列)

时间:2010-12-16 09:28:36

标签: sql distinct

这是一个解释我案例的样本数据:

alt text

我希望通过EMPLOYID 获取数据,因此只返回 5199,6000,6100 员工,而对于其余列,返回的数据是正常的

我的尝试: 我计划首先获得不同的EMPLOYID,然后为每个Employee获得前1名,但它似乎需要一个循环,在我的情况下,我仅限于选择查询。

3 个答案:

答案 0 :(得分:3)

假设SQL Server 2005或更高版本,这是演示一种方法的基本示例:

DECLARE @Data TABLE (ID INTEGER, NameField VARCHAR(10))
INSERT @Data VALUES (1, 'A')
INSERT @Data VALUES (1, 'B')
INSERT @Data VALUES (1, 'C')
INSERT @Data VALUES (2, 'A')
INSERT @Data VALUES (3, 'C')
INSERT @Data VALUES (3, 'B')

SELECT ID, NameField FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS RowNo, *
FROM @Data
) x
WHERE RowNo = 1

以下是ROW_NUMBER

的参考资料

答案 1 :(得分:0)

尝试SELECT * FROM myTable GROUP BY EMPLOYID

答案 2 :(得分:0)

我没有测试过,但我认为这应该可以解决问题:

declare @DISTINCTEMPLOYIDS table
    (IDS  char(8)) --whatever datatype employid is

insert into @DISTINCTEMPLOYIDS (IDS)
select distinct EMPLOYID
from TABLENAME

select *
from TABLENAME as t
join @@DISTINCTEMPLOYIDS as d
on t.EMPLOYID = d.EMPLOYID

请记住将TABLENAME更改为表格的名称