0

我正在尝试运行下面的代码,但我不断收到此错误:

消息 512,级别 16,状态 1,第 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))
4

1 回答 1

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)
于 2012-09-10T21:10:47.277 回答