# SQL verschieden Kombinationen in einer Zeile fest zählen



## the_nobody000 (20. Juli 2012)

Hallo,

und zwar verusche ich eine SQL Tabelle auszuwerten dabei soll das Ergebnis wie folgt aussehen.


DatumZeitOrt-AOrt-BAnzahlKombinationen2012-07-1807:00MünchenBerlin32012-07-1806:00HamburgStuttgart22012-07-1908:00MünchenBerlin32012-07-2009:00MünchenBerlin32012-07-1908:00HamburgStuttgart2

usw...

Es soll also in der AnzahlKombinationen spalte immer der Wert stehen wieviele Kombinationen aus Ort-A und Ort-B es insgesamt in der Tabelle gibt.

Jemand ne idee wie des ghet. Probier seit geraumer Zeit vlt stehe ich auch nur auf dem schlauch.

Danke schonmal

Grüße
nobody000


----------



## sheel (20. Juli 2012)

Hi

Siehe group by und count()


----------



## the_nobody000 (20. Juli 2012)

Ja das Problem ist nur das die alte Tabelle genutzt werden soll also fortlaufend nummeriert werden soll


----------



## sheel (20. Juli 2012)

Welche alte Tabelle? Und was soll fortlaufend sein?

Wie ist/sind den die Tabelle aufgebaut?


----------



## the_nobody000 (23. Juli 2012)

also das ganze beruht auf einer View die ungeführ so aufgebaut ist wie oben nur ohne die AnzahlKombinationenspalte. 

Nun brauche ich ein Select Query indem das Ergebnis mithilfe eines WHERE Commands eingegrenzt wird. In der letzten Spalte soll nun aber zur Auswertung alle tätsächlich vorkommenden Kombinationen als AnzahlKombinationen auftauchen. Bedeutet ich brauch hier nun den aufsummierten, gezählten Wert für jede Kombination aus der View, ohne dass die WHERE Klausel in meinem Statement dabei eingreift. 

Das Ganze wird weiterhin verkompliziert damit, dass ich das Datum variabel brauche, da ich das Ganze als Query in Visual Studio Reports eingeb um einen dynamische Report zu erstellen.


----------



## Yaslaw (23. Juli 2012)

Du kannst nicht die View als Quelle nehmen und deren WHERE aushebeln. Du musst die View kopieren und dort den WHERE löschen und damit weiterspielen.


----------



## Thomas Darimont (30. Juli 2012)

Hallo,

welches DBMS verwendest du denn?
Hier mal eine einfache Variante für Oracle mit Analytics:

```
WITH 
base_data AS (
  SELECT 1 as id, 'A' AS von, 'B' AS nach FROM dual
  UNION ALL 
  SELECT 2 as id, 'X' AS von, 'Y' AS nach FROM dual
  UNION ALL 
  SELECT 3 as id, 'A' AS von, 'B' AS nach FROM dual
  UNION ALL 
  SELECT 4 as id, 'X' AS von, 'Y' AS nach FROM dual
  UNION ALL 
  SELECT 5 as id, 'A' AS von, 'B' AS nach FROM dual
)
select id, von, nach, count(*) over (partition by von, nach) as cnt from base_data order by id;
```

Ausgabe:

```
ID VON NACH CNT
-- --- ---- ---
 1 A   B      3 
 2 X   Y      2 
 3 A   B      3 
 4 X   Y      2 
 5 A   B      3
```

Gruß Tom


----------

