2017-10-04 5 views
1

SQL Server 2016を使用すると、これを理解できないようです。私は2つのテーブル、テーブルAとテーブルB持っている:私は、私は考えることができるのJOINのすべての組み合わせを試してみたSQL Server DUPなしのすべてのレコードに参加

TableA 
Item| Value | ValueID 
-------------------------- 
1 | AAA  | 1 
1 | BBB  | 2 


TableB 
Item| Value | ValueID 
-------------------------- 
1 | XXX  | 1 
1 | YYY  | 2 
1 | ZZZ  | 3 


What I want to output is: 

Item | ValueA | ValueIDA | ValueB | ValueIDB 
-------------------------------------------------- 
1 | AAA  | 1  | XXX | 1 
1 | BBB  | 2  | YYY | 2 
1 | [NULL] | [NULL] | ZZZ | 3 

を、私はこの結果を得ることができません。

おかげで、事前に -MH

+0

あなたは右ValueID – Rams

+0

にTableBのに参加TableAの操作を行うことができます私はあなたが完全外部値IDの別名で参加したいと思います。 –

答えて

3

ちょうどleft joinまたはfull outer joinを使用しています。この場合は:あなたはbでno試合でさえも維持したいa内の行を持つことができれば

select b.item, a.value as valuea, a.valueid as valueida, 
     b.value as valueb, b.valueid as valueidb 
from b left join 
    a 
    on b.item = a.item and b.valueid = a.valueid; 

、その後、full joinを使用しています。この場合、selectcoalesce(a.item, b.item) as itemを使用します。

+0

Ok - 私の問題を見るこれは実際に私が試していたクエリ(FULL OUTER JOINと一緒に)でした。私の問題は、アイテムの列(私の質問には含まれていない)を述語にしていたことでした。私はテーブルのみの1に叙述したa.Item = 1またはb.Item = 1 はご回答いただきありがとうございWHERE a.Item = 1 はそれがあるべき – user8723089

0

使用RIGHT JOIN

SELECT TableB.ItemID , 
     TableA.Value AS ValueA , 
     TableA.ValueID AS ValueIDA , 
     TableB.Value AS ValueB , 
     TableB.ValueID AS ValueIDB 
FROM TABLEA 
     RIGHT JOIN TableB ON TableA.ValueID = TableB.ValueID; 
関連する問題