2011-02-03 13 views
3

私のタイトルはおそらく私の状況をよく説明しませんが、正直なところ、これをどのように語るのか分かりません。SQLは、特定の列の行の最初のレコードを選択します

私はDB2データベースにアクセスするためにSQLを使用しています。

画像参照として以下の1を私のスクリーンショットを使用:

列1は、3つの異なる記述(列2)

で、私はこのクエリが返すしたい、「U11124」の3つのインスタンスを持っています"U11124"の最初のインスタンスとその説明が表示されますが、他の行の一意レコードも表示されます。 画像 2が私の望む結果を示しています。

画像1

image1

画像2

image2

----- EDIT ----

いくつかの質問に答えるために/ posts: 技術的には、最初のものである必要はなく、それらのレコードのうちの1つだけである必要はありません。問題は3つの説明があり、1つしか表示する必要がないということです。今はどちらが問題ではないと言われています。 SQL Serverでwhat_you_want_first

+2

どのようなデータベースですか? SQLサーバー?オラクル? MySQL? – Blorgbeard

+1

どの行を保存するかはどのように決めるのですか? –

答えて

5
SELECT STVNST, MAX(STDESC) FROM MY_TABLE GROUP BY STVNST; 
+0

MAXは最初の値を取得しません。 –

+0

ええ、あなたはおそらくMINが実際に欲しいでしょう。 – Blorgbeard

+1

+1。 OPの「最初の」要件を定義するときに、アルファベット順であればMAXまたはMINになります。 –

2

SELECT STVNST,FIRST(STDESC) from table group by STVNST ORDER:

select stvnst, stdesc 
from (
    select  
    stvnst, stdesc 
    row_number() over (order by stdesc partition by stvnst) row 
    from table 
) a 
where row = 1 

この方法は、その中で、それはまた、中に二つ以上の列がありますときに動作します、ことにより、簡単なグループに勝る利点を持っていますテーブル。

+0

申し訳ありませんが(今まで)明確にしていませんでした。 。私はDB2データベースにアクセスするためにSQLを使用しています。私はこのFIRST(stdesc)を試したところ、FIRSTコマンドが存在しないというエラーメッセージが表示されます。= [ – Adam

+0

RDBMSは最初にサポートされていますか? –

3

BY

+0

ああ、これはDB2ではうまくいかないと思います。 – Blorgbeard

+1

+1はい、バージョンによって異なります。この投稿を参考にしてください:http://stackoverflow.com/questions/4879832/conditional-db2-sql-query/4882490#4882490 –

+0

あなたの投稿には、あなたのサブ選択で「行」の後にカンマがあります。これは私のクエリでエラーが発生しました。 カンマを削除すると問題が解決しました。 – Nick

1

GROUP BYを使用するだけです。

STDESC列の最初のインスタンスが必要ですか?まあ、別の列のない行の順序は確かではありませんが、最も高い注文値で注文したい場合は次のようになります:

SELECT STVNST, MAX(STDESC) FROM MY_TABLE GROUP BY STVNST; 
関連する問題