Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当源于三个源列时,从目标列返回输出_Sql_Sql Server_Ssis - Fatal编程技术网

Sql 当源于三个源列时,从目标列返回输出

Sql 当源于三个源列时,从目标列返回输出,sql,sql-server,ssis,Sql,Sql Server,Ssis,我有一个源表和一个目标表,我的源表有三列组成我的目标列。我的目标列是电话,源列是工作号码、手机号码、家庭号码。当我查找客户帐户时,我希望在destination列中看到customerNumber。因此,基本上,我的三个源列中的所有内容都应该在我的一个目标列中,并带有各自的客户帐户。是否可以通过t-sql或ssis将目标列设置为三个源列?请提供示例数据、预期结果和尝试。文字可能会很混乱。 DECLARE @CustomerId INT DECLARE cur_insert_phone CUR

我有一个源表和一个目标表,我的源表有三列组成我的目标列。我的目标列是电话,源列是工作号码、手机号码、家庭号码。当我查找客户帐户时,我希望在destination列中看到customerNumber。因此,基本上,我的三个源列中的所有内容都应该在我的一个目标列中,并带有各自的客户帐户。是否可以通过t-sql或ssis将目标列设置为三个源列?

请提供示例数据、预期结果和尝试。文字可能会很混乱。
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