2017-01-30 5 views
0

イム(データはamount1またはAMOUNT2にすることができ一致しない)比較2列怒鳴るデータとの2つのテーブルを持つ

date  ID amount1 amount2 
11-2-16  2  2   0 
11-2-16  1  5   11 
11-2-16  3  0   9 
12-2-16  2  4   0 
12-2-16  1  4   0 

私は必要なものを表2

Bdate  BID Bamount1 Bamount2 
11-2-16  1  5   11 
11-2-16  2  1   0 
11-2-16  3  0   6 
12-2-16  1  4   0 
12-2-16  2  1   0 

は、データを表示することですこれ

Date  id  Amoun1 Bamount1  Amount2  Bamount 
11-2-16  2  2  1   
11-2-16  3         9   6 
12-2-16  2  4  1       

はあなたの助けに感謝を下回るように、両方のテーブルで一致していない

+0

"と一致していない" で詳しく説明してください。それはあなたが意味するものが明確ではありません – apomene

+0

データはamount1またはamount2に一致することはできません –

答えて

1

作成テーブル/挿入データ

CREATE TABLE Table1 
    (`date` VARCHAR(7), `ID` INT, `amount1` INT, `amount2` INT) 
; 

INSERT INTO Table1 
    (`date`, `ID`, `amount1`, `amount2`) 
VALUES 
    ('11-2-16', 2, 2, 0), 
    ('11-2-16', 1, 5, 11), 
    ('11-2-16', 3, 0, 9), 
    ('12-2-16', 2, 4, 0), 
    ('12-2-16', 1, 4, 0) 
; 


CREATE TABLE Table2 
    (`Bdate` VARCHAR(7), `BID` INT, `Bamount1` INT, `Bamount2` INT) 
; 

INSERT INTO Table2 
    (`Bdate`, `BID`, `Bamount1`, `Bamount2`) 
VALUES 
    ('11-2-16', 1, 5, 11), 
    ('11-2-16', 2, 1, 0), 
    ('11-2-16', 3, 0, 6), 
    ('12-2-16', 1, 4, 0), 
    ('12-2-16', 2, 1, 0) 
; 

が日付に参加クエリとに変更idと一致しないフィールドをフィルタリングする場所を指定します。

SELECT 
    Table1.date AS "Date" 
, Table1.id 
, (CASE WHEN Table1.Amount1 > 0 THEN Table1.Amount1 ELSE NULL END) AS "Amount1" 
, (CASE WHEN Table2.Bamount1 > 0 THEN Table2.Bamount1 ELSE NULL END) AS "Bamount1" 
, (CASE WHEN Table1.amount2 > 0 THEN Table1.amount2 ELSE NULL END) AS "amount2" 
, (CASE WHEN Table2.Bamount2 > 0 THEN Table2.Bamount2 ELSE NULL END) AS "Bamount2" 
FROM 
Table1 
INNER JOIN 
Table2 
ON 
    Table1.date = Table2.Bdate 
AND 
    Table1.id = Table2.Bid 
WHERE 
    Table1.amount1 != Table2.Bamount1 
    OR 
    Table1.amount2 != Table2.Bamount2 

結果

Date   id Amount1 Bamount1 amount2 Bamount2 
------- ------ ------- -------- ------- ---------- 
11-2-16  2  2   1 (NULL)  (NULL) 
11-2-16  3 (NULL) (NULL)  9   6 
12-2-16  2  4   1 (NULL)  (NULL) 
+0

これは偉大な作業ありがとうございます。 –

0

両方が一致しない行や一致しない行が必要ですか?その第二は、これを使用する場合は、最初の場合、またはAND

select * from table1 as t1 join table2 as t2 on t1.ID = t2.BID where t1.amount1 != t2.Bamount1 or t2.amount2 != t2.Bamount2 
関連する問題