Sql server TSQL/SSIS:将列设置为两列中的一列,以不为空的为准

Sql server TSQL/SSIS:将列设置为两列中的一列,以不为空的为准,sql-server,tsql,ssis,Sql Server,Tsql,Ssis,感谢您的关注,这可能是一个简单的问题 我有一个表,tableA有三列:tableID、id_1和id_2 在每一行中,id_1或id_2填充一个整数。 我希望遍历每一行并将tableID设置为id_1或id_2,以不为空的为准 我在SSIS中使用一个小数据集来完成这项工作,可能不到20条记录。感谢您的帮助 以其最简单的形式: 更新表a set tableID=isnull(id\u 1,id\u 2) 这是假设如果id_2有一个值(这就是您所说的),那么id_1将始终为null 编辑:更合理的说

感谢您的关注,这可能是一个简单的问题

我有一个表,tableA有三列:tableID、id_1和id_2

在每一行中,id_1或id_2填充一个整数。 我希望遍历每一行并将tableID设置为id_1或id_2,以不为空的为准

我在SSIS中使用一个小数据集来完成这项工作,可能不到20条记录。感谢您的帮助

以其最简单的形式:

更新表a
set tableID=isnull(id\u 1,id\u 2)

这是假设如果id_2有一个值(这就是您所说的),那么id_1将始终为null

编辑:更合理的说法:

update tableA set tableID = isnull(id_1,id_2) where tableID is null

你看过《凝聚》吗?或者您正在询问如何执行
更新
?我需要更新,抱歉。谢谢!我需要逐行执行此操作,因此可以在SSIS中作为OLE DB命令运行此操作吗?是的,其中一个ID将(或应该!)为NULL。只需在表上执行此命令一次,即可更新表中的所有行,因此您可以将其粘贴到design planner中的“执行SQL”任务中;)更妙的是,我非常欣赏这种智慧
COALESCE
是标准SQL,可处理两个或多个参数
ISNULL
是非标准的,仅限于两个参数。关于
ISNULL
COALESCE
的一些附加信息是和。