做一些ETL,我有一个包含大量cols的宽文件,用于每个不同的值。我试图将其转换为垂直文本文件,每个值项有一行。 所以我的数据表看起来像;
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
答案 0 :(得分:2)
根据我对您的问题的理解,您正在寻找SQL Server UNPIVOT function,它会获取列并将它们转换为单独的行/值。将其与联接组合以从查找表中获取所需信息。
要在SSIS中执行此操作,您可以使用UNPIVOT Transformation
答案 1 :(得分: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
因此,您可以将列名称视为要加入/查找的数据。
答案 2 :(得分:-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'