如何将别名字段的 "1234地址 "替换为空字符串?

问题描述 投票:0回答:1

当我运行这段代码时,字段 Old_AddressNew_Address 含有 1234 Address. 我想改变结果 1234 Address 到一个空字符串。有什么简单的方法可以做到这一点?

INSERT 
INTO        OPT_INT.mgnNACHG_Results 
(
            BRANCH_CD, 
            ACCOUNT_CD,
            RR_CD,
            ALT_BRANCH_CD, 
            [OldAddress], 
            [NewAddress], 
            [AddressUpdate],
            [OldName], 
            [NewName], 
            [NameUpdate]
)

SELECT      A.BRANCH_CD, 
            A.ACCOUNT_CD,
            A.RR_CD, 
            A.ALT_BRANCH_CD,
            LTRIM(RTRIM(ISNULL(B.LINE4, ''))) 
            + LTRIM(RTRIM(ISNULL(B.LINE5, '')))
            + LTRIM(RTRIM(ISNULL(B.LINE6, ''))) AS 'Old_Address',
            LTRIM(RTRIM(ISNULL(A.LINE4, ''))) 
            + LTRIM(RTRIM(ISNULL(A.LINE5, '')))
            +LTRIM(RTRIM(ISNULL(A.LINE6, ''))) AS 'New_Address',
            CASE 
              WHEN (LTRIM(RTRIM(ISNULL(B.LINE4, ''))) <> LTRIM(RTRIM(ISNULL(A.LINE4, ''))))
              OR (LTRIM(RTRIM(ISNULL(B.LINE5,''))) <> LTRIM(RTRIM(ISNULL(A.LINE5, ''))))
              OR (LTRIM(RTRIM(ISNULL(B.LINE6, ''))) <> LTRIM(RTRIM(ISNULL(A.LINE6, ''))))
              THEN 'Address Change'
              ELSE ''
            END as 'Address_Update',
            LTRIM(RTRIM(ISNULL(B.LINE1, ''))) 
            + LTRIM(RTRIM(ISNULL(B.LINE2, '')))
            + LTRIM(RTRIM(ISNULL(B.LINE3, ''))) AS 'Client_Old_Name',
            LTRIM(RTRIM(ISNULL(A.LINE1, '')))
            + LTRIM(RTRIM(ISNULL(A.LINE2, '')))
            + LTRIM(RTRIM(ISNULL(A.LINE3, ''))) AS 'Client_New_Name',
            CASE 
              WHEN (LTRIM(RTRIM(ISNULL(B.LINE1,''))) <> LTRIM(RTRIM(ISNULL(A.LINE1, ''))))
              OR (LTRIM(RTRIM(ISNULL(B.LINE2, ''))) <> LTRIM(RTRIM(ISNULL(A.LINE2, ''))))
              OR (LTRIM(RTRIM(ISNULL(B.LINE3, ''))) <> LTRIM(RTRIM(ISNULL(A.LINE3, ''))))
              THEN 'Title Change'
              ELSE ''
            END AS 'Client_Name_Update'
FROM        #NEW A
INNER JOIN  #OLD B
   ON       A.BRANCH_CD = B.BRANCH_CD
   AND      A.ACCOUNT_CD = B.ACCOUNT_CD
WHERE       (A.[LINE1] <> B.[LINE1])
   OR       (A.[LINE2] <> B.[LINE2])
   OR       (A.[LINE3] <> B.[LINE3])
   OR       (A.[LINE4] <> B.[LINE4])
   OR       (A.[LINE5] <> B.[LINE5])
   OR       (A.[LINE6] <> B.[LINE6])
sql
1个回答
0
投票

看看这是否有帮助(假设要求是[Old_Address]=[New_Address])。

INSERT INTO OPT_INT.mgnNACHG_Results (BRANCH_CD,ACCOUNT_CD,RR_CD,ALT_BRANCH_CD,[OldAddress],[NewAddress],[AddressUpdate],[OldName],[NewName],[NameUpdate])
Select BRANCH_CD, ACCOUNT_CD, ACCOUNT_CD, ALT_BRANCH_CD,
    Case When [Old_Address] = [New_Address] then ' blank or 1234 Address as you need ' Else [Old_Address] End as [Old_Address],
    Case When [Old_Address] = [New_Address] then ' blank or 1234 Address as you need ' Else [New_Address] End as [New_Address], 
    [Address_Update], [Client_Old_Name], [Client_New_Name], [Client_Name_Update]
From
(
SELECT A.BRANCH_CD,A.ACCOUNT_CD,A.RR_CD,A.ALT_BRANCH_CD
,LTRIM(RTRIM(ISNULL(B.LINE4,'')))+LTRIM(RTRIM(ISNULL(B.LINE5,'')))+LTRIM(RTRIM(ISNULL(B.LINE6,''))) AS [Old_Address]
,LTRIM(RTRIM(ISNULL(A.LINE4,'')))+LTRIM(RTRIM(ISNULL(A.LINE5,'')))+LTRIM(RTRIM(ISNULL(A.LINE6,''))) AS [New_Address]
,CASE WHEN (LTRIM(RTRIM(ISNULL(B.LINE4,'')))<>LTRIM(RTRIM(ISNULL(A.LINE4,'')))) OR (LTRIM(RTRIM(ISNULL(B.LINE5,'')))<>LTRIM(RTRIM(ISNULL(A.LINE5,'')))) OR (LTRIM(RTRIM(ISNULL(B.LINE6,'')))<>LTRIM(RTRIM(ISNULL(A.LINE6,'')))) THEN 'Address Change' ELSE '' END as [Address_Update]
,LTRIM(RTRIM(ISNULL(B.LINE1,'')))+LTRIM(RTRIM(ISNULL(B.LINE2,'')))+LTRIM(RTRIM(ISNULL(B.LINE3,''))) AS [Client_Old_Name]
,LTRIM(RTRIM(ISNULL(A.LINE1,'')))+LTRIM(RTRIM(ISNULL(A.LINE2,'')))+LTRIM(RTRIM(ISNULL(A.LINE3,''))) AS [Client_New_Name]
,CASE WHEN (LTRIM(RTRIM(ISNULL(B.LINE1,'')))<>LTRIM(RTRIM(ISNULL(A.LINE1,'')))) OR (LTRIM(RTRIM(ISNULL(B.LINE2,'')))<>LTRIM(RTRIM(ISNULL(A.LINE2,'')))) OR (LTRIM(RTRIM(ISNULL(B.LINE3,'')))<>LTRIM(RTRIM(ISNULL(A.LINE3,'')))) THEN 'Title Change' ELSE '' END AS [Client_Name_Update]
FROM #NEW A 
INNER JOIN #OLD B ON A.BRANCH_CD=B.BRANCH_CD AND A.ACCOUNT_CD=B.ACCOUNT_CD
WHERE (A.[LINE1]<>B.[LINE1]) OR (A.[LINE2]<>B.[LINE2]) OR (A.[LINE3]<>B.[LINE3]) OR (A.[LINE4]<>B.[LINE4]) OR (A.[LINE5]<>B.[LINE5]) OR (A.[LINE6]<>B.[LINE6])
) AS Q

如果您需要检查这2个数据字段是否包含一个特定的文本,您可以使用

Case When [Old_Address] = [New_Address] and [Old_Address] = '1234 Address'  then ' blank or 1234 Address as you need ' Else [Old_Address] End as [Old_Address],
© www.soinside.com 2019 - 2024. All rights reserved.