Sql server SQL Server:为每列选择不同的值

Sql server SQL Server:为每列选择不同的值,sql-server,tsql,Sql Server,Tsql,我想知道是否有可能过滤选择结果,删除部分重叠的值 例如,下面我有数千条记录,但我需要“week date”值为unqiue,如果是重复的,则应保留值最高的记录 emplo project_id Value week_Date week_ActualStart week_ActualEnd A0001 project001 100 2015-12-28 2015-12-28 2016-01-03 A0001 project001 60

我想知道是否有可能过滤选择结果,删除部分重叠的值

例如,下面我有数千条记录,但我需要“week date”值为unqiue,如果是重复的,则应保留值最高的记录

emplo   project_id  Value   week_Date    week_ActualStart   week_ActualEnd
A0001   project001  100     2015-12-28   2015-12-28         2016-01-03 
A0001   project001  60      2015-12-28   2016-01-01         2016-01-03 
因此,应该只保留第一行

emplo   project_id  Value   week_Date    week_ActualStart   week_ActualEnd
A0001   project001  100     2015-12-28   2015-12-28         2016-01-03 
A0001   project001  60      2015-12-28   2016-01-01         2016-01-03 

我真的需要别人的建议

试试下面的方法:

;WITH WeekDateCte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY emplno, week_Date ORDER BY Value DESC) RowNo 
    FROM employee
)
SELECT * 
FROM WeekDateCte 
WHERE RowNo = 1
有关行数函数的更多信息,请选中


注意:
ROW\u NUMBER()
返回
BIGINT
您可以使用
ROW\u NUMBER
执行此操作:

SELECT emplno, project_id, Value, week_Date,
       week_ActualStart, week_ActualEnd
FROM (
   SELECT emplno, project_id, Value, week_Date,
          week_ActualStart, week_ActualEnd,
          ROW_NUMBER() OVER (PARTITION BY emplno, week_Date 
                             ORDER BY Value DESC) AS rn
   FROM mytable) AS t
WHERE t.rn = 1
查询根据
emplno,week\u Date
切片选择具有最大
值的行

select*from(在(按周划分、按日期顺序、按值描述)a上选择行号(),其中rn=1