2

kcc_201名前がとの 2 つのテーブルがありKcc_300ます。

テーブル kcc_201 は次のようになります

ClientMarketCode | WorkDate   | OverDraft
123              | 2012-12-12 | 34.5
456              | 2012-12-12 | 60
98               | 2012-12-12 | 80

テーブル kcc_300 は次のようになります

ClientMarketCode | WorkDate   | DebitAmount
123              | 2012-12-12 | 80
456              | 2012-12-12 | 90
966              | 2012-12-12 | 100
100              | 2012-12-12 | 787

私の質問は、2 つのテーブル間で同じ行ClientMarketCodeworkdate一致するすべてのクライアント行を取得し、使用せずに 2 つのテーブルから一致しない行も取得するクエリは何ですか?union

次のような結果が得られるクエリは次のとおりです。

clientMarketcode | WorkDate   | OverDraft | DebitAmount
123              | 2012-12-12 | 34.5      | 80
456              | 2012-12-12 | 60        | 90
98               | 2012-12-12 | 80        | null
966              | 2012-12-12 | null      | 100
100              | 2012-12-12 | null      | 787
4

3 に答える 3

4

FULL OUTER JOINこれに似たものを使用できます:

select 
    coalesce(k2.ClientMarketCode, k3.ClientMarketCode) ClientMarketCode,
    coalesce(k2.WorkDate, k3.WorkDate) WorkDate,
    k2.OverDraft,
    k3.DebitAmount
from kcc_201 k2
full outer join kcc_300 k3
  on k2.ClientMarketCode = k3.ClientMarketCode
  and k2.WorkDate = k3.WorkDate;

デモで SQL Fiddle を参照してください

結果は次のとおりです。

| CLIENTMARKETCODE |   WORKDATE | OVERDRAFT | DEBITAMOUNT |
------------------------------------------------------------
|              123 | 2012-12-12 |        34 |          80 |
|              456 | 2012-12-12 |        60 |          90 |
|               98 | 2012-12-12 |        80 |      (null) |
|              966 | 2012-12-12 |    (null) |         100 |
|              100 | 2012-12-12 |    (null) |         787 |
于 2012-12-24T13:59:25.150 に答える
0

シンプル、フルアウタージョインを使用、

select nullif(k1.ClientMarketCode, k2.ClientMarketCode) as ClientMarketCode,
       nullif(k1.WorkDate, k2.WorkDate) as WorkDate,
       k1.OverDraft,
       k2.DebitAmount
from kcc_201 k1 full outer join kcc_300 k2 
on k1.ClientMarketCode = k2.ClientMarketCode
and k1.WorkDate = k2.WorkDate;
于 2012-12-24T14:21:55.343 に答える
0
select 

isnull(kcc_201.clientMarketcode,kcc_300.clientMarketcode),
isnull(kcc_201.WorkDate,kcc_300.WorkDate),
kcc_201.OverDraft,
kcc_300.DebitAmount


from  kcc_201
FULL JOIN kcc_300 on kcc_201.clientMarketcode=kcc_300.clientMarketcode
                     and kcc_201.WorkDate=kcc_300.WorkDate
于 2012-12-24T13:58:38.747 に答える