从三个源列获取时从目标列返回输出
Posted
技术标签:
【中文标题】从三个源列获取时从目标列返回输出【英文标题】:Return output from destination column when sourced from three source columns 【发布时间】:2019-11-25 20:33:54 【问题描述】:我有一个源表和一个目标表,我的源表有三列组成我的目标目标列。我的目标列是电话,我的源列是 WorkNumber、CellNumber、HomeNumber。当我查找客户帐户时,我想在目标列中查看 customerNumber。因此,基本上我的三个源列中的所有内容都应该在我的一个目标列中及其各自的客户帐户中。有没有一种方法可以通过 t-sql 或 ssis 将我的目标列设置为等于我的三个源列?
【问题讨论】:
请提供样本数据、预期结果和尝试。单词可能会非常混乱。 【参考方案1】:DECLARE @CustomerId INT
DECLARE cur_insert_phone CURSOR FOR
SELECT CustomerId FROM SourceDatabase.Schema.SourceTable
ORDER BY CustomerId
OPEN cur_insert_phone
FETCH NEXT FROM cur_insert_phone INTO @CustomerId
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO DestinationDatabase.Schema.SourceTable (CustomerId, CustomerNumber, PhoneType)
SELECT t.CustomerId, t.PhoneNumber, t.PhoneType
FROM
(SELECT CustomerId, WorkNumber,CellNumber,HomeNumber FROM SourceDatabase.Schema.SourceTable WHERE CustomerId = @CustomerId) p
UNPIVOT
(
PhoneNumber FOR PhoneType IN (WorkNumber,CellNumber,HomeNumber)
) AS t
FETCH NEXT FROM cur_insert_phone INTO @CustomerId
END
CLOSE cur_insert_phone
DEALLOCATE cur_insert_phone
GO
【讨论】:
以上是关于从三个源列获取时从目标列返回输出的主要内容,如果未能解决你的问题,请参考以下文章
使用 insert into select 将源列添加到输出子句
切割时从 csv 中删除列,并且 csvfilter 都在完成之前停止