我有两个表:destinytableabq:在sourcetabla和其他数据中有一个最大值为periodo的列,如下所示:
PERIODO DATE
202001 01/01/2020
202002 01/01/2020
202003 01/01/2020
202004 01/01/2020
还有一个源表,它有几百万条这样的记录:
ANOMES
202001
202001
202001
202002
...
202005 --> Missed in the DestinyTablaBQ table, Needs to be inserted or updated`
我需要创建一个sql来插入或更新destinytablebq,使用来自源的max anomes值。
我使用merge创建了以下sql:
MERGE [dbo].[DestinyTableBQ] BQ USING SourceTable T
ON
BQ.PERIODO=MAX(T.ANOMES)
WHEN NOT MATCHED
THEN
INSERT (PERIODO,Date)
VALUES(MAX(T.ANOMES),'');`
但我得到了以下错误:
聚合不能出现在on子句中,除非它在having子句或select列表中包含的子查询中,并且被聚合的列是外部引用
你知道我怎么用合并来做这个吗?或者不合并我该怎么做?
谢谢!!
1条答案
按热度按时间ktca8awb1#
你真的不需要
merge
语法,因为您所要做的就是插入一个不存在的值。我想用这种方式表达会更简单insert ... select ... where not exists
:如果你想使用
merge
查询时,首先需要在子查询中进行聚合: