【发布时间】:2020-02-21 00:42:35
【问题描述】:
我正在尝试比较 2 个表之间的数据,我需要将多个列作为复合键连接以获得唯一标识符。我正在使用 CTE,我拥有的代码是:
WITH SuburbDataTest AS (
SELECT *
, CAST(Address AS NVARCHAR(100))+' ' +CAST(LivingAddress AS NVARCHAR(2))
+ ' ' + CAST(StartDate AS NVARCHAR(11))+ ' ' +CAST(AddressTypeId AS NVARCHAR(1))
+ ' ' +CAST(SuburbId AS NVARCHAR(1))AS SuburbDataTestColumn
FROM [mig].[ConsumerAddressMigration]
WHERE SuburbId is NOT NULL
)
SELECT *
FROM SuburbDataTest staging
WHERE SuburbDataTestColumn IN (
SELECT Address+' ' +CAST(LivingAddress AS NVARCHAR(2))+ ' '+CAST(StartDate AS NVARCHAR(11))
+ ' ' +CAST(AddressTypeId AS NVARCHAR(1))+ ' ' +CAST(SuburbId AS NVARCHAR(1)) AS SuburbDataTestColumn
FROM [dbo].[tblConsumerAddress]
)
不幸的是我得到了
将表达式转换为数据类型 nvarchar 时出现算术溢出错误。
有什么想法吗?
【问题讨论】:
-
我们能看到 [mig].[ConsumerAddressMigration] 和 [dbo].[tblConsumerAddress] 的架构吗?
标签: sql sql-server overflow common-table-expression sqldatatypes