Announcement

Collapse
No announcement yet.

Subselect-Abfragen mit Count in zwei Tabellen

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

  • Subselect-Abfragen mit Count in zwei Tabellen

    Ich habe Probleme mit einem Script. Ich möchte aus einer Tabelle in einer Abfrage für einen Wert (Spalte) mehrere Abfragen mit unterschiedlichen Filtern erstellen.

    Select jahr, count(*) from Tabelle1 a, Tabelle2 b where
    a.ident.=b.ident and b.feld='XXX'
    x
    x
    x
    group by jahr order by jahr


    Damit habe ich dann Spalte 1, aber wie frage ich Spalte 2, 3, 4, 5 ab? Für die Folgenden Spalten kommt jeweils eine Bedingung hinzu nämlich Status='1' für Spalte 2, Status='2' für Spalte 3. etc. es werden maximal 10 Spalten.

    Die Spalten 2 bis x sind IMMER Teilmengen von Spalte 1. In den einzelnen Spalten kann ein Wert auch mal 0 sein. Ich habe unmögliche Konstruktionen für die Subselects probiert, die alle nicht laufen. Entweder mit Fehlermeldung oder mit unmöglichen Ergebnissen.

    Wie muß ich das formulieren, damit es korrekt läuft?




  • #2
    Genau so
    where Status='1' für Spalte 2, Status='2'
    "Die Spalten 2 bis x sind IMMER Teilmengen von Spalte 1."
    Wie definiert du das?
    Entweder du machst vorher ein subselct auf das Ergebnis der Spalte 1 oder es geht mit den where-Bedingungen
    Christian

    Comment


    • #3
      Dass soll so aussehen

      Jahr Spalte1 Spalte2 Spalte3 Spalte4
      2000 100 20 30 50

      Da war irgendwas mit AS SELECT aber die DB zeigt mir dauern den Vogel! Denn dieses AS SELECT muß sich ja auch auf a.ident=b.ident beziehen


      Comment


      • #4
        Was ist AS SELECT?
        AS ist das Schlüsselwort für einen Alias
        Warum nun ein
        Select jahr, count(*) from Tabelle1 a
        left join tabelle 2 b
        on a.ident.=b.ident
        where b.feld='XXX' and ......

        nicht funtkionieren soll erschließt sich nicht
        Wenn dann wäre
        select count(*),
        (select....) as Spalte2
        korrekt
        Zuletzt editiert von Christian Marquardt; 03.09.2021, 15:14.
        Christian

        Comment


        • #5
          Okay.... dann hab ich mit dem "AS" was falsch verstanden. Ich probiere es heute Abend aus und hoffe, daß es klappt.

          Einstweilen vielen Dank!

          Comment


          • #6
            Ich habe Deine Detailangaben nicht genau verstanden. Wenn es um die Aggregation in verschiedene Spalten unter verschiedenen Ausgangsbedingungen geht, könnte man u.a. mit Case When arbeiten.
            Code:
            -- beliebiges Beispiel aus dem Netz
            SELECT ID,
            CASE
            WHEN StartTime > Appt
              THEN Field_A
            WHEN StartTime BETWEEN Appt AND DATE_ADD(Appt, INTERVAL 1 MONTH)
              THEN Field_B END AS field1,
            CASE
            WHEN StartTime > Appt
              THEN Field_C
            WHEN StartTime BETWEEN Appt AND DATE_ADD(Appt, INTERVAL 1 MONTH)
              THEN Field_D END AS field2
            FROM TableA;
            Das wäre die Grundlage, Count bzw Sum und Group by gehören noch drum rum.
            Alternativ vielleicht einzelne Spalten per (Select .. from ..) as SpalteXY verwenden.

            Wenn Du handfesterer Hinweise wünscht, müsstest Du vielleicht mal konkretere Beispiele oder Fehlermeldungen liefern.
            Gruß, defo

            Comment

            Working...
            X