0

做一些 ETL,我有一个包含很多列的宽文件,每个不同的值。我正在尝试将其转换为每个值项一行的垂直文本文件。所以我的数据表看起来像;

Store  Date  Col1 Col2 Col3 ...
Store1 1/2/12 12   23   34  ...
Store2 1/2/12 23   34   35  ...

我的 Col 查找表看起来像;

GLCode GLDesc TaxRate XLSColName
00.1234 Cash  0.00    Col2 

所以在我的输出文件行中我需要;
Store1,1/2/34,00.1234,0.00,23
其中 23 是 Col2 字段中数据表中的值,该值在 GL 查找字段中指定。

我一直在尝试将 SQL 作为 SSIS 包的一部分来执行此操作,因为我看不到如何使用 Lookup 任务执行此操作,但似乎也无法在 SQL 中执行此操作!

希望这是有道理的,并感谢您的帮助!JK

4

3 回答 3

2

根据我对您的问题的理解,您正在寻找SQL Server UNPIVOT 函数,该函数采用列并将它们转换为单独的行/值。将其与联接相结合,以从查找表中获取所需的信息。

要在 SSIS 中执行此操作,您可以使用UNPIVOT 转换

于 2012-05-03T12:49:05.050 回答
1

您将需要查看从以下位置旋转数据表:

Store  Date  Col1 Col2 Col3 ...
Store1 1/2/12 12   23   34  ...
Store2 1/2/12 23   34   35  ...

Store  Date  Col Value
Store1 1/2/12 Col1 12
Store1 1/2/12 Col2 23
Store1 1/2/12 Col3 34
Store2 1/2/12 Col1 23
Store2 1/2/12 Col2 34
Store2 1/2/12 Col3 35

因此,您可以将列名视为要加入/查找的数据。

于 2012-05-03T12:52:21.630 回答
-1

你的问题有点令人困惑。我了解您要做什么,但不能 100% 确定数据的存储位置。这是正确的吗?:你有 2 个表,1 个表有你想要的数据?1 表具有搜索第一个表的值?

如果是这样,你想要类似的东西:

SELECT t1.col1, t1.col2, ... 
FROM table_1 t1 
    LEFT JOIN table_2 t2 ON t1.common_field = t2.common_field 
WHERE t2.search_by = 'CRITERIA'
于 2012-05-03T12:46:07.437 回答