表格示意图
A列= EmployeeID
B列= ActivityId
C列= PriorityNumber
D列= FSBillRate
E栏=分类
无论如何..所以如果你诺丽丝(MD)有一个A列和B列的组合两次。
MD代码:1
MD代码:1
但是你注意到第一行的C列为1,第二行的C列为3.
我的目标:基于C列只有A和B列的1个组合。我想保留C列的较低位置。所以这种情况我想保留1.但是在BS代码的情况下: 1 4和BS代码:1 6我宁愿保持4,因为4比6低。
这必须在SELECT语句中完成,因为数据必须保留,这基本上是另一个查询的子查询。
答案 0 :(得分:3)
试试这个: (根据评论编辑更新列名称)
的原始答案with cte as (
select [EmployeeID], [ActivityId], [Col3], [Col4], [Col5]
, rownumber= row_number() over (
partition by [EmployeeID], [ActivityId]
order by [Col3]
)
from [table]
)
select [EmployeeID], [ActivityId], [Col3], [Col4], [Col5]
from cte
where rownumber=1
的替代解决方案
select t.[EmployeeID], t.[ActivityId], x.[Col3], x.[Col4], x.[Col5]
from [table] t
cross apply (
select top 1 i.[Col3], i.[Col4], i.[Col5]
from [table] i
where i.[EmployeeID] = t.[EmployeeID]
and i.[ActivityId] = t.[ActivityId]
order by x.[Col3]
) as x
group by t.[EmployeeID], t.[ActivityId], x.[Col3], x.[Col4], x.[Col5]