如何使用一个表作为其他表的过滤器并在sql中生成一个新表

时间:2017-01-27 05:26:09

标签: sql sql-server sqldatatypes

说我有一个表需要用作过滤表(表A),而另一个表用于从链接服务器读取数据(表b)。过滤的结果将生成第三个表,事情是我无法弄清楚如何正确应用此过滤。我从这个链接找到了参考资料:Reference 但它没有登上我想要的东西。 请参阅以下内容:

表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数据不能为空,如果数据为空则只插入该消息:'没有找到值&#39 ;;如果data不为null,则只需将表B中的数据放入该表C. 我从SQL开始,大部分时间我都缺少一些可以更容易消化这个问题的东西。

由于

1 个答案:

答案 0 :(得分: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