Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 选择在子查询中具有最小值的其他列_Sql Server - Fatal编程技术网

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