Consulta SQL de varias tablas desde excel

Necesito obtener mediante una consulta SQL desde Excel, la siguiente información:
Hoja de Excel
-          Num_entrada                     (a)
-          Bodega                               (b)
-          Cod_Referencia                  (c)
-          Orden_Compra                   (d)
-          Proveedor                           (e)
-          Descripcion_referencia        (f)
-          Unidad_referencia               (h)
-          Cantidad                              ( i )
-          Vr_unitario                           ( j )
-          Centro_Costos                    (k)
-          Nombre_Centro_Costo        (m)
La base de datos contiene las siguientes tablas, donde se encuentra cada uno de los datos que necesito:
DETALLE_COMPRAS
-          Num_entrada                     (a)
-          Bodega                              (b)
-          Cod_Referencia                 (c)
-          Orden_Compra                  (d)
-          Cantidad                            ( i )
-          Vr_unitario                         ( j )
-          Centro_costos                   (k)
EMCABEZADO_COMPRAS
-                     Id_proveedor
-                     Num_entrada
gterceros
-                     Id_proveedor
- Proveedor (e)
gcentrocostos
-    Centro_Costos
-    Nombre_Centro_Costo            (m)
greferencia
-    Cod_Referencia
-    Descripcion_referencia              (f)
-    Unidad _referencia                   (h)
Debo de unir o consolidar la información en una sola tabla u hoja como se encuentra al principio, pero lo que no se es como.

1 Respuesta

Respuesta
1
Lo que puedes hacer es crear una vista con los datos que necesitas y después solamente hacer una conexión desde excel apuntando a esa vista.
Create View Consulta
As
Select
 Num_entrada, Bodega,Cod_Referencia,Orden_Compra,Proveedor,
 Descripcion_referencia,Unidad_referencia ,
 Cantidad ,Vr_unitario,Centro_Costos,Nombre_Centro_Costo 
