Announcement

Collapse
No announcement yet.

2 verschiedene Count Abfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2 verschiedene Count Abfragen

    Hallo,

    ich möchte gerne eine DB abfragen und hierzu nach mehreren Kriterien Count Abfragen erstellen und diese in einer Abfrage in nebeneinander liegenden Spalte ausgeben. Bislang sieht mein Code für ein Kriterium folgedermaßen aus:

    Code:
    Select sum(x.a) as Abfrage1 from(
    select count (Eingangdat) as a from pm_bestand 
    where
    (Eingangdat >= to_date('<%datum_von%>', 'dd.MM.yyyy')
    and
    Eingangdat < to_date('<%datum_bis%>', 'dd.MM.yyyy')+1)
    and User Like 'KNB%'
    and Aus1Stat <> 'P'
    
    union all
    
    select count (Aus2Dat) as a  from pm_bestand
    where (Aus2Dat >= to_date('<%datum_von%>', 'dd.MM.yyyy')and
    Aus2Dat < to_date('<%datum_bis%>', 'dd.MM.yyyy')+1)
    and User Like 'KNB%'
    and Aus2Stat <> 'P'
    
    union all
      
    select count (Aus3Dat) as a from pm_bestand 
    where (Aus3Dat >= to_date('<%datum_von%>', 'dd.MM.yyyy')and
    Aus3Dat < to_date('<%datum_bis%>', 'dd.MM.yyyy')+1)
    and User Like 'KNB%' 
    and Aus3Stat <> 'P'
    )
    x
    Das erste Ergebnis funktioniert soweit. Nun würde ich gerne in eine zweite Spalte sum(x.b) as Abfrage2 ein Ergebnis angezeigt bekommen, dass mir alle Treffer zählt die die Bedingung Zusteller Like 'SOB%' erfüllen. Schön wäre es, wenn ich dies für 3 weitere Kriterien ergänzen könnte, also ein Egebnis bekäme mit 3-4 Spalten, die jeweils das Count Ergebis anzeigen.

    Geht sowas oder muss ich die Abfrage für jede Bedingung einzeln laufen lassen?

    Im Voraus mal besten Dank.

    Viele Grüße

    Andreas
    Zuletzt editiert von Windsurfer76; 22.03.2012, 16:18.

  • #2
    Hi,

    also die einfachste Möglichkeit wär wohl, die Statements im UNION ALL enstprechend zu erweitern:
    Code:
    Select sum(x.a) as Abfrage1,sum(x.b) abfrage2, sum(x.c) abfrage3 from(
    select count (col1) as a,NULL b,NULL c from pm_bestand 
    where...
    union all
    select NULL as a,count (col2) as b,NULL as c from pm_bestand
    where...
    union all
    select NULL as a,NULL as b,count (col3) as c from pm_bestand
    where...)
    x
    Für jede weitere Spalte musst dann die SQLs enstprechend erweitern.

    Dim

    PS: Wenn Du einen COUNT(spaltenname) verwendest, werde Einträge mit NULL Werten nicht mitgezählt. Das passiert bei einem count(*).
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Vielen Dank, es funktioniert

      Comment


      • #4
        Hallo,

        den Fehler 3464 konnte ich in der Oracle-Doku nicht finden. Kannst Du bitte mal den kompletten Fehlertext posten.

        Bei UNION hatte ich auch schon Probleme mit NULL-Angaben in Verbindung mit Number-Spalten.
        Bei mir half in der Regel eine Typumwandlung der NULL-Werte mittels TO_NUMBER(NULL). Somit ist der Typ klar definiert.

        Probiers einfach mal aus.


        Gruß Albernd

        Comment


        • #5
          Eigentlich hat meine Anfrage auch ins Access Forum gehört. Da ich die Lösung aber auch für Oracle benötige habe ich es hier gelassen(Daher konntest du den Fehlercode nicht finden ).

          Deine Lösung war trotzdem richtig. VIELEN DANK. Konnte die Logik auch in Access transferieren. Hier muss es dann beispielsweise lauten: cdbl(0) as StatusD

          Viele Grüße

          Andreas

          Comment

          Working...
          X