我正在编写sql来执行一些数据迁移和操作。我正在编写一些从源数据映射到目标数据的复杂逻辑。基本上,来自源的两个字段将映射到目标中的一个字段,但显然某些字段优先。我的逻辑看起来有点像这样:Case Statement - 每个表中的列名必须是唯一的
case
when d.PURPOSE_NAME = 'Downsize' and (a.DEAL_TYPE_NAME <> '30-Day Letter' and a.DEAL_TYPE_NAME <> 'ACL' and a.DEAL_TYPE_NAME <> 'Assignment') then 'Renewal'
when d.PURPOSE_NAME = 'Early Renewal' and (a.DEAL_TYPE_NAME <> '30-Day Letter' and a.DEAL_TYPE_NAME <> 'ACL' and a.DEAL_TYPE_NAME <> 'Assignment') then 'Renewal'
--- more
end as Deal_Type__c,
case
when d.PURPOSE_NAME = 'Downsize' and (a.DEAL_TYPE_NAME <> '30-Day Letter' and a.DEAL_TYPE_NAME <> 'ACL' and a.DEAL_TYPE_NAME <> 'Assignment') then 'Downsize'
when d.PURPOSE_NAME = 'Early Renewal' and (a.DEAL_TYPE_NAME <> '30-Day Letter' and a.DEAL_TYPE_NAME <> 'ACL' and a.DEAL_TYPE_NAME <> 'Assignment') then 'Early Renewal'
--- more
end as Deal_SubType__c,
-- these values take precedence
case
when a.DEAL_TYPE_NAME = '30-Day Letter' then 'Amendment'
when a.DEAL_TYPE_NAME = 'ACL' then 'Amendment'
when a.DEAL_TYPE_NAME = 'Assignment' then 'Amendment'
end as Deal_Type__c,
case
when a.DEAL_TYPE_NAME = '30-Day Letter' then 'Option to Relet'
when a.DEAL_TYPE_NAME = 'ACL' then 'Termination'
when a.DEAL_TYPE_NAME = 'Assignment' then 'Assignment'
end as Deal_SubType__c,
这一逻辑对我来说很有意义,但我得到的错误:
Column names in each table must be unique. Column name 'Deal_Type__c' in table 'Opportunity' is specified more than once.
如何使用TSQL两个领域在我的源数据映射到一个字段在我的目的地表中使用case声明?
所有这些案件都在SELECT子句? –
让我猜** ** SELECT ... INTO机会**? – lad2025
@ lad2025 yes确切 – logeyg