Sql server 选择在子查询中具有最小值的其他列
有没有办法选择子查询中具有最小值的其他列? 在子查询中,我生成值列表。那么如何得到我产生这个值的时间呢 这是我的密码:Sql server 选择在子查询中具有最小值的其他列,sql-server,Sql Server,有没有办法选择子查询中具有最小值的其他列? 在子查询中,我生成值列表。那么如何得到我产生这个值的时间呢 这是我的密码: Select A, (select Time from result where value = ??MIN VALUE), MIN (value) from ( //subquery ) result group by A 我的子查询生成的数据示例: A Time Value AB
Select A, (select Time from result where value = ??MIN VALUE), MIN (value)
from (
//subquery
) result
group by A
我的子查询生成的数据示例:
A Time Value
ABC 2016-10-26 15:00:00.000 10
ABC 2016-10-26 15:00:01.000 5
ABC 2016-10-26 15:00:02.000 15
DEF 2016-10-26 15:00:05.000 20
DEF 2016-10-26 15:00:06.000 25
预期结果:
A Time Value
ABC 2016-10-26 15:00:01.000 5
DEF 2016-10-26 15:00:05.000 20
使用行编号()
:
如果可能,请将行号()
替换为RANK()
使用RANK():
输出:
select top 1 with ties a,time,value
from
table
order by row_number() over (partition by a order by value)
SELECT s.a,s.time,s.value
FROM(
SELECT t.*,
ROW_NUMBER() OVER(PARTITION BY t.a ORDER BY t.time) as rnk
FROM YourTable t) s
WHERE s.rnk = 1
DECLARE @tblTest AS TABLE(
A VARCHAR(5),
Value INT
)
INSERT INTO @tblTest VALUES
('ABC',10),
('ABC',5),
('ABC',15),
('DEF',20),
('DEF',25),
('GHI',20),
('GHI',7),
('GHI',7)
;WITH T AS
(
SELECT
*,
RANK() OVER(Partition By A ORDER BY Value) AS PartNo
FROM @tblTest
)
SELECT
*
FROM T
WHERE T.PartNo=1