sql >> Base de Datos >  >> RDS >> Sqlserver

MS Excel:une datos externos (SQL) con una tabla local (hoja)

Mi comentario anterior solo tenía la intención de abrir algunas posibilidades que podría tener a mano.

PowerQuery es un complemento gratuito para Office 2013. En Office 2016 es parte de Excel y ya no es un complemento.

De todos modos, parece preferir el enfoque de usar una tabla temporal o una variable de tabla en su SQL. Por lo tanto, elaboraré un poco más sobre este enfoque:

Al final querrás una consulta similar a esta:

set nocount on;
declare @tblVAT table
    (
     Country nvarchar(50),
     VAT decimal(9, 7)
    );

insert  into @tblVAT
        (Country, VAT)
values  (N'Germany', 0.19),
        (N'Frence', 0.20),
        (N'Spain', 0.21);


select  tc.Name,
        tc.ID,
        case when tc.Country is null then tv.Country
             else tc.Country
        end as Country,
        tv.VAT
from    dbo.tblCustomers as tc
full outer join @tblVAT as tv
on      tv.Country = tc.Country;

Tenga en cuenta la importancia de set nocount on; al comienzo de la consulta SQL anterior. ¡Sin eso no funcionará!

Una vez que tenga esta consulta, simplemente puede pegarla en Excel usando el menú DataGet External DataFrom SQL Server . En un primer paso, obtendrá la tabla de clientes y luego, en un segundo paso, refinará la consulta para incluir la variable de la tabla como se describe anteriormente. Aquí hay un breve resumen visual:

Supongo que, llegados a este punto, las únicas preguntas que quedan son:

  1. ¿Cómo se crea dinámicamente la instrucción SQL anterior y
  2. ¿Cómo se obtiene la tabla anterior en Excel y luego se actualiza con esta instrucción SQL actualizada?

Para crear dinámicamente el SQL anterior, es posible que desee echar un vistazo a lo siguiente:Uso de una matriz o diccionario como cláusula from en sql en excel vba

Justo ayer respondí una pregunta similar en la que un usuario quería pasar el contenido de una hoja de Excel como una tabla creada dinámicamente a un servidor SQL. Puede adaptarlo fácilmente (o incluso usarlo tal cual) para su propósito.

Para el último paso (actualizar esta tabla en Excel con esta nueva consulta SQL), puede usar la grabadora de macros y hacer lo que hice en la captura de pantalla anterior. El código creado automáticamente es nada más/menos de lo que te propondría.

Ahí lo tienes. Avíseme si no fui lo suficientemente claro o si necesita más detalles para comprender esta solución.