我的表格及其数据如下
CREATE TABLE Sales (Id int ITDENTITY(1,1) NOT NULL,stateid int, district int Sitecount int)
CREATE TABLE Sales1(stateid int, district int,
Sitecount Int)
insert into Sales values (1,2,12)
insert into Sales values (1,3,20)
insert into Sales values (1, NULL, 10)
insert into Salesi values (1,2,10)
insert into Salesi values (1,2. 100)
insert into Select values (1,ULL, 18)
我使用下面的查询来合并
MERGE Sales AS T
USING (Select stateid, district, Sitecount from Sales1 group by stateid,district) as S
ON(S.stateid =T.stateld and S.district=T.district)
WHEN MATCHED
Then UPDATE SET
T.Sitecount=T.Sitecount+S.Sitecount
WHEN NOT MATCHED BY TARGET THEN INSERT (stateid,district,Sitecount) VALUES(S stateid, S.district, S.5itecount);
每当我运行查询时,如果匹配的数据所有列都不为空,则仅合并数据, 否则,它将作为新行插入。
如果分区数据为空,需要根据stateid添加sitecount。如何实现。建议我..
最佳答案
您可以在join
中使用ISNULL
来匹配stateid
,如下所示:
MERGE Sales AS T
USING (Select stateid, district, max(Sitecount) Sitecount from Sales1 group by stateid,district) as S
ON(S.stateid =T.stateid and isnull(S.district,'')=isnull(T.district, ''))
WHEN MATCHED
Then UPDATE SET
T.Sitecount=T.Sitecount+S.Sitecount
WHEN NOT MATCHED BY TARGET THEN INSERT (stateid,district,Sitecount) VALUES(S.stateid, S.district, S.Sitecount);
select * from Sales
另外,请注意,我使用了 max(Sitecount)
来避免 join
中的重复项。请根据您的要求进行更改。
请找到数据库<>fiddle here 。
关于sql - 当合并空列时不合并只是插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61870567/