From DETALLE_COMPRAS
Inner Join Encabezado_compras On DETALLE_COMPRAS.Num_entrada = Encabezado_compras.Num_entrada
Inner Join Gterceros On Encabezado_compras.Id_Proveedor = Gterceros.Id_proveedor
Inner Join gcentrocostos on DETALLE_COMPRAS.centro_costos = gcentrocosts.centro_costos
Inner Join greferencia on DETALLE_COMPRAS.cod_referencia = greferencia.cod_referencia
GO
Que tengas suerte
Buenas tardes mi querido experto:
He realizado el ejercicio de acuerdo a sus comentarios y apreciaciones. La consulta quedó de la siguiente manera:
select [bd2007].[dbo].[comdetallecomprashistorico].[comnumerodetallecomprashistorico],
[bd2007].[dbo].[comdetallecomprashistorico].[comcodigobodegadetallecomprashistorico],
[bd2007].[dbo].[comdetallecomprashistorico].[comcodigoreferenciadetallecomprashistorico],
[bd2007].[dbo].[comdetallecomprashistorico].[comnumeroordencompradetallecomprashistorico],
[bd2007].[dbo].[gterceros].[gblidentificadorunoterceros],
[bd2007].[dbo].[greferencia].[gblnombrereferencia],
[bd2007].[dbo].[greferencia].[gblunidaddeempaquereferencia],
[bd2007].[dbo].[comdetallecomprashistorico].[comcantidaddetallecomprashistorico],
[bd2007].[dbo].[comdetallecomprashistorico].[compreciopesosdetallecomprashistorico],
[bd2007].[dbo].[comdetallecomprashistorico].[comcodigocentrocostosdetallecomprashistorico],
[bd2007].[dbo].[gcentrocostos].[gbldescripcioncentrocostos]
from [bd2007].[dbo].[comdetallecomprashistorico]
inner join [bd2007].[dbo].[comencabezadocomprashistorico]on [bd2007].[dbo].[comdetallecomprashistorico]. [comnumerodetallecomprashistorico]=[bd2007].[dbo].[comencabezadocomprashistorico].[comnumerocompraencabezadocomprashistorico]
inner join [bd2007].[dbo].[gterceros]on [bd2007].[dbo].[comencabezadocomprashistorico]. [comidentificadorunoproveedorencabezadocomprashistorico]=[bd2007].[dbo].[gterceros].[gblidentificadorunoterceros]
inner join [bd2007].[dbo].[gcentrocostos]on [bd2007].[dbo].[comdetallecomprashistorico]. [comcodigocentrocostosdetallecomprashistorico]=[bd2007].[dbo].[gcentrocostos].[gblcodcentrocostos]
inner join [bd2007].[dbo].[greferencia]on [bd2007].[dbo].[comdetallecomprashistorico]. [comcodigoreferenciadetallecomprashistorico]=[bd2007].[dbo].[greferencia].[gblcodigoreferencia]
Al ejecutar dicha consulta, me arroja los siguientes errores:
msg 207, level 16, state 3, line 1
invalid column name 'gblcodcentrocostos'.
msg 207, level 16, state 3, line 1
invalid column name 'gblcodigoreferencia'.
msg 207, level 16, state 3, line 1
invalid column name 'gblnombrereferencia'.
msg 207, level 16, state 3, line 1
invalid column name 'gblunidaddeempaquereferencia'.
msg 207, level 16, state 3, line 1
invalid column name 'gbldescripcioncentrocostos'.
Me ayudaría muchísimo su consejo y disculpa si es una burrada por parte mía o alguna cantiflada.
Gracias
Lo que te esta diciendo es que los nombres de los campos están mal escritos o probablemente no sean de las tablas de los que las quieres obtener.
Revisa que tengas los nombres escritos tal como están dados de alta en la base de datos y que si correspondan a las tablas a las que haces referencia.
Suerte
Buen día.
Disculpa si te parezco con falta de conocimientos. He volteado la consulta, osea he colocado los datos de varias formas y no he podido dar con el tema. Me sigue dando los mismos errores. Puedes orientarme un poco más.
Gracias
Desafortunadamente no conozco tus tablas pero lo que tus errores dicen es que algunos campos no existen en las tablas de los que intentas obtenerlos. Por el momento solo te puedo señalar cuales son los campos que según tu editor de consultas no son correctos:
select
      a.comnumerodetallecomprashistorico,
a.comcodigobodegadetallecomprashistorico,
a.comcodigoreferenciadetallecomprashistorico,
a.comnumeroordencompradetallecomprashistorico,
c.gblidentificadorunoterceros,
e.gblnombrereferencia,
e.gblunidaddeempaquereferencia,
a.comcantidaddetallecomprashistorico,
a.compreciopesosdetallecomprashistorico,
a.comcodigocentrocostosdetallecomprashistorico,
d. Gbldescripcioncentrocostos
From comdetallecomprashistorico a
inner join comencabezadocomprashistorico b on a.comnumerodetallecomprashistorico = b.comnumerocompraencabezadocomprashistorico
inner join gterceros c on b.comidentificadorunoproveedorencabezadocomprashistorico = c.gblidentificadorunoterceros
inner join gcentrocostos d on a.comcodigocentrocostosdetallecomprashistorico = d.gblcodcentrocostos
inner join greferencia e on a.comcodigoreferenciadetallecomprashistorico = e.gblcodigoreferencia
Los campos que te marca son los que subraye, te recomiendo mucho el uso de alias de las tablas para simplificar tus consultas sobre todo cuando los nombres de las tablas son tan largos. Otra cosa, ¿por qué la primera vez que preguntaste tenias nombres con guiones bajos y ahora los nombres de tus campos son juntos?
Para poder ayudarte mejor necesitaría que me mandaras la estructura de tus tablas y así te podría decir exactamente donde esta el error y como corregirlo.
MIra, tenias toda la razón desde un comienzo. La burrada estaba en que unas eran GBL y otras GLB.
De todas maneras, muchas gracias por tu aoportuna ayuda, claridad y más que todo paciencia para resolver mi consulta.
Eco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas