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:
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.
 
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.
 
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)
 
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.
 
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.
 
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:
Zurück
Oben