我正在尝试运行下面的代码并且我一直收到此错误:
Msg 512,Level 16,State 1,Line 1 子查询返回超过1 值。当子查询遵循=,!=,<,< =,>时,不允许这样做。 >,> =或当子查询用作表达式时。声明已经终止。
我正在尝试创建一个字段来识别个人用户。有什么建议吗?
UPDATE dbo.AAASTA_CONTACT
SET dbo.AAASTA_CONTACT.ALIAS_KEY =
(SELECT(SUBSTRING(COALESCE(CAST(ADDR.ADDR_ZIPCODE AS NCHAR(5)), ' ')
+ COALESCE(CAST(UPPER(CON2.CON_LAST_NAME)AS NCHAR(5)), ' ')
+ COALESCE(CAST(UPPER(CON2.CON_FST_NAME)AS NCHAR(5)), ' ')
+ COALESCE(CAST(UPPER(ADDR.ADDR_ADDR_NAME) AS NCHAR(5)), ' '),1,20))
FROM dbo.AAASTA_CONTACT CON2
JOIN dbo.AAASTA_ADDR_PER ADDR
ON (CON2.CON_PERSON_UID = ADDR.T_ADDR_PER_PER_ID))
答案 0 :(得分:1)
我认为这就是你要找的东西。它将使用正确的值更新每一行:
UPDATE
dbo.AAASTA_CONTACT
SET
dbo.AAASTA_CONTACT.ALIAS_KEY = SUBSTRING(COALESCE(CAST(ADDR.ADDR_ZIPCODE AS NCHAR(5)), ' ') + COALESCE(CAST(UPPER(CON2.CON_LAST_NAME)AS NCHAR(5)), ' ') + COALESCE(CAST(UPPER(CON2.CON_FST_NAME)AS NCHAR(5)), ' ') + COALESCE(CAST(UPPER(ADDR.ADDR_ADDR_NAME) AS NCHAR(5)), ' '),1,20)
FROM
dbo.AAASTA_CONTACT CON2
JOIN
dbo.AAASTA_ADDR_PER ADDR
ON (CON2.CON_PERSON_UID = ADDR.T_ADDR_PER_PER_ID)