我有一个从表中选择员工的查询。
该表是一个历史表,因此它可以包含同一个人的记录。始终相同的一条数据是A.[qid]
。员工姓名可能会更改,因此会在更改后插入另一条记录。
我正在尝试为员工选择最近的记录,这就是我按A.[Meta_LogDate]
订购的原因。但是,我只想为员工提供1条记录,而不是所有记录。
当我搜索时,我希望它能给我这张表中的最新记录。
我不认为我可以做Top
,因为这是一个ajax调用,在你输入时缩小了员工范围,所以我需要确保列表仍然显示所有可能的选项,而不是重复。
SELECT DISTINCT(A.[qid]),
A.[FirstName],
A.[LastName],
A.[ntid],
A.[Meta_LogDate]
FROM EmpTable_historical AS A
WHERE A.[LastName] + ', ' + A.[FirstName] LIKE '%' + @name + '%'
ORDER BY A.[LastName], A.[Meta_LogDate] DESC
FOR XML PATH ('emp'), TYPE, ELEMENTS, ROOT ('results');
答案 0 :(得分:1)
;WITH CTE AS
(
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY qid ORDER BY Meta_LogDate DESC)
FROM EmpTable_historical
WHERE [LastName] + ', ' + [FirstName] LIKE '%' + @name + '%'
)
SELECT *
FROM CTE
WHERE RN = 1