![]() |
Datenbank: MSSQL • Zugriff über: MSSQL
MSSQL Spaltennamen bei Mehrfachabfrage?
Hi,
folgender SQL code liefert für die ersten beiden Spalten korrekte Namen wie famstand und AnzVerträge. Leider nicht für die Spalten 3-5. In Spalte 3 bekomme ich keinen Namen angezeigt, in Spalte 4 steht eine "1" und in Spalte 5 "2". Warum werden AnzKinder, AnzKampagnen und EKjahr nicht als Spaltennamen angezeigt?????
SQL-Code:
Vielen Dank
SELECT A.familienstand As famstand, COUNT(B.kunden_id) AS AnzVerträge,
(SELECT COUNT(C.kunden_id) AS AnzKinder FROM kind C WHERE C.kunden_id= 7 ), (SELECT COUNT(D.kunden_id) AS AnzKampagnen FROM rel_kuka D WHERE D.kunden_id=7), (SELECT COUNT(E.kunden_id) AS EKjahr FROM einkommen E WHERE E.kunden_id=7 AND E.von=(SELECT MAX(von)FROM einkommen E WHERE E.kunden_id=7)) FROM familienstand A JOIN vertrag B ON B.kunden_id = A.kunden_id WHERE A.kunden_id = 7 AND A.von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = 7) GROUP BY A.familienstand okoeller |
Re: MSSQL Spaltennamen bei Mehrfachabfrage?
SQL-Code:
SELECT A.familienstand As famstand, COUNT(B.kunden_id) AS AnzVerträge,
(SELECT COUNT(C.kunden_id) FROM kind C WHERE C.kunden_id= 7 ) AS AnzKinder, ... |
Re: MSSQL Spaltennamen bei Mehrfachabfrage?
und noch ein Versuch...
SQL-Code:
und noch ein anderer Vorschlag, der gleich für alle Kunden gilt...
SELECT a.familienstand AS famstand,
COUNT(b.kunden_id) AS AnzVerträge, (SELECT COUNT(kunden_id) FROM kind WHERE kunden_id = 7) AS AnzKinder, (SELECT COUNT(kunden_id) FROM rel_kuka WHERE kunden_id = 7) AS AnzKampagnen, (SELECT COUNT(kunden_id) FROM einkommen WHERE kunden_id = 7 AND von = (SELECT MAX(von) FROM einkommen WHERE kunden_id = 7)) AS EKjahr FROM familienstand a INNER JOIN vertrag b ON b.kunden_id = a.kunden_id WHERE a.kunden_id = 7 AND a.von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = 7) GROUP BY a.familienstand
SQL-Code:
Gruss
SELECT a.kunden_id,
a.familienstand AS famstand, COUNT(*) AS AnzVerträge, kinder.anzahl AS AnzKinder, kampagnen.anzahl AS AnzKampagnen, ekjahr.anzahl AS EKjahr FROM familienstand a INNER JOIN vertrag b ON b.kunden_id = a.kunden_id LEFT JOIN (SELECT kunden_id, COUNT(*) anzahl FROM kind GROUP BY kunden_id) kinder ON a.kunden_id = kinder.kunden_id LEFT JOIN (SELECT kunden_id, COUNT(*) anzahl FROM rel_kuka GROUP BY kunden_id) kampagnen ON a.kunden_id = kampagnen.kunden_id LEFT JOIN (SELECT kunden_id, COUNT(*) anzahl FROM einkommen e WHERE von = (SELECT MAX(von) FROM einkommen WHERE kunden_id = e.kunden_id) GROUP BY kunden_id) ekjahr ON a.kunden_id = ekjahr.kunden_id WHERE a.von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = a.kunden_id) GROUP BY a.kunden_id, a.familienstand, kinder.anzahl, kampagnen.anzahl, ekjahr.anzahl Thorsten |
Re: MSSQL Spaltennamen bei Mehrfachabfrage?
Hab auch noch einen:
SQL-Code:
[edit] Quatsch, das wird nicht funktionieren, es wird wohl immer die selbe Anzahl in allen Feldern stehen. [/edit]
SELECT A.familienstand As famstand,
COUNT(B.kunden_id) AS AnzVerträge, COUNT(C.kunden_id) AS AnzKinder, COUNT(D.kunden_id) AS AnzKampagnen, COUNT(E.kunden_id) AS EKjahr FROM familienstand A JOIN vertrag B ON B.kunden_id = A.kunden_id JOIN kind C ON C.kunden_id = A.kunden_id JOIN rel_kuka D ON D.kunden_id = A.kunden_id JOIN einkommen E ON E.kunden_id = A.kunden_id WHERE A.kunden_id = 7 AND A.von = (SELECT MAX(F.von) FROM familienstand F WHERE F.kunden_id = A.kunden_id) AND E.von = (SELECT MAX(G.von) FROM einkommen G WHERE G.kunden_id = A.kunden_id) GROUP BY A.familienstand |
Re: MSSQL Spaltennamen bei Mehrfachabfrage?
Hallo und vielen Dank für die vielen Antworten.
Die Beispiele von mkinzler und omata funktionieren wunderbar. Wenn ich jetzt noch folgende Änderung einführe bekomme ich auch noch das einkommen des Kunden.
SQL-Code:
Somit erhalte ich für einen bestimmten Kunden den Familienstand, die Anzahl seiner Verträge, die Anzahl seiner Kinder, die Anzahl der Kampagnen in denen er eingetragen ist und sein letztes Jahreseinkommen.
..
(SELECT E.jahreseinkommen FROM einkommen E WHERE E.kunden_id=7 AND E.von=(SELECT MAX(von)FROM einkommen E WHERE E.kunden_id=7))AS EKjahr ..
SQL-Code:
Die Variante von omata für alle Kunden werde ich mal aufheben, vielleicht brauch ich sie noch an anderer Stelle.
SELECT A.familienstand As famstand, COUNT(B.kunden_id) AS AnzVerträge,
(SELECT COUNT(C.kunden_id) FROM kind C WHERE C.kunden_id= 7 )AS AnzKinder, (SELECT COUNT(D.kunden_id) FROM rel_kuka D WHERE D.kunden_id=7)AS AnzKampagnen, (SELECT E.jahreseinkommen FROM einkommen E WHERE E.kunden_id=7 AND E.von=(SELECT MAX(von)FROM einkommen E WHERE E.kunden_id=7))AS EKjahr FROM familienstand A JOIN vertrag B ON B.kunden_id = A.kunden_id WHERE A.kunden_id = 7 AND A.von = (SELECT MAX(von) FROM familienstand WHERE kunden_id = 7) GROUP BY A.familienstand okoeller |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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