如何从另一个表中查找字段名的表中选择一个字段?

时间:2012-05-03 12:32:41

标签: sql sql-server ssis

做一些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

3 个答案:

答案 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'