DQL / SQL to Excel - Ergebnisse mehrerer SELECT-Anweisungen in einer Tabelle abrufen

2

Ich habe eine T-SQL-Abfrage geschrieben, die einige separate SELECT-Anweisungen enthält. Jede SELECT-Anweisung gibt eine andere Anzahl von Spalten zurück und stellt verschiedene Eigenschaften / Features dar, sodass ich nicht alle zu einem SELECT / zu einem Ergebnis zusammenfassen möchte.

Lassen Sie mich zur Visualisierung meiner Abfrage ein vereinfachtes Beispiel bereitstellen:

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

So sieht es in SQL Server Management Studio nach der Abfrageausführung aus:

Ergebnis der beispielhaften Abfrageausführung

Jetzt möchte ich genau die gleichen Abfrageergebnisse in Excel erhalten. Ich gehe zu Daten -> Aus anderen Quellen -> Aus SQL Server. Im Fenster 'Daten importieren' klicke ich auf Eigenschaften und füge die erwähnte Abfrage ein:

Einstellung - SQL Server-Verbindung

Leider wird nur das erste SELECT-Abfrageergebnis in Excel angezeigt.

In Excel wird nur das erste Abfrageergebnis abgerufen

Ist es möglich, alle Abfrageergebnisse in Excel abzurufen?

matandked
quelle
Ich denke nicht, dass Sie es in einer Verbindung tun könnten, verwenden Sie drei verschiedene Verbindungen auf drei verschiedenen Blättern.
Máté Juhász
Nun, aber ich würde es vorziehen, den Parameter an einer Stelle zu definieren - wird es mit drei separaten Verbindungen möglich sein?
matandked
Derzeit unterstützt Excel NICHT mehrere SQL-Anweisungen in einer Verbindung. Punkt. (Sie können ein Makro schreiben, um Abfragen auszuführen und Ihr gewünschtes Verhalten zu emulieren. Dies erhöht jedoch die Komplexität erheblich.)
Máté Juhász
Ist das in LibreOffice möglich? Gibt es Pläne, solche Funktionen in den nächsten Excel-Versionen hinzuzufügen? Vielleicht könnten Sie Ihren Kommentar als Antwort hinzufügen, damit ich ihn als akzeptierte Antwort markieren kann?
matandked

Antworten:

1

Excel unterstützt nicht mehrere SQL-Anweisungen in einer Verbindung.

Als Problemumgehung können Sie ein Makro verwenden, das die gewünschte Funktionalität emuliert.

Andere in Kommentaren aufgeworfene Fragen:

  • Plant Microsoft, diese Funktionalität in zukünftigen Versionen von Excel hinzuzufügen? Ich bin kein Mitarbeiter von MS und kenne auch deren Pläne nicht.
    Es scheint jedoch keine Funktionalität zu sein, die von vielen Benutzern benötigt wird. Ich erwarte nicht, dass sich die Entwicklung darauf konzentriert.
  • Unterstützen andere ähnliche Tools (z. B. Open Office) mehrere SQL-Anweisungen? Ich kenne diese Werkzeuge nicht.
Máté Juhász
quelle
-1

Sie können hierfür mehrere UNIONs verwenden. Im Folgenden finden Sie einige Beispiele für SQL-Abfragecodezeilen, mit denen Sie das Problem beheben können.

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

oder es sollte so sein,

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

Erstens ist es einfach und benutzerfreundlich. Ich hoffe, dies hilft Ihnen.

Rajesh S
quelle
UNIONerfordert unterschiedliche Ergebnisse, um die gleiche Anzahl von Spalten und Datentypen zu haben, dies ist in der vorliegenden Frage nicht der Fall.
Máté Juhász
@ MátéJuhász ,, beide arbeiten in SQL SERVER 2007 und dies war die einzige Möglichkeit, alle 3 zu verbinden ,, dann nach EXCEL zu verschieben, da Excel-Import-Datenbank nicht unterstützt, was OP versucht.
Rajesh S
Obwohl Ihre Abfrage funktioniert, löst sie das Problem nicht. Weder es erklärt, in welchem ​​Umfang eine Lösung ist und welche Kompromisse notwendig sind.
Máté Juhász
Wertvolles Add-On von eXperts könnte die Lösung verbessern ,,, dem OP helfen ,,, bitte einige SQL-Code-Zeilen vorschlagen.
Rajesh S