2017-01-27 25 views
3

說,我有一個表需要用作過濾器表(表A)與其他從鏈接服務器讀取數據的表(表A) b)。過濾的結果將生成第三個表格,問題是我無法弄清楚如何正確應用此過濾。我從這個鏈接找到了參考:Reference,但它沒有在我要找的東西上。 見如下:如何使用一個表作爲從其他過濾器,並在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,數據不能爲空,如果數據爲空,則只需插入該消息:'沒有找到值';如果數據不爲空,那麼只需將表B中的數據放置到該表C中即可。我從SQL開始,主要是缺少可以更容易地消化此問題的內容。

感謝

+1

表A和表B之間的關係是什麼?我沒看到一個。 –

+1

您似乎希望有條件地將表B中的記錄插入到表C中,但使用表A中的信息。爲了讓我們能夠幫助您,您需要告訴我們表A和B是如何_related_。 –

+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

感謝Tim的努力,只是猜測在哪裏聲明應該說「t2.Field1 ....」而不是t1;我嘗試了你的方法,但是仍然沒有在tableC – Antonio

+0

'處插入,但是仍然沒有在tableC上執行插入操作......實際發生了什麼? –

+0

嗨,對不起,我用你提供的例子解決了這個問題,它正在做正確的過濾,謝謝 – Antonio

相關問題