2016-03-23 9 views
-1

右のスーパーオタク...ここに私は自殺を感じさせるシナリオです!異なる列の値を1つの列にマージする方法はありますか?

私はこのクエリ持っている:

SELECT 
BIRMINGHAM.TOS, 
BIRMINGHAM.Percentage, 
CARDIFFREGUS.TOS AS Expr1, 
CARDIFFREGUS.Percentage AS Expr2 

FROM 
BIRMINGHAM RIGHT OUTER JOIN 
CARDIFFREGUS ON BIRMINGHAM.TOS = CARDIFFREGUS.TOS 

を、これは私が得る結果である:あなたがTOSの値の一部を見ることができるように

TOS Percentage Expr1 Expr2 100.00% 100.00% 0.07% 100.00% default (DSCP 0) 61.37% default (DSCP 0) 61.74% af33 (DSCP 30) 11.49% af33 (DSCP 30) 15.44% af31 (DSCP 26) 8.86% af31 (DSCP 26) 13.85% af11 (DSCP 10) 15.22% af11 (DSCP 10) 4.63% ef (DSCP 46) 1.91% ef (DSCP 46) 3.72% NULL NULL cs6 (DSCP 48) 0.23% cs4 (DSCP 32) 0.15% cs4 (DSCP 32) 0.20% cs3 (DSCP 24) 0.06% cs3 (DSCP 24) 0.11% af21 (DSCP 18) 0.05% af21 (DSCP 18) 0.05% af41 (DSCP 34) 0.70% af41 (DSCP 34) 0.03% 100.00% 0.02% 0.07% 0.02%

とExpr1列は同じです。 パーセントとexpr2の列は、それぞれTOS列とexpr1列の対応する値です。

私はTOSとExpr1列の値を1列として表示しますが、すべての値を一度(同じ値を繰り返さないでください)してから、%とexpr2列の値が必要ですTOSおよびexpr1列の元の値とのそれぞれの関係で、「新規作成された列(TOS + Expr1)」の隣に表示されます。

パーセントとexpr2列は、互いに独立している必要があります。

+0

皆のために、代わりに「CARDIFFREGUS LEFT OUTER JOIN BIRMINGHAM」を実行してください。 – jarlh

+1

BIRMINGHAM.TOSがNULLの場合はどうなりますか? (でもCARDIFFREGUS.TOSはありません) – jarlh

+0

探している出力の例を挙げてください。 –

答えて

1
SELECT 
COALESCE(BIRMINGHAM.TOS,CARDIFFREGUS.TOS) AS [NewColumn], 
BIRMINGHAM.Percentage, 
CARDIFFREGUS.Percentage AS Expr2 

FROM 
BIRMINGHAM RIGHT OUTER JOIN 
CARDIFFREGUS ON BIRMINGHAM.TOS = CARDIFFREGUS.TOS 

EDIT:あなたが結合条件に一致しないCARDIFFREGUSからレコードを表示することができません

注意。このようなレコードも見たい場合は、FULL OUTER JOINを使用してください。 COALESCE()の詳細については

COALESCE MSDN

は、私はあなたがあなたのコメントに「サイト」で何を意味するかわかりません。より多くのテーブルを意味する場合は、別のJOIN条件を追加し、NewTable.TOS列をCOALESCE関数に含めます。

+0

それは私が探していたものでした!ありがとう!....もし私がサイトを追加したいのであれば? –

+0

あなたはCOALESCEは必要ありません。単純にCARDIFFREGUS.TOSだけを選択してください。 – jarlh

+0

あなたの答えが私には意味をなさないので少し詳しく説明できますか? –

関連する問題