AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Group BY mit Zusammenfassung
Thema durchsuchen
Ansicht
Themen-Optionen

Group BY mit Zusammenfassung

Ein Thema von franktron · begonnen am 7. Sep 2015 · letzter Beitrag vom 9. Sep 2015
Antwort Antwort
Seite 1 von 2  1 2      
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Group BY mit Zusammenfassung

  Alt 7. Sep 2015, 16:48
Datenbank: MSSQL • Version: egal • Zugriff über: egal
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
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
.Phil

Registriert seit: 19. Sep 2012
5 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Group BY mit Zusammenfassung

  Alt 7. Sep 2015, 16:58
SELECT COUNT(IRGENDWAS), CASE WHEN STATUS = '10' THEN '10' ELSE 'nicht 10' AS GROUPBYSTATUS FROM xyzTABELLE GROUP BY GROUPBYSTATUS
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Group BY mit Zusammenfassung

  Alt 7. Sep 2015, 16:59
SQL-Code:
  select
    sum( KeinName), status
  group
    by Status
  where
    status = 10
union
  select
    sum( KeinName), 0
  group
    by Status
  where
    status <> 10;
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Group BY mit Zusammenfassung

  Alt 7. Sep 2015, 17:03
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

Geändert von nahpets ( 7. Sep 2015 um 19:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Group BY mit Zusammenfassung

  Alt 7. Sep 2015, 17:20
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
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!

Geändert von frankyboy1974 ( 7. Sep 2015 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Group BY mit Zusammenfassung

  Alt 7. Sep 2015, 19:24
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.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Group BY mit Zusammenfassung

  Alt 8. Sep 2015, 08:22
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
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Group BY mit Zusammenfassung

  Alt 8. Sep 2015, 08:50
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.
Gruß, Jo

Geändert von jobo ( 8. Sep 2015 um 08:52 Uhr)
  Mit Zitat antworten Zitat
.Phil

Registriert seit: 19. Sep 2012
5 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Group BY mit Zusammenfassung

  Alt 8. Sep 2015, 10:43
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 = '10THEN '10ELSE 'nicht 10END AS GROUPBYSTATUS
FROM xyzTABELLE
GROUP BY CASE WHEN STATUS = '10THEN '10ELSE 'nicht 10END
oder
(was langsamer sein müsste durch die doppelte Summierung)

SQL-Code:
SELECT SUM(CNT), GROUPBYSTATUS FROM
(
  SELECT COUNT(*) AS CNT, CASE WHEN STATUS = '10THEN '10ELSE 'nicht 10END AS GROUPBYSTATUS
  FROM xyzTABELLE
  GROUP BY STATUS
) a
GROUP BY GROUPBYSTATUS
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#10

AW: Group BY mit Zusammenfassung

  Alt 8. Sep 2015, 16:08
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
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
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