Announcement

Collapse
No announcement yet.

Ausgabereihenfolge statisch

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

  • Ausgabereihenfolge statisch

    Hallo, ich habe eine cuont Abfrage auf einen Status 1 und 2.
    Diese Abbfrage ist über ein union zusammengefasst.

    select count feld1 from db where status = '1'as Status1Status2
    union
    select count feld1 from db where status = '2'

    Nun aber habe ich das Problem, dass immer das Ergebnis mit den wenigsten counts zuerst ausgegeben wird. Also die Abrfrage, die am schnellsten ist.

    Wie kann ich die Ausgabe FEST Steuern, dass immer zuerst Status1 und erst dann Status 2 ausgegben wird?

    ALSO Z.B. WIE FOLGT:

    Status1Status1
    ____________

    10
    8

  • #2
    Du möchtest sortieren. Also musst du einen 'Order By' an dein SQL mit entsprechendem Sortierkriterium, hier Status, anhängen.

    Außerdem möchtest du wahrscheinlich keinen 'Union' sondern einen 'Union All'.

    Comment


    • #3
      Bisher hatte ich ein order by 1. Das hilft aber nicht.
      Wenn ich order by Status verwende, bekomme ich folgende Fehlermeldung.

      Msg 104, Level 16, State 1, Line 1
      ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator

      Warum uinion all? Was ist hier anderst als beim union?

      Comment


      • #4
        Msg 104, Level 16, State 1, Line 1
        ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator
        Der Order By bezieht sich auf alle Union Zweige und kann sich daher nur noch auf das beziehen was aus dem Union rauskommt. Oder anders gesagt wie sollte er nach Status sortieren wenn es in einem der Union Zweige keinen Status gibt oder noch schlimmer dort eine andere Bedeutung hat? Um nach Status zu sortieren muss die die also in der Selectliste erwähnen.

        Wenn du die Zeile im Ergebnis nicht gebrauchen kannst musst du halt noch ein Select um dein jetziges Statement rumschreiben das diese Spalte wieder entfernt.

        [Highlight=SQL]Select Status1Status2
        from (select count(feld1) as Status1Status2, status from db where status = '1'
        union
        select count(feld1), status from db where status = '2') as Tabelle
        order by Status [/Highlight]
        Achtung nicht geprüft und Syntax irgendwo bestimmt Datenbank spezifisch.

        Warum uinion all? Was ist hier anderst als beim union?
        Union liefert dir eindeutige Ergebnisse. In deinem Fall würdest du wenn beide counts gleich sind nur eine Ergebnisszeile bekommen. Union All liefert alle.

        Comment


        • #5
          Der Select sieht wie folgt aus:

          SELECT count([SeqNr])as Status1Status2Status3
          FROM [DB].[DB].[dbo].[Tabelle]
          where ISNUMERIC(Nummer) <> 1
          and (Status = 20)
          AND (DateTime >= DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 0)) AND
          (DateTime < DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 1))
          union
          SELECT count([SeqNr])
          FROM [DB].[DB].[dbo].[Tabelle]
          where Status = 20 and ISNUMERIC(Nummer) = 1
          AND (DateTime >= DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 0)) AND
          (DateTime < DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 1))
          union
          SELECT count([SeqNr])
          FROM [DB].[DB].[dbo].[Tabelle]
          where Status = 80
          AND (DateTime >= DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 0)) AND
          (DateTime < DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 1))
          order by 1 asc


          In den ersten beiden Abfragen wird der gleiche Status abgefragt (20). Jedoch auf einen numerischen und einen nicht numerischen wert in Spalte Nummer.
          Die Ausgabe soll genau in der Reihenfolge der 3 Abfragen erfolgen.
          Im Moment jdeoch wird immer der kleinste Wert aus dem count zuerst angegeben. Ebend dieser, welcher zuerst durchgezählt ist.

          Comment


          • #6
            Hallo,

            bitte beachten: Formatierung von SQL in Beiträgen

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X