Psycho Fred Geschrieben 24. März 2004 Geschrieben 24. März 2004 Hallo Leutz, hab hier ne kundendatenbank. ich soll rausfiltern, wie viele kunden weiblich und wie viele kunden männlich sind. dabei steht die spalte fdlAnrede = 1 für frauen und = 2 für männer SELECT Count(fdlAnrede = '1') AS Frauen, Count (fdlAnrede = '2') AS Männer FROM tblKunden GROUP BY fdlAnrede; da krieg ich dann auch die richtigen zahlen raus, aber halt untereinander und in jeder spalte das selbe, aber nicht das richtige ergebnis in der richtigen spalte. hat jemand ne idee? danke im voraus.
Peregrin Geschrieben 24. März 2004 Geschrieben 24. März 2004 hi, ohne gruppierung klappt das auch:SELECT Count(fdlAnrede = '1') AS Frauen, Count (fdlAnrede = '2') AS Männer FROM tblKunden hth...
Goos Geschrieben 24. März 2004 Geschrieben 24. März 2004 Original geschrieben von Psycho Fred SELECT Count(fdlAnrede = '1') AS Frauen, Count (fdlAnrede = '2') AS Männer FROM tblKunden GROUP BY fdlAnrede; hat jemand ne idee? danke im voraus. Das geht so nicht, so kannst das Count nicht verwenden. Die Richtung in die du da gehst waere sowas wie ein Subquery im Count, aber das geht nicht. Wieso willst du das denn eigentlich unbedingt in einer Abfrage haben? Goos
Psycho Fred Geschrieben 24. März 2004 Autor Geschrieben 24. März 2004 habe die lösung gefunden, trotzdem vielen dank für eure hilfe. SELECT fdlAnrede, Count(fdlAnrede) AS Anzahl FROM tblKunden GROUP BY fdlAnrede;
Goos Geschrieben 24. März 2004 Geschrieben 24. März 2004 Da steht dann aber nur 1 und 2 und nicht Frauen und Maenner Goos
Peregrin Geschrieben 24. März 2004 Geschrieben 24. März 2004 Original geschrieben von Psycho Fred habe die lösung gefunden, trotzdem vielen dank für eure hilfe. SELECT fdlAnrede, Count(fdlAnrede) AS Anzahl FROM tblKunden GROUP BY fdlAnrede; hmm... aber so stehen die einträge für frauen und männer weiterhin untereinander... wenn dein dbms korrelierte abfragen unterstützt funktioniert das hier:select max(anz_frauen) as anz_frauen, max(anz_maenner) as anz_maenner from ( select count(*) as anz_frauen, 0 as anz_maenner from tblKunden where fdlAnrede = '1' union select 0 as anz_frauen, count(*) as anz_maenner from tblKunden where fdlAnrede = '2' ) ansonsten könnte man den part in klammern auch in eine view auslagern. hth...
just_me Geschrieben 24. März 2004 Geschrieben 24. März 2004 ... oder in schlichte subselects umwandeln: SELECT (SELECT Count(fdlAnrede) FROM tblKunden WHERE fdlAnrede = 1) AS [weibliche Kunden], (SELECT Count(fdlAnrede) FROM tblKunden WHERE fdlAnrede = 2) AS [männliche Kunden] FROM tblKunden
Goos Geschrieben 24. März 2004 Geschrieben 24. März 2004 Je nach DBMS kanns auch so gehen: SELECT COUNT(CASE WHEN fdlAnrede = '1' THEN 1 END) AS Frauen, COUNT (CASE WHEN fdlAnrede = '2' THEN 1 END) AS Männer FROM tblKunden Goos
mme Geschrieben 25. März 2004 Geschrieben 25. März 2004 Original geschrieben von Goos Je nach DBMS kanns auch so gehen: .... Von Oracle weiß ich das es da möglich ist case zu verwenden, in welchen DBMS geht das noch? Auch in Mysql und MS-sqlserver? Grüße mme
just_me Geschrieben 25. März 2004 Geschrieben 25. März 2004 MS-SQL: Ja MySQL: nein - afaik, noch nicht
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden