Sql 第二列最小值,取第一列和第三列

Sql 第二列最小值,取第一列和第三列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,如何从上面的查询中获得这样的结果 DECLARE @Foo TABLE (Id INT, PozId INT, Val INT) INSERT @Foo (Id, PozId, Val) VALUES (1, 1, 34), (1, 2, 976), (2, 1, 235), (2, 2, 792), (3, 2, 456), (3, 3, 123) 这会给你带来想要

如何从上面的查询中获得这样的结果

DECLARE @Foo TABLE (Id INT, PozId INT, Val INT)
        INSERT @Foo (Id, PozId, Val)
        VALUES
        (1, 1, 34),
        (1, 2, 976),
        (2, 1, 235),
        (2, 2, 792),
        (3, 2, 456),
        (3, 3, 123)

这会给你带来想要的结果。Query对您的id进行分区,并选择最低的PozitionId

(1, 1, 34)
(2, 1, 235)
(3, 2, 456)

回答得很好,你也能为2005 sql server编写解决方案吗?@Maleowy查询在sql server 2005中运行得很好。@MikaelEriksson查询在sql server 2005中运行,插入不起作用,因为关键字值。但是,这并不重要,因为问题被标记为sql server 20008
DECLARE @Foo TABLE
(
    Id INT, PozId INT, Val INT
);

INSERT @Foo
    (Id, PozId, Val)
VALUES
    (1, 1, 34)
    , (1, 2, 976)
    , (2, 1, 235)
    , (2, 2, 792)
    , (3, 2, 456)
    , (3, 3, 123);

SELECT Id, PozId, Val
FROM (
    SELECT ROW_NUMBER() OVER (PARTITION BY Id ORDER BY PozId) AS RowNo, *
    FROM @Foo
    ) AS T
WHERE RowNo = 1;