sql - 从三个源列获取时从目标列返回输出
问题描述
我有一个源表和一个目标表,我的源表有三列组成我的目标目标列。我的目标列是电话,我的源列是 WorkNumber、CellNumber、HomeNumber。当我查找客户帐户时,我想在目标列中查看 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
推荐阅读
- java - JavaFX - 在循环中绘制(蛇)
- javascript - socket.io 中的聊天示例在 phonegap 中不起作用。我一直有这个错误
- angularjs - 范围不向 html 发送数据
- css - Woocommerce 中的迷你购物车按钮对齐错误?
- java - 当 ArrayList 都是通用类型时,为什么我无法通过 addAll 方法将 ArrayList 的内容添加到另一个 ArrayList 中?
- javascript - Google Maps API 当前位置的应用程序以初始地图居中并在我的应用程序中用作 Origin,Destination 到单击地图的位置
- powershell - 从 SQL Server 获取查询结果并使用命令提示符执行命令
- java - 读取 ArrayStack 不清空,此方法无效
- javascript - 将javascript函数调用转换为打字稿函数
- javascript - AWS S3 SDK:如何从多文件上传的进度回调中获取文件名?