Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Group BY mit Zusammenfassung (https://www.delphipraxis.net/186497-group-mit-zusammenfassung.html)

franktron 7. Sep 2015 16:48

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

.Phil 7. Sep 2015 16:58

AW: Group BY mit Zusammenfassung
 
SELECT COUNT(IRGENDWAS), CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' AS GROUPBYSTATUS FROM xyzTABELLE GROUP BY GROUPBYSTATUS

mkinzler 7. Sep 2015 16:59

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;

nahpets 7. Sep 2015 17:03

AW: Group BY mit Zusammenfassung
 
Das sieht mir jetzt nicht unbedingt nach Group By aus.

Meinst Du eher sowas?
Code:
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
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.

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

frankyboy1974 7. Sep 2015 17:20

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

Dejan Vu 7. Sep 2015 19:24

AW: Group BY mit Zusammenfassung
 
SQL-Code:
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
oder
SQL-Code:
select Count(*)
     , Status
from (
  select case
           when Status = 10 then '10'
           else 'irgendein Status'
         end as Status
    from Tabelle
     ) x
group by Status
oder von mkinzler.

franktron 8. Sep 2015 08:22

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

jobo 8. Sep 2015 08:50

AW: Group BY mit Zusammenfassung
 
Zitat:

Zitat von franktron (Beitrag 1315060)
Dieser Code geht
Code:
select Count(*) ..
union all
select Count(*) ..

Ok, also wenn's nur um's Gehen geht, aber was ist mit Laufen?

Mein Favorit ist:
Post #2 von .Phil, ohne Union
der geht vielleicht nicht mal auf Anhieb, aber wenn alles richtig geschrieben wird, sollte er laufen.
:)

.Phil 8. Sep 2015 10:43

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:
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
oder
(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

frankyboy1974 8. Sep 2015 16:08

AW: Group BY mit Zusammenfassung
 
hallo,

also wenn Datenbanken heute sowas schaffen, bin ich echt raus
Zitat:

GROUP BY CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' END
. Als ich SQL gelernt habe, ging das noch nicht (ist ein paar Jahre her), aber die Zukunft gehört der Jugend.

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.
Seite 1 von 2  1 2      

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