【发布时间】:2016-04-19 11:09:28
【问题描述】:
我有两个表,TBTC03 和 TBTC03Y,其中 TBTC03Y 有两个额外的列作为 EFFDTE 和 EXPDTE。我必须使用以下逻辑将数据从 TBTC03 合并到 TBTC03Y:
如果在 TC03Y 中没有找到匹配的 TC03 条目
使用 TC03 数据构建新的 TC03Y 记录
生效日期将默认为“01-01-1980”
到期日期将默认为 '09-30-1995'
我写了一个相同的查询:
insert into TBTC03Y (LOB,MAJPERIL,LOSSCAUSE,NUMERICCL,EFFDTE,EXPDTE)
select LOB,MAJPERIL,LOSSCAUSE,NUMERICCL,'0800101' ,'0950930'
from TBTC03 where not EXISTS (select * from TBTC03Y where
TBTC03Y.LOB = TBTC03.LOB AND
TBTC03Y.MAJPERIL = TBTC03.MAJPERIL AND
TBTC03Y.LOSSCAUSE = TBTC03.LOSSCAUSE AND
TBTC03Y.NUMERICCL = TBTC03.NUMERICCL)
这两个表的主键是 LOB、MAJPERIL 和 LOSSCAUSE。
但是我有一些 TBTC03Y 记录,它们已经有带有主键的数据。
触发上述查询会在某些行上提供主键约束。 我无法弄清楚我该如何完成它。
【问题讨论】:
-
样本数据和期望的结果确实有助于解释您想要做什么。
-
感谢 Gordon,在编写示例数据时,我发现了问题所在。 :D
标签: sql sql-server tsql sql-insert sql-merge