这是一个解释我案例的样本数据:
我希望通过EMPLOYID 获取数据,因此只返回 5199,6000,6100 员工,而对于其余列,返回的数据是正常的
我的尝试: 我计划首先获得不同的EMPLOYID,然后为每个Employee获得前1名,但它似乎需要一个循环,在我的情况下,我仅限于选择查询。
答案 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更改为表格的名称