Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Leezeilen in SQL-Ausgabe (https://www.delphipraxis.net/64324-leezeilen-sql-ausgabe.html)

mschaefer 2. Mär 2006 08:26

Datenbank: egal • Version: egal • Zugriff über: egal

Leezeilen in SQL-Ausgabe
 
Moin, moin,

möchte in einer SQL-Abfrage zwischen zwei Union Statements eine Leerzeile,
also Felder ohne Werte (mit Leerstrings) einfügen. Nehmen wir eine einfache Abfrage:


SQL-Code:

/* Wert des Artikelbestandes aufgeteilt nach Artikelgrupppen    */
SELECT   Artikelgruppe, Sum(Artikelpreis) FROM Artikel
GROUP By Artikelgruppe

UNION ALL
/*  hier hätte ich gerne eine Zeile mit Leerwerten ohne Anzeige */
/*  Wie bringe ich die Zahlenspalte dazu keine Null anzuzeigen? */


/* gesamter Wert des Artikelbestandes    */
SELECT   "Gesamtwert", Sum(Artikelpreis) FROM Artikel


Viele Grüße // Martin

jensw_2000 2. Mär 2006 09:07

Re: Leezeilen in SQL-Ausgabe
 
So sollte das funktionieren ...
SQL-Code:
/* Wert des Artikelbestandes aufgeteilt nach Artikelgrupppen    */ 
SELECT   Artikelgruppe, Sum(Artikelpreis) FROM Artikel
GROUP By Artikelgruppe

UNION ALL
/*  hier hätte ich gerne eine Zeile mit Leerwerten ohne Anzeige */ 
/*  Wie bringe ich die Zahlenspalte dazu keine Null anzuzeigen? */ 

SELECT   NULL AS [Artikelgruppe], NULL AS Expression1 

UNION ALL

/* gesamter Wert des Artikelbestandes    */ 
SELECT   "Gesamtwert", Sum(Artikelpreis) FROM Artikel


Numerische Felder (FLOAT,INT usw.) kann man nicht auf '' setzen.
Du hast also nur die Wahl zwischen NULL und 0.
Bei DateTime verhält sich das äquivalent.

Alphanumerische Felder kannst du auf '' oder NULL setzen.

In einigen Fällen musst du jedoch die Feld-Datentypen für die "hinzogemogelten" Datenzeile definieren, damit diese mit den beiden datenbahafteten SELECTs übereinstimmen.

Das geht bei MSSQL am besten mit CAST.

SQL-Code:
CAST(NULL AS VARCHAR(10))
CAST('' AS VARCHAR(10))
CAST(0 AS INT)
...

mschaefer 3. Mär 2006 07:35

Re: Leezeilen in SQL-Ausgabe
 
Danke Jens,

nach einigen Tests kann ich Deinen Beitrag voll bestätigen. Im Standart-SQL-Satz ist sowas einfach nicht vorgesehen. Vielleicht wird das irgendwann mal in die Richtung erweitert, dass man einer SQL-Ausgabe Informationen über den gewünschten Style mit Farbe Zahlenformat (wie bei Excel..) usw. mitgeben kann. Aber da fliest noch etwas Wasser die Leine herunter...

Grüße aus Hannover // Martin

alzaimar 3. Mär 2006 08:14

Re: Leezeilen in SQL-Ausgabe
 
Hoffentlich passiert das nie, denn wieso sollte es einen SQL-Server etwas angehen, wie die Tabelle formatiert wird? Ich möchte keine Leerzeile, sondern einen Strich!

Wieso fügst du nicht einfach eine zusätzliche Spalte ein:
SQL-Code:
Select 0 as tType, foobardata from Tabelle1
union
Select 1, moreFooBarData from Tabelle2
union
Select 2, BlaFaselFooBar from Tabelle3
Der Client (dessen Aufgabe die Formatierung ist) kann dann immer noch entscheiden, ob er zwischen den unterschiedlichen tTypes eine Leerzeile einfügt, oder doch eher einen dezenten Farbwechsel, oder, um Zicke Alzaimar zufrieden zu stellen, eben einen waagerechten Strich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz