1

私はこれを手に入れることができないようです。だから私はこのようなテーブルを持っています:

RowID    UserID  Type    Data
1        A       A       1
2        A       A       2
3        A       B       1
4        A       B       2
5        B       A       1
6        B       A       2
7        B       B       1
8        B       B       2

そして、このテーブルを UserID と Type でグループ化し、Data 列に MIN 値を保持する各グループのレコードの RowID を返す必要があります。

したがって、私の結果セットは次のようになります: 1 3 5 7

4

1 に答える 1

3

SQL Server >= 2005 の場合、次のことができます。

select RowID
from (
    select RowID,
        Rank() over (Partition BY UserID, Type 
            order by Data) as Rank
    from MyTable
) tmp
where Rank = 1

SQL フィドルの例

SQL Server < 2005 の場合、次のことができます。

select t.RowID
from MyTable t
inner join (
    select UserID, Type, min(Data) as MinData
    from MyTable
    group by UserID, Type 
) tm on t.UserID = tm.UserID and t.Type = tm.Type
    and t.Data = tm.MinData

SQL フィドルの例

于 2012-10-04T20:31:03.757 に答える