3

以下の表にID列と数値列があります

ID Number 
1 34534 
1 45345 
1 45353 
2 56454 
2 45645 
3 65756 
3 67565 
3 87865 
3 38932 
4 36468 
4 45332 

期待される出力は

1 34534 
2 56454 
3 65756 
4 36468 

各IDの最初の番号をすべて取得する必要があります。

これを実現するためのクエリを作成するにはどうすればよいですか?私はSQLの専門家ではありません。:(

注:SQLServer2005の使用

4

2 に答える 2

7

次のようなものを試してください。

SELECT ID, Number FROM
    (SELECT ID, Number, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Number) RN FROM MyTable) Base
    WHERE Base.RN = 1

明らかMyTableにあなたのテーブルの名前です

ああ...明らか2 56454に不可能です。あなただけを得ることができます2 45645ORDER BY句を使用しない限り、SQLテーブルでの順序は幻想です。それ以外の場合、SQLサーバーは必要に応じて行を並べ替えることができます。

于 2013-02-25T08:38:54.837 に答える
0

CROSS APPLYによるもう 1 つのオプション

SELECT *
FROM dbo.test12 t1 CROSS APPLY (
                                SELECT TOP 1 Number
                                FROM dbo.test12 t2
                                WHERE t1.ID = t2.ID
                                ) o
WHERE t1.Number = o.Number   

SQLFiddle のデモ

于 2013-02-26T13:23:17.853 に答える