假设我有一个表需要用作过滤表(表 A),而另一个表则从链接服务器(表 b)读取数据。过滤的结果将生成第三个表,问题是我无法弄清楚如何正确应用此过滤。我从这个链接找到了引用:Reference 但它没有载入我正在寻找的东西。 见下图:
表 A - 列中的数据类型为 Bit
|Field1 |Field2 |Field3 |Field4 |CustomerCode|
|------|--------|--------|--------|------------|
| 1 | 0 | 0 | 1 | c001 |
表 B - 列中的数据类型为 varchar
|FieldA |FieldB |FieldC |FieldD |CustomerCode |
|------ |--------|--------|--------|------------|
|啊啊啊 |空 | ccccc |dddd | c001 |
那么我要找的是这样的:
IF tableA.Field1 = 1 THEN NOT EMPTY tableB.FieldA
执行 INSERT INTO tableC FieldI VALUES(tableB.FieldA)
ELSE INSERT INTO tableC FieldI VALUES('未找到值')
所以这将确保表 A 中的所有字段都等于 1, 然后对于表 B 数据不能为 null,如果数据为 null 则插入该消息:'No Value Found';如果数据不为空,则只需将表 B 中的数据放入该表 C。 我从 SQL 开始,但大多数时候我遗漏了一些可以更容易理解这个问题的东西。
谢谢
最佳答案
使用 INSERT INTO table ... 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
关于sql - 如何使用一个表作为其他表的过滤器并在 sql 中生成一个新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887445/