Sql 将表A第x列和表B第y列中的不同条目插入表C中的两列

Sql 将表A第x列和表B第y列中的不同条目插入表C中的两列,sql,sql-server,Sql,Sql Server,我试图将表A的流量计列和表B的记录时间列的不同组合插入表C中,以确保不选择此类组合。 此外,如果使用WHERE子句在表C中找到此组合,则查询应避免将select查询输出插入表C 我已经写了下面的脚本,但它似乎不工作。特别是用于从两个联接表中筛选不同项的独特筛选器: INSERT INTO C (MeterId,PresRecTimestamp,PresUnits,PresVal) SELECT DISTINCT A.FlowMeter, B.RecordTime,

我试图将表
A
流量计
列和表
B
记录时间
列的不同组合插入表
C
中,以确保不选择此类组合。
此外,如果使用
WHERE
子句在表
C
中找到此组合,则查询应避免将select查询输出插入表
C

我已经写了下面的脚本,但它似乎不工作。特别是用于从两个联接表中筛选不同项的独特筛选器:

INSERT INTO C (MeterId,PresRecTimestamp,PresUnits,PresVal)
SELECT DISTINCT A.FlowMeter,
                B.RecordTime,
                substring(B.FormattedValue,
                          CHARINDEX(' ',B.FormattedValue)+1,
                          LEN(B.FormattedValue)),
                substring(B.FormattedValue, 1, CHARINDEX(' ',B.FormattedValue)-1)
FROM  B
INNER JOIN  A ON  A.Id = B.Id 
WHERE NOT EXISTS (SELECT * FROM C
                  WHERE C.MeterId = A.FlowMeter
                    AND C.PresRecTimestamp = B.RecordTime) 

非常感谢您的帮助。

我不知道您当前的查询有什么问题,但您可以简单地切换到“仅插入”
合并。。。当不匹配时
insteadDISTINCT为您提供不同的行。因此,仅从技术角度来看,可以为同一流量计和记录时间获取两条记录,但格式不同的值子字符串也是所选行的一部分。这是否真的发生取决于你的数据。BTW:子串表达式似乎表明你在一个字符串中有多个值(一个值在空白之前和一个之后)。这不应该在关系数据库中完成。改为使用两个单独的列。感谢您的回复,因此我认为如果我修改了Distinct,仅从其他行中选择流量计和记录时间的Distinct组合,应该可以解决我的问题,您有什么建议吗?