2017-08-10 9 views
-2

私の質問は、すべての列を選択している間に特定の列に重複を避けることです。 seq.number列も選択されているため、DISTINCTは機能しません。 クエリを動作させるための考え方 以下の例では、seq_numというクエリは一意のキーです。シーケンス番号列を含むすべての列を選択する際にDISTINCTを使用する方法は?

編集:サンプルデータを含む二つの列について画像

select DISTINCT(name), seq_num from table_1;![enter image description here](https://i.stack.imgur.com/Y3NYn.jpg) 
+2

あなたが持っているデータの例とあなたが持っているものを示してください – I3rutt

+0

私のdownvoteはあなたの問題を解決するのに十分な情報を提供していないからです。具体的には、入力データのサンプルと、出力を期待する内容とその理由を含めます。 – SandPiper

+0

[画像を投稿しないでください](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-質問/ 285557#285557)を送信することができます。代表的なサンプルデータ、現在のクエリと出力、および必要な入力をすべて形式のテキストとして表示します。しかし、あなたの質問は本当に意味をなさない - もし 'seq_num'が一意であれば、' seq_num'の名前を重複することはできません。あなたが名前を複製し、それらのそれぞれを一度だけ表示したい場合は、各名前にどのsequ_numを表示するかを決めるでしょうか? –

答えて

2

このクエリは十分であろう:複数の列について

SELECT name, min(seq_num) 
FROM table 
GROUP BY name 

SELECT name, col1, col2, .... col500, seq_num 
FROM (
    SELECT t.*, row_number() over (partition by name order by seq_num) As rn 
    FROM table t 
) 
WHERE rn = 1 

row_number分析functonを使用上記のクエリでは、指定された名前の行が1つだけ選択され、eaのseq_numの最小値ch名。

+0

ありがとうございます。それは絶対に役立った! –

0

あなたが望むことはできません。 DISTINCT句とクエリ結果セットの詳細については、こちらをご覧ください。 distinctはあなたの問題には適していないことが理解できます。あなたが持っているものと何を表示すべきかについていくつかのサンプルデータを提供すれば、可能なときに私たちはあなたを助けます。

+0

こんにちは...私は実際に重複を排除したいと思いました。私が知っていた既製のオプションはDISTINCTを使用することでした。解決する他のオプションがあることを確認していただきありがとうございます。 –

関連する問題