Sql server SQL Server:为每列选择不同的值
我想知道是否有可能过滤选择结果,删除部分重叠的值 例如,下面我有数千条记录,但我需要“week date”值为unqiue,如果是重复的,则应保留值最高的记录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
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