DQL / SQL nach Excel - Ergebnisse mehrerer SELECT-Anweisungen in der Kalkulationstabelle abrufen

779
matandked

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 repräsentiert verschiedene Eigenschaften / Merkmale, sodass ich nicht alle in einem SELECT / in einem Ergebnis zusammenfassen möchte.

Um meine Anfrage zu visualisieren, möchte ich ein vereinfachtes Beispiel geben:

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 einer Beispielabfrageausführung

Nun 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.

Nur das erste Abfrageergebnis wird in Excel abgerufen

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

2
Ich glaube nicht, dass Sie dies in einer Verbindung tun könnten. Verwenden Sie drei verschiedene Verbindungen auf drei verschiedenen Blättern. Máté Juhász vor 6 Jahren 0
Nun, aber ich würde es vorziehen, den Parameter an einer Stelle zu definieren - ist es mit drei separaten Verbindungen möglich? matandked vor 6 Jahren 0
Derzeit unterstützt Excel NICHT mehrere SQL-Anweisungen in einer Verbindung. Punkt. (Sie können ein Makro schreiben, um Abfragen auszuführen und das gewünschte Verhalten zu emulieren, was jedoch die Komplexität erheblich erhöht). Máté Juhász vor 6 Jahren 0
Kann man das in LibreOffice machen? Gibt es Pläne, eine solche Funktion 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 vor 6 Jahren 0

2 Antworten auf die Frage

1
Máté Juhász

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 gefordert 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.
-2
Rajesh S

Sie können mehrere UNION-Objekte verwenden. Nachfolgend finden Sie einige Beispielcode-Zeilen für SQL-Abfragen, die Ihnen helfen, das Problem zu beheben.

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 

Der erste ist einfach und leicht zu bedienen. Hoffe, das hilft dir.

"UNION" erfordert, dass unterschiedliche Ergebnisse dieselbe Anzahl von Spalten und Datentypen haben. Dies ist in der Frage nicht der Fall. Máté Juhász vor 6 Jahren 0
@ MátéJuhász ,, beide arbeiten in SQL SERVER 2007 und dies war die einzige Möglichkeit, alle 3 zu verbinden, und dann zu EXCEL zu wechseln, da die Excel-Import-Datenbank nicht unterstützt, was OP versucht hat. Rajesh S vor 6 Jahren 0
Obwohl Ihre Abfrage funktioniert, löst sie das Problem nicht. Es erklärt auch nicht, in welchem ​​Umfang eine Lösung besteht und welche Kompromisse notwendig sind. Máté Juhász vor 6 Jahren 0
Ein wertvolles Add-On von eXperts könnte die Lösung verbessern, dem OP helfen, einige SQL-Code-Zeilen vorschlagen. Rajesh S vor 6 Jahren 0