fen*_*222 1 t-sql sql-server select stored-procedures
我有下表
RecordID Group Date Value
----------------------------------------
1 Test 1 1/01/2012 10
2 Test 1 1/01/2012 10
3 Test 1 1/01/2012 20
4 Test 2 1/01/2012 20
5 Test 1 2/01/2012 10
6 Test 2 2/01/2012 30
7 Test 1 2/01/2012 20
8 Test 1 2/01/2012 20
9 Test 2 2/01/2012 20
10 Test 1 3/01/2012 10
11 Test 2 3/01/2012 10
12 Test 2 3/01/2012 20
13 Test 3 3/01/2012 10
14 Test 1 4/01/2012 10
Run Code Online (Sandbox Code Playgroud)
我需要获取所有RecordIds,在同一日期和同一组中它具有最低值,并忽略具有更大价值的相同日期和组的所有记录.所以我的查询需要按"日期"和"组"进行分组,找到值最小的记录,结果应该是:
RecordIds:1,2,4,5,9,10,11,13,14
您可以在子查询中使用排名.
select T.RecordID,
T.[Group],
T.Date,
T.Value
from
(
select RecordID,
[Group],
Date,
Value,
rank() over(partition by [Group], Date order by Value) as rn
from YourTable
) as T
where T.rn = 1
order by T.RecordID
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
747 次 |
最近记录: |