2017-01-27 5 views
3

フィルタテーブル(テーブルA)として使用する必要があるテーブルとリンクされたサーバ(テーブルb)。フィルタリングの結果は3番目のテーブルを生成しますが、このフィルタリングを正しく適用する方法を理解できません。私はこのリンクからの参照を見つけました:Referenceしかし、それは私が探しているものを搭載していません。次のように 参照:1つのテーブルを他のフィルタとして使用し、SQLで新しいテーブルを生成する方法

表A - データ型を列には、ビット

|Field1 |Field2 |Field3 |Field4 |CustomerCode| |-------|-------|-------|-------|-------------| | 1 | 0 | 0 | 1 | c001 |

表Bさ - 列のデータ型はvarchar型

|FieldA |FieldB |FieldC |FieldD |CustomerCode | |------- |-------|-------|-------|-------------| | aaaaa | null | ccccc |ddddd | c001 |

ある次に私が求めていることですこのようなもの:

IF tableA.Field1 = 1 THEN NOT EMPTY tableB.FieldA Do an INSERT INTO tableC FieldI VALUES(tableB.FieldA) ELSE INSERT INTO tableC FieldI VALUES ('No Value Found')

これにより、テーブルAのすべてのフィールドが1であることが保証されます。 テーブルBのデータはnullにはなりません。データがnullの場合、メッセージが挿入されます。データがNULLでない場合は、テーブルBのデータをそのテーブルCに配置してください。 私はSQLを使い始めていますが、ほとんどの場合、この問題を簡単に消化できるようなものがありません。

おかげ

+1

表Aと表Bの関係はどうですか?私はそれを見ない。 –

+1

表Bのレコードを条件付きで表Cに挿入するが、表Aの情報を使用しているようです。私たちがあなたを助けるためには、テーブルAとBがどのように関連しているかを教えてください。 –

+0

非常に重要な事実、私は今更新を行った。ありがとう – Antonio

答えて

2

使用INSERT INTO tableC ... SELECT FROM。このような何かがうまくいくはずです:

INSERT INTO tableC 
SELECT COALESCE(t1.FieldA, 'No Value Found'), 
     COALESCE(t1.FieldB, 'No Value Found'), 
     COALESCE(t1.FieldC, 'No Value Found'), 
     COALESCE(t1.FieldD, 'No Value Found') 
FROM TableB t1 
INNER JOIN TableA t2 
    ON t1.CustomerCode = t2.CustomerCode 
WHERE t2.Field1 = 1 AND 
     t2.Field2 = 1 AND 
     t2.Field3 = 1 AND 
     t2.Field4 = 1 
+0

努力のおかげでティム、ちょうどそれがt1の代わりに "t2.Field1 ...."私はあなたの方法を試しましたが、まだテーブルC – Antonio

+0

でインサートをしていませんが、まだテーブルCでインサートをしていません...実際に何が起こっていますか? –

+0

こんにちは遅れて申し訳ありませんが、あなたが提供した例でそれをうまく処理しました。正しくフィルタリングしています。ありがとうございました – Antonio

関連する問題