2017-02-16 4 views
0
Primary Secondary 
----------------------------------- 
UST   MUN 
Data  NULL 
Tele  Data 
Sun   Data 
RMDS  Data 
Data  NULL 
Mor   NULL 
UST   NULL 
Data  Bridge 

"Secondary"の値がすでに "primary"になっていることを確認したい場合は、 "primary"となるはずですが、 "primary"の値でない場合は "セカンダリ "列のみ。ここで同じテーブル内にcondtionsを適用する

私はのような出力をしたい:

Primary Secondary 
------ ----------- 
UST  MUN 
Data  Bridge 
Tele 
Sun 
RMDS 
Mor 
Bridge 
+1

あなたはスプレッドシートとして、テーブルを使用しようとしているようです。その表面的な類似性にもかかわらず、これはうまく動作しない傾向があります。具体的には、表の行と列は非常に異なるものです。 –

+0

このコードを書いて仕事をすることができない場合は、適切な場所に来ています。質問にコード(または関連する部分)を追加するだけで、それがなければ助けにならないからです。 [質問] –

+0

を見る前に私は2つの組合を作ったが、私は両方のデータを1つの列で与えていたが、私が提供したようなデータを持っていたかったが、私はこれを行う手掛かりがないSQLへ –

答えて

0

YEY - あなたはそれを作りました!

あなたは、これはあなたの開発のキャリア

における主要なマイルストーンです。..自己結合SQLにして苦労するのに十分な経験をしてください達した - どのように把握するために(本当に素晴らしいです)、以下の記事を使用します..あなたの主なフィールドウィットヘクタールの自己参加への二次フィールドをリンクし、それは基本的に:)

リンクです:OUTPUT中に存在すべきではないプライマリの下で橋を想定しhttps://blog.sqlauthority.com/2010/07/08/sql-server-the-self-join-inner-join-and-outer-join/

+0

警告:リンクのみの回答はお勧めできません。 –

+0

私は知っている..しかし、私のコメントはあまりにも重いのでコメント.. ... – ymz

0

。以下をご覧ください。

SELECT [primary],ISNULL(MAX([Secondary]),'') as [Secondary] 
FROM 
(SELECT T1.[primary],T2.[Secondary] 
FROM 
(SELECT [primary] 
FROM #T) T1 
JOIN 
(SELECT [primary],[Secondary] 
FROM #T WHERE [Secondary] NOT IN (SELECT [primary] 
FROM #T)) T2 
ON T1. [primary] = T2.[primary] 
GROUP BY T1.[primary],T2.[Secondary] 

UNION 

SELECT ONE,NULL FROM 
(SELECT [Primary] AS ONE FROM #T 
EXCEPT 
SELECT [Secondary] FROM #T) X) M 
GROUP BY [Primary] 
0

解決の糸口がJoinを使用している:

完全外部結合(タイプ参加のこと)何をしたいので、近い形です。

SELECT 
* 
FROM 
(select distinct [Primary] from test) t1 
Full outer JOIN 
(select distinct Secondary 
from test where Secondary not in (select distinct [Primary] from test)) t2 
ON t1.[Primary] = t2.Secondary 

結果: -

Primary Secondary 
NULL Bridge 
Data NULL 
Mor  NULL 
NULL MUN 
RMDS NULL 
Sun  NULL 
Tele NULL 
UST  NULL 
関連する問題