Mehrere Spalten Zählen

felix85

Benutzer
Beiträge
5
Hallo liebe Forumsmitglieder,

ich verzweifle an meiner SQL-Anpassung.
Und zwar möchte ich mehrere einzelne Fälle Zählen, d.h.
Mich interessiert wie viele Autos wir im Lager haben und
aktuelle Aufträge.

Meine Abfrage:
Select count(*) AS Anzahl_Autos
(
Select carid
from Cars
where
verk = 0
group by carid
); // Somit erhalte ich die Anzahl Autos die noch nicht verkauft wurden.
Select count(*) AS Anzahl_Auftraege
(
Select distinct orderid
from Cars
where
land = 'DE'
group by orderid
); // Distinct weil doppelte Aufträge möglich sind

Ich möchte nun diese Abfragen in einer Abfrage abbilden.
Bsp.:
Anzahl_Autos | Anzahl_Auftraege | Mögliche weitere Zählungen
25 | 8

Habt ihr ein Lösungsansatz ?

Ich danke euch jetzt schon im Voraus für eure Unterstützung
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.729
suchst Du soetwas?

Code:
edb=# create table auto (typ text, anzahl int, status text);
CREATE TABLE
edb=*# insert into auto values ('Trabbi',5,'Lager');
INSERT 0 1
edb=*# insert into auto values ('Trabbi',3,'Verkauft');
INSERT 0 1
edb=*# insert into auto values ('Mercedes',3,'Verkauft');
INSERT 0 1
edb=*# insert into auto values ('Opel',3,'Lager');
INSERT 0 1
edb=*# select sum(anzahl) filter (where status = 'Lager') as anzahl_lager, sum(anzahl) filter (where status = 'Verkauft') as anzahl_verkauft from auto ;
 anzahl_lager | anzahl_verkauft
--------------+-----------------
            8 |               6
(1 row)

edb=*#

Falls ich falsch liege: bitte Tabellendefinition, Beispieldaten und was rauskommen soll, damit das nachvollziehbar wird.
 

felix85

Benutzer
Beiträge
5
Hi, vielen lieben Dank für deine schnelle Antwort .
Leider kann ich dieses Prinzip an bestehender Tabelle nicht Anwenden.

Tabellendefinition:
carid, orderid, land, lagerort
123, 732653, DE, 2
456, 732768, NL, 1
789, 735477, US, 1
234, 732653, DE, 2
567, 732758, NL, 2
890, 735477, TK, 1

Es interessiert mich,
wie viele Autos habe wir im System,
wie viele Bestellungen ACHTUNG, auch doppelte möglich,
In einen bestimmten Land= "DE"und wieviele Lagerorte besitzen wir


Kurz gesagt, es interessiert mich wie oft kommen die Daten in jeder Spalte vor.
Nach dem prinzip, distinct carid, distinct orderid, distinct lagerort.
 

akretschmer

Datenbank-Guru
Beiträge
9.729
also so?

Code:
edb=*# select * from felix ;
 carid | orderid | land | lagerort
-------+---------+------+----------
   123 |  732653 | DE   |        2
   456 |  732768 | NL   |        1
   789 |  735477 | US   |        1
   234 |  732653 | DE   |        2
   567 |  732758 | NL   |        2
   890 |  735477 | TK   |        1
(6 rows)

edb=*# select count(1) as anzahl, count(distinct orderid) as bestellungen, count(distinct lagerort) as lagerorte from felix where land = 'DE' ;
 anzahl | bestellungen | lagerorte
--------+--------------+-----------
      2 |            1 |         1
(1 row)
 

felix85

Benutzer
Beiträge
5
JAEIN. Es interessiert mich. Wieviele Länder Kommen vor, nicht Auftragsbezogen heißt die Spalte muss einzel betrachtet werden.
Bsp.: Selct count(*) (Select distinct lagerort AS Anzahl_Lagerorte from cars);
Selct count(*) (Select distinct bestellungen AS Anzahl_bestellungen from cars where land = "DE");
Selct count(*) (Select distinct carid AS Anzahl_Autos from cars);
Ziel ist es oben gelistete Abfragen als eine Darzustellen.
 

akretschmer

Datenbank-Guru
Beiträge
9.729
dann spielen wir mal noch a bissl weiter ...

Code:
edb=*# select count(distinct land) as anz_laender, count(distinct lagerort) as anz_lagerorte, count(distinct orderid) bestellungen, count(distinct carid) as autos, count(distinct orderid) filter (where land = 'DE') as best_de, count(distinct orderid) filter (where land = 'US') as orders_amiland from felix ;
 anz_laender | anz_lagerorte | bestellungen | autos | best_de | orders_amiland
-------------+---------------+--------------+-------+---------+----------------
           4 |             2 |            4 |     6 |       1 |              1
(1 row)

Deine textuelle Beschreibung ist wirr, ich bat Dich um Beispieldaten und was bei rauskommen soll.
 

felix85

Benutzer
Beiträge
5
Genau das Funktioniert super im SQL Client aber in SAP wird es nicht ausgeführt, count(distinct spalte) = Problem,
deswegen habe ich mir mit einen externen Zähler geholfen.
Der SQL Command Editor führt dieser über die Transaktion DBACOCKPIT nicht aus.

Vielen Dank für deinen Einsatz.
 
Werbung:
Oben