2016-09-30 23 views
-1

多くの場合、同じテーブル内で2行または2行以上を比較して、同じでない列のみを検索する必要があります。同じテーブル内の複数の行を比較し、同じものだけを表示する方法

これで私を助けてもらえますか?

表名:Employee_Details

条件:

  1. 同じ列の値は、すべての行が同じである場合には、それらの列が

  2. もし結果に表示すべきではありません同じ列の値が同一でない場合、その列だけが結果に表示されます。

enter image description here

+0

は、テーブルのすべての行の別個を取ります。 – XING

+0

データを画像ではなく書式付きテキストとして送信してください。フォーマットされたテキストは、人々が例を作り、何かを試し、あなたにテストされた答えを与えるのに役立ちます。画像は人々を下降/投票させて質問を閉じるようにします – Aleksej

+1

SELECT文は、(テーブルのデータを見た後ではなく)出力がいくつの列になるかを事前に知っていなければならないので、 "標準" SQLではこれを行うことができません持ってる。 – mathguy

答えて

0

プレーンSQLでは、さまざまな数の列を出力できません。

少し異なるアプローチでは、入力テーブルのすべての列で結果を得ることができますが、すべての行のすべての等しい値を持つ列に空の値があります。例えば

create table YOUR_TABLE(a, b, c, d) as 
(
    select 'A', 'b', 'c', 'd' from dual union all 
    select 'A', 'b', 'C', 'd' from dual union all 
    select 'A', 'B', 'cc', 'd' from dual union all 
    select 'A', 'b', 'CC', 'd' from dual 
) 

select case when count(distinct a) over(partition by null) > 1 then a else null end as a, 
     case when count(distinct b) over(partition by null) > 1 then b else null end as b, 
     case when count(distinct c) over(partition by null) > 1 then c else null end as c, 
     case when count(distinct d) over(partition by null) > 1 then d else null end as d 
from YOUR_TABLE 

A B C D 
- - -- - 
    B cc 
    b C 
    b CC 
    b c 
関連する問題