SQL Inhalte (Stati) einer Spalte als Summe in 2 Spalten ausgeben

apo78

Cadet 2nd Year
Registriert
Dez. 2009
Beiträge
30
Hallo,

ich habe ein kleines SQL-Problem, und zwar soll folgende Tabelle...

Verbindung---|Status|
101|-----------| 1
102|-----------| 1
103|-----------| 0
104|-----------| 0
105|-----------| 0
106|-----------| 1
107|-----------| 1

so ausgegeben werden:

------------------------|Online|--------|Offline
Verbindung|----------| 4 |--------| 3

Ist das mit sql-Möglich ich habe nun schon einiges ausprobiert allerdings bin ich nicht wirklich zu dem gewünschten Ergebnis gekommen.
 
Zuletzt bearbeitet:
Hi,

ich habe nun schon einiges ausprobiert allerdings bin ich nicht wirklich zu dem gewünschten Ergebnis gekommen.

Dann teile uns doch mal mit, was genau du schon probiert hast - einfach nur die Lösung hinhauen ist nicht sinnvoll, der Lerneffekt bei dir wäre gleich Null.

Nur zwei Dinge:

1. Ja, ist selbstverständlich mit SQL möglich
2. Der Plural von "Status" ist "Status" mit langem "u", nicht "Stati", das Wort gibt es nicht.

VG,
Mad
 
Das wird wird so nicht klappen, bzw nur mit zwei Abfragen, da du ja mit COUNT() zählen kannst aber durch die WHERE Einschränkung immer nur das eine Ergebnis im Resultset haben wirst.

Oder doch .. Also bei MS SQL gehts so:

Select count(*),
(Select count(*) from Tabelle where Status = 0)
from Tabelle
where Status = 1
 
Dann eben Status mit langem 'u'... ;)

Versucht, also ohne sql-Fehler, habe ich bisher folgendes:

select count(a.status), count (b.status)
from v_stat a, v_stat b
where a.status = 1 and b.status = 0;

Das hat mir allerdings nichts gebracht. Dann hab ich es noch über ein Union versucht, wobei das schon die Sache recht gut löst nur stimmt die Formatierung noch nicht

select count status from v_stat wehere status = 1
union
select count status from v_stat wehere status = 0
 
Das hier wäre auch ne Lösung, alles in einem Select:

Select Verbindung,
CASE [Status]
when 0 then 'offline'
else 'online'
End as 'Status'
,COUNT([Status]) as 'statuscount'

From [deineTable]

Group by
Verbindung
,[Status]

order by Verbindung


Ausgabe wäre dann anch folgendem schema
Verbindung 1 -- Online -- 4
Verbindung 1 -- Offline -- 2
etc.
 
Ich kann es gerade nicht ausprobieren aber versuchen würde ich sowas in der folgenden Art:

SELECT
( SELECT count(*) FROM <Tabelle> WHERE Status = '1' ) AS online,
( SELECT count(*) FROM <Tabelle> WHERE Status = '0' ) AS offline
FROM <Tabelle>.

Unabhängig wie du es am Ende löst wäre es nett wenn du uns verrätst wie es am Ende geklappt hat :)
 
Noch ne andere Möglichkeit:

select
sum(status) as online,
sum(case when status = 0 then 1 else 0 end) as offline
from table

Subselect nach Möglichkeit vermeiden, kann einen schnell in Teufels (performance-)Küche bringen ;-)
 
Zurück
Oben