首页> 疑难解答

SQL Server - 使用按另一列分组的列模式替换NULL值

withpy 2021-06-19

简介我有一个表(称之为oldtable),相关列是名称,组,邮政编码。我已经将它们选入了一个新表(称为newtable)。我的问题是第一个中的一些邮政编码......

我有一张桌子(称之为oldtable),相关的栏目是namegroupzip code。我已经将它们选入了一个新表(称为newtable)。我的问题是第一个表中的一些邮政编码是NULL。我想用他们的group的模式(最常见的值)替换NULL邮政编码。

例如,假设newtable中的一行如下所示:

Name   Group ZipCode
Blah   G1    NULL

我想用oldtable中G1中所有人的最常见的邮政编码替换那个NULL。在按另一列分组时,我甚至无法开始拉动一列的模式。

我正在使用Microsoft SQL Server 2016。

2
投票

这可以使用UPDATE上的CROSS APPLY来完成。

UPDATE n SET
    zipcode = x.zipcode
FROM newtable n
CROSS APPLY( SELECT TOP 1 zipcode, COUNT(*) cnt
            FROM newtable o
            WHERE n.[group] = o.[group]
            GROUP BY zipcode
            ORDER BY cnt DESC) x
WHERE n.zipcode IS NULL;

上一篇:有没有办法使用通配符来查找完全匹配?

下一篇:如何在Angular 7 / Typescript中使用变量类名?

相关文章