2016-11-15 5 views
1

もう一度あなたの助けが必要です! 私はのように私はSQLクエリを持っているSQL で特定の結果を持ってしようとしている:同じIDの2行がある場合、特定のデータを持つ行を選択するにはどうすればよいですか?

Select ID, DOCUMENTATION, FIELDCODE FROM TABLE. 

結果は次のとおりです。

ID DOCUMENTATION FIELDCODE 
1 testDoc   0 
1 NULL   202 
2 NULL   202 
3 NULL   202 
4 testDoc2  0 
4 NULL   202 

はしかし、私が持っていると思います:

ID DOCUMENTATION FIELDCODE 
1 testDoc   0 
2 NULL   202 
3 NULL   202 
4 testDoc2  0 

合計:

  • 私はそれがfieldcode 0が存在していない場合は、私が欲しいfieldcode IDは常に202 fieldcodeのために202
  • ドキュメントになりますfieldcode 202
  • は常になります
  • を存在する場合fieldcode 0を持つようにしたいですNULLに設定してください
  • フィールドコードとドキュメントは常に0になります
  • 私はフィールドコードが202 - > NULLに設定されている場合は、他にも良いドキュメントを印刷します。

私の問題はドキュメントです。ドキュメントは同じではありません。 MINを使用することはできません。

解決策はまだ見つかりませんでした。

おかげで、

+0

あなたのDBMSにタグを付けてください – JohnHC

+0

私はそれを編集しました。ありがとう – Bob

答えて

3

一つの方法は、row_number()を使用しています。

select t.* 
from (select t.*, 
      row_number() over (partition by id order by fieldcode) as seqnum 
     from t 
    ) t 
where seqnum = 1; 

これは、あなたが同じidのために複数の行の間で選択しようとしている優先順位付けクエリの例です。多くの場合、row_number()はこれらのクエリにアプローチする最も簡単な方法です。

+0

私はあなたの解決策を試しています。ありがとうございます! – Bob

+0

完璧に動作します!非常に便利。私はまだ学んでいる、あなたは私に何かを教える!ありがとう – Bob

関連する問題