¿Cómo selecciono un campo de una tabla donde busco el nombre del campo de otra tabla?

Haciendo algo de ETL y tengo un archivo amplio con muchas columnas, para cada valor diferente. Estoy tratando de transformar esto en un archivo de texto vertical con una fila por elemento de valor. Entonces mi tabla de datos se ve así;

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

Mi tabla de búsqueda Col parece;

GLCode GLDesc TaxRate XLSColName
00.1234 Cash  0.00    Col2 

Entonces, en mi línea de archivo de salida, necesito;
Store1,1/2/34,00.1234,0.00,23
donde 23 es el valor de la tabla de datos en el campo Col2 que se especificó en el campo de búsqueda del libro mayor.

He estado tratando de hacer esto en SQL como parte de un paquete SSIS, ya que no pude ver cómo hacerlo con la tarea de búsqueda, ¡pero parece que tampoco puedo hacerlo en SQL!

Espero que tenga sentido y gracias por su ayuda! JK

preguntado el 03 de mayo de 12 a las 13:05

¿Tiene que ser completamente dinámico o tiene una idea (o una lista finita) de cómo se nombrarán sus columnas de datos? -

Lo ideal es que sea dinámico... -

3 Respuestas

Por lo que entiendo de tu pregunta, estás buscando el Función UNPIVOT de SQL Server, que toma columnas y las gira en filas/valores individuales. Combine eso con una unión para obtener la información requerida de la tabla de búsqueda.

Para hacer esto en SSIS, puede usar el Transformación UNPIVOT

contestado el 03 de mayo de 12 a las 13:05

Intenté esto con la tarea Unpivot SSIS y recibo un error. Seleccioné StoreID y TxDate como Pasaje y Cantidad como el nombre del campo Destino, con Ofertas como el nombre para todos los valores de Col, lo cual es consistente con las demostraciones que he visto. Sospecho que mi problema se debe a que quiero pasar por los dos campos, pero ¿tengo que hacerlo? - josek

Para ser honesto, no he trabajado con la transformación UNPIVOT, pero ¿no podría usar el Editor avanzado y configurar algunas columnas de salida adicionales manualmente? ¿Cuál es el error que estás recibiendo? - GShenanigan

Tendrá que ver cómo pivotar la tabla de datos desde:

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

Por lo tanto, puede tratar el nombre de la columna como datos para unir/buscar.

contestado el 03 de mayo de 12 a las 13:05

Tu pregunta es un poco confusa. Entiendo lo que está tratando de hacer, pero no estoy 100% seguro de dónde se almacenan los datos. ¿Es esto correcto?: ¿Tiene 2 tablas, 1 tabla tiene los datos que desea? 1 tabla tiene el valor para buscar la primera tabla?

Si es así, quieres algo como:

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'

respondido 16 nov., 17:15

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.