2012-01-04 9 views
-2

oracle DBのテーブルから選択しようとしています。sqlテーブルの複数の列を選択します。

私は単一の列のSELECTステートメントで別の場合、それはうまく動作しますが、複数の列のため、これは動作していないようです。

などです。

select DISTINCT col1, col2, col3, col4, col5, col6 from table1 

は、と同じ結果を返します。

select * from table1 

第2列第3列には重複する値があります。私が欲しいのは、上記のすべての列の値の値ですが、column2とcolumn3の値は重複していません。

助けてもらえますか?あなたの助けに感謝します。

おかげ

+1

テーブルにあるもののサンプルはありますか? 'SELECT *'と同じ結果を得た場合、COL1のすべてのレコードは区別されます。 – ProfessionalAmateur

+0

あなたは[このような質問](http://stackoverflow.com/questions/54418/how-do-i--can-i-select-distinct-on-multiple-columns-postgresql)をチェックしますか?非常によく似ています –

+3

DISTINCTは、最初の列だけでなく、戻ってくる列全体に適用されます。たとえば、 '(1,2,3,4,5,6)'は '(1,2,3,4,5,7)'とは区別されます。なぜなら、第6列は2つの行で異なるからです。 –

答えて

5

DISTINCT各行の冗長データを排除し、列が選択されました。したがって、DISTINCTを使用して表のすべての列を選択すると、まったく同じデータを含む列のみが集計されます。

+0

お返事ありがとうございました。 – Nomad

+0

あなたの答えに感謝します。私は自分の質問を更新しました。どのようにして問題を解決できますか? – Nomad

+0

質問を編集しないでください。それ以外の場合は、チャットや掲示板になります;)新しいサンプルを開き、データサンプルなどの問題を説明する時間を取ってください。 – Chris

1

は、以下のことを試してみてください。

SELECT DISTINCT COL1 AS COL1, NULL AS COL2, NULL AS COL3, NULL AS COL4, 
     NULL AS COL5, NULL AS COL6 FROM TABLE1 
UNION ALL 
SELECT NULL AS COL1, DCOL2 AS COL2, NULL AS COL3, NULL AS COL4, 
     NULL AS COL5, NULL AS COL6 FROM (SELECT DISTINCT COL2 AS DCOL2 
              FROM TABLE1) 
UNION ALL 
SELECT NULL AS COL1, NULL AS COL2, DCOL3 AS COL3, NULL AS COL4, 
     NULL AS COL5, NULL AS COL6 FROM (SELECT DISTINCT COL3 AS DCOL3 
              FROM TABLE1) 
UNION ALL 
SELECT NULL AS COL1, NULL AS COL2, NULL AS COL3, DCOL4 AS COL4, 
     NULL AS COL5, NULL AS COL6 FROM (SELECT DISTINCT COL4 AS DCOL4 
              FROM TABLE1) 
UNION ALL 
SELECT NULL AS COL1, NULL AS COL2, NULL AS COL3, NULL AS COL4, 
     DCOL5 AS COL5, NULL AS COL6 FROM (SELECT DISTINCT COL5 AS DCOL5 
              FROM TABLE1) 
UNION ALL 
SELECT NULL AS COL1, NULL AS COL2, NULL AS COL3, NULL AS COL4, 
     NULL AS COL5, DCOL6 AS COL6 FROM (SELECT DISTINCT COL6 AS DCOL6 
              FROM TABLE1); 

を共有し、お楽しみください。

関連する問題