您正在寻找的解决方案是,Lookup Transformation
但不是尝试使用参数,而是要计算所有名称的计数,然后基于匹配将列从 Excel 映射到表中的列。
需要注意的两件事是您的数据类型(它们必须匹配,并且来自 Excel 的数据以 wstr/nvarchar/unicode 开头)以及在未知情况下会发生什么。
示例实施
我的控制流看起来像这样
第一个任务确保我有一个填充了示例数据的“MyTable”等效项。
IF EXISTS
(
SELECT * FROM sys.tables T WHERE T.name = 'so_18853565' and T.schema_id = schema_id('dbo')
)
BEGIN
DROP TABLE dbo.so_18853565;
END;
CREATE TABLE dbo.so_18853565
(
Name varchar(50) NOT NULL
);
INSERT INTO dbo.so_18853565
SELECT
D.Name
FROM
(
VALUES ('Tim')
) D(Name)
CROSS APPLY
(
SELECT TOP 9 1 AS foo FROM sys.all_columns AS AC
) X(foo)
UNION ALL
SELECT
D.Name
FROM
(
VALUES ('Mark')
) D(Name)
CROSS APPLY
(
SELECT TOP 4 1 AS foo FROM sys.all_columns AS AC
) X(foo)
UNION ALL
SELECT
D.Name
FROM
(
VALUES ('Sam')
) D(Name)
CROSS APPLY
(
SELECT TOP 2 1 AS foo FROM sys.all_columns AS AC
) X(foo);
在数据流中,我有一个使用聚合查询的查找
这将计算所有名称的所有计数
SELECT
S.Name
, COUNT(1) AS NameCount
FROM
dbo.so_18853565 AS S
GROUP BY
S.Name;
将名称连接到名称并单击NameCount
以将其添加到数据流中