说我有一个表需要用作过滤表(表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开始,大部分时间我都缺少一些可以更容易消化这个问题的东西。
由于
答案 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