我正在使用 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 对输出进行分支。
这应该可以做到:
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