在SSIS 2012,Data Flow中,我将excel文档作为我的源代码,包含200行记录。 excel文档有一个“名称”列。我想查找一个数据库,找出有多少条记录对200行中的每一行都有“名称”。并将此计数添加为输出列。
EG:从MyTable中选择count(*),其中Name =?
名称计数
Mark 4
Sam 2
蒂姆9我看不到如何在参数中使用Aggregate。 行计数只计算所有行。 我尝试了一个SQL执行任务但又一次,我看不到如何引入Name参数。
我认为这是一件基本的事情,但我无法在SSIS的任何地方找到它。有人可以告诉我哪里出错吗?
答案 0 :(得分:0)
您正在寻找的解决方案是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
将其添加到数据流