SQL Server SSIS的派生列中的大小写表达式

w41d8nur  于 2022-12-17  发布在  其他
关注(0)|答案(2)|浏览(114)

如何在SSIS派生列中将值为2、4、5的列修改为2=active、4=closd和5=inactv?(SQL Server DB)
我希望该列显示值。
“活动”而不是“2”
“closd”代替“4”
用“inactv”代替“5”

7xzttuei

7xzttuei1#

您的数据

declare @a table( c varchar(100))
insert into @a
(c) values 
('2,4,5');
declare @equivalenttable table( id varchar(100),equivalent  varchar(100) )
insert into @equivalenttable
(id,equivalent) values 
('2' ,'active'),
('4' ,'closd'),
('5' ,'inactv');
  • 第一次 * 使用string_splitCross apply拆分字符串,* 第二次 * 使用join和等效表,* 第三次 * 使用string_agg,如下所示:
select 
  string_agg(equivalent, ',') within group (
    order by 
      id
  ) c 
from 
  (
    select 
      a1.value 
    from 
      @a CROSS APPLY STRING_SPLIT(c, ',') a1
  ) a2 
  join @equivalenttable e on a2.value = e.id

dbfiddle

px9o7tmv

px9o7tmv2#

应按如下方式使用conditional operator(?:):

[inputcolumn] == "2" ? "active" : 
[inputcolumn] == "4" ? "closed" : 
[inputcolumn] == "5" ? "inactive" : 
""

相关问题