2012-05-03 4 views
0

Выполнение некоторых ETL, и у меня есть большой файл с большим количеством cols для каждого другого значения. Я пытаюсь преобразовать это в вертикальный текстовый файл с одной строкой на элемент ценности. Так выглядит таблица данных;Как выбрать поле из таблицы, где я ищу имя поля из другой таблицы?

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

Таблица поиска My 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

Нужно ли быть полностью динамичным или у вас есть идея (или конечный список) того, как будут называться ваши столбцы данных? – GShenanigan

+0

В идеале это должно быть динамическим ... – JoeK

ответ

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 

Таким образом, вы можете обращаться к имени столбца, как данные должны быть соединены/посмотрел вверх.

-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' 
2

от ваших, что я понимаю ваш вопрос, вы ищете SQL Server UNPIVOT function, который принимает столбцы и поворачивается их в отдельные строки/значения. Объедините это с соединением, чтобы получить необходимую информацию из таблицы Lookup.

Чтобы сделать это в SSIS, вы могли бы использовать UNPIVOT Transformation

+0

Пробовал это с задачей Unisivit SSIS и получаю сообщение об ошибке. Я выбрал StoreID и TxDate как Pas through и Amount в качестве имени поля Destination, а Tenders - как имя для всех значений Col, что соответствует тем демонстрациям, которые я видел. Я подозреваю, что моя проблема связана с желанием пройти через два поля, но мне нужно это сделать? – JoeK

+0

Я не работал с трансформацией UNPIVOT, чтобы быть честным, но не мог ли вы использовать расширенный редактор и установить несколько дополнительных столбцов вывода вручную? Какая ошибка вы получаете? – GShenanigan

Смежные вопросы