2017-01-27 28 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

相关问题