![]() |
Datenbank: MSSQL • Version: egal • Zugriff über: egal
Group BY mit Zusammenfassung
Ich habe eine Tabellen die wie Folgt aussieht (mit Group by auf status)
(Kein Spaltenname) status 118 9 12 1 69 10 655 4 Nun möchte ich das es aber so aussieht wie mache ich das (Kein Spaltenname) status 69 10 785 egal welcher status |
AW: Group BY mit Zusammenfassung
SELECT COUNT(IRGENDWAS), CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' AS GROUPBYSTATUS FROM xyzTABELLE GROUP BY GROUPBYSTATUS
|
AW: Group BY mit Zusammenfassung
SQL-Code:
select
sum( KeinName), status group by Status where status = 10 union select sum( KeinName), 0 group by Status where status <> 10; |
AW: Group BY mit Zusammenfassung
Das sieht mir jetzt nicht unbedingt nach Group By aus.
Meinst Du eher sowas?
Code:
Zeig mal bitte das reale Statement mit dem Group by, dass es eine Tabelle mit 'ner Spalte Namens (Kein Spaltenname) gibt, glaub' ich jetzt erstmal nicht.
select Sum(Kein Spaltename) As Summe, Status from tabelle where status = 10 group by status
union all select Sum(Kein Spaltename) As Summe, Status from tabelle where status <> 10 group by status Enthält kein Spaltenname eigentlich die Anzahl der Sätze zum Status oder die Summe der Werte zum Status?
Code:
select Count(*) as Anzahl, Status from tabelle where status = 10 group by status
union all select Count(*) as Anzahl, Status from tabelle where status <> 10 group by status |
AW: Group BY mit Zusammenfassung
hallo,
du hast also als Ergebniss eine Tabelle erhalten, die noch nicht ganz deinen Vorstellungen entspricht, wenn du jetzt verschachteltest SQL nimmst, solltest es ganz einfach funktionieren. Stell dir vor deine Ergebnisstabelle würde so irgenwo in der Datenbank stehen. Welches SQL-Statement müsste du jetzt auf deine Ergebnisstabelle anwenden, um zu deiner Ergebnismenge zu kommen? mfg |
AW: Group BY mit Zusammenfassung
SQL-Code:
oder
select Count(*)
,case when Status = 10 then '10' else 'irgendein Status' end as Status from Tabelle Group by case when Status = 10 then '10' else 'irgendein Status' end
SQL-Code:
oder von mkinzler.
select Count(*)
, Status from ( select case when Status = 10 then '10' else 'irgendein Status' end as Status from Tabelle ) x group by Status |
AW: Group BY mit Zusammenfassung
Dieser Code geht
Code:
select Count(*) as Anzahl, Status from tabelle where status = 10 group by status
union all select Count(*) as Anzahl, 0 as Status from tabelle where status <> 10 |
AW: Group BY mit Zusammenfassung
Zitat:
Mein Favorit ist: ![]() der geht vielleicht nicht mal auf Anhieb, aber wenn alles richtig geschrieben wird, sollte er laufen. :) |
AW: Group BY mit Zusammenfassung
Es fehlt tatsächlich ein END im Case-Statement und in der Group by Klausel muss entweder nochmal die Case-Anweisung ausgeschrieben werden oder der Select muss verschachtelt werden.
Also
SQL-Code:
oder
SELECT COUNT(*) AS CNT, CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' END AS GROUPBYSTATUS
FROM xyzTABELLE GROUP BY CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' END (was langsamer sein müsste durch die doppelte Summierung)
SQL-Code:
SELECT SUM(CNT), GROUPBYSTATUS FROM
( SELECT COUNT(*) AS CNT, CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' END AS GROUPBYSTATUS FROM xyzTABELLE GROUP BY STATUS ) a GROUP BY GROUPBYSTATUS |
AW: Group BY mit Zusammenfassung
hallo,
also wenn Datenbanken heute sowas schaffen, bin ich echt raus Zitat:
mfg |
AW: Group BY mit Zusammenfassung
Sie schaffen auch andere Dinge, die ursprüngliche Antwort von .Phil lautete auf "GROUP BY GROUPBYSTATUS" also dem Alias. Nett finde ich auch "Group by 2", was für die durchnummerierte Spalte steht.
Finde ich beides noch besser, weil kompakter. Das mit der Spaltennummer ist aber auch eine Gradwanderung, falls das Select mal geändert wird. Glaub MS SQL kann aber beide Varianten oben nicht, bin mir nicht sicher. MySQL schluckt das schon eher. Und dass ein Ausdruck im Group By wiederholt wird- sei es noch so langatmig-, wenn es kein Aggregat ist, ist eigentlich schon immer so oder? Ich frag jetzt nicht wie alt Du bist. |
AW: Group BY mit Zusammenfassung
Zitat:
|
AW: Group BY mit Zusammenfassung
Ne wie gesagt, by MS (falls Du das mit TSQL meinst) geht es wohl nicht. Hab selber keins.
Zumindest unter Mysql mein ich klappt die ALIAS Gruppierung. |
AW: Group BY mit Zusammenfassung
Ja: TSQL = Transact SQL.
Ich dachte schon, ich müsste mal wieder in die Doku schauen. |
AW: Group BY mit Zusammenfassung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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