可以用 SELECT 语句将 4 列地址合并为 2 列地址吗?

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

我正在使用 SQL Server 并从具有以下布局的地址表中移动数据

ADDRLine1
ADDRLine2
ADDRLine3
ADDRLine4
ADDRCity
ADDRCounty
ADDRPostcode

进入另一个只有两个地址字段的数据库

ADDRLine1
ADDRLine2
ADDRCity
ADDRCounty
ADDRPostcode

字段需要像这样合理地映射:

INPUT                            |OUTPUT                  
Add1    |Add2    | Add3  |Add4   |Add1        |Add2       
----------------------------------------------------------
Filled  |Filled  |Filled |Filled |Add1, Add2  |Add3, Add4 
Filled  |Filled  |Filled |NULL   |Add1, Add2  |Add3       
Filled  |Filled  |NULL   |NULL   |Add1        |Add2       
Filled  |NULL    |NULL   |NULL   |Add1        |           

可以使用 SELECT 语句来完成此操作,以便我可以在视图中使用它吗?

我正在尝试使用 IF 或 CASE 来控制映射逻辑,但我很难理解如何使用 IF 或 CASE 来实现最终结果。

使用串联仍然需要根据哪些列不为 NULL 对输出进行分支。

sql sql-server
1个回答
0
投票

这应该可以做到:

ADDRLine1 + COALESCE(CASE WHEN coalesce(ADDRLine3, ADDRLine4) IS NULL THEN ', ' + ADDRLine2 END,'') 
    AS Add1,
CASE WHEN coalesce(ADDRLine3, ADDRLine4) IS NULL THEN ADDRLine2 
     ELSE ADDRLine3 + COALESCE(', ' + ADDRLine4, '') END 
   AS Add2
© www.soinside.com 2019 - 2024. All rights reserved.