DQL / SQL para Excel - obtenha resultados de várias instruções SELECT na planilha

2

Eu escrevi a consulta T-SQL que contém algumas instruções SELECT separadas. Cada instrução SELECT retorna um número diferente de colunas e representa propriedades / recursos diferentes, portanto, não quero juntar todos eles em um resultado SELECT / em um.

Para visualizar minha consulta, deixe-me fornecer um exemplo simplificado:

DECLARE @myNumber bigint;     
SET @myNumber = 5426;

SELECT 'This' as col1, 'is' as col2, 'my' as col3, 'number:' as col4, @myNumber as col5

SELECT 'and' as column1, 'the half' as column2, @myNumber/2 as column3

SELECT * FROM
       (SELECT 'some' as column1, 'union' as column2
             UNION ALL
       SELECT 'second' as column1, 'case' as column2
       ) as someData

É assim que fica no SQL Server Management Studio após a execução da consulta:

Agora,gostariadeobterexatamenteosmesmosresultadosdeconsultanoExcel.Euvouparadados->Deoutrasfontes->DoSQLServer.Najanela"Importar dados", clico em Propriedades e insiro a consulta mencionada:

Infelizmente,apenasoprimeiroresultadodaconsultaSELECTéexibidonoExcel.

É possível recuperar todos os resultados da consulta no Excel?

    
por matandked 12.02.2018 / 08:45

2 respostas

1

O Excel não suporta várias instruções SQL em uma conexão.

Como solução alternativa, você pode usar uma macro emulando a funcionalidade desejada.

Outras questões levantadas nos comentários:

  • A Microsoft planeja adicionar essa funcionalidade em versões futuras do Excel: não sou funcionário da MS nem conheço seus planos.
    No entanto, não parece ser uma funcionalidade exigida por muitos dos usuários, não espero que o desenvolvimento se concentre nela.
  • Outras ferramentas semelhantes (por exemplo, open office) suportam várias instruções SQL? Eu não conheço essas ferramentas.
por 13.02.2018 / 15:44
-2

Você pode usar vários UNION para isso, abaixo estão algumas linhas de código de consulta SQL, ajudarão você a corrigir o problema.

SELECT Distinct value
From ((Select field1 as value from table1 where data = value) union all
      (Select field2 from table1 where data = value) union all
      (Select field1 from table2 where data = value) union all
      (Select field2 from table2 where data = value)
     ) t

ou deveria assim,

SELECT DISTINCT a.Field
FROM (
    SELECT  b.Field
    FROM    Table1 tab
    CROSS APPLY ( 
        SELECT c.Field1 AS Field
        UNION ALL 
        SELECT c.Field2 AS Field
    ) AS X
    UNION ALL
    SELECT  b.Field
    FROM    Table2 tab
    CROSS APPLY (
        SELECT c.Field1 AS Field
        UNION ALL 
        SELECT c.Field2 AS Field
    ) AS x
) y

Primeiro é simples e fácil de usar , Espero que isso ajude você.

    
por 12.02.2018 / 10:54