Announcement

Collapse
No announcement yet.

union reihenfolge

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

  • union reihenfolge

    Hallo, ich habe zwei SQL-Abfragen über ein UNION zusammengefasst.
    Nun muss die Ausgabe des Ergebnis jedoch immer in einer vorgegebenen Reihenfolge erfolgen (A_B_C). Im Moment jedoch ist die Reihenfolge immer so, dass das kleinste Ergebnis dieser drei zuerst und dann gefolgt vom nächst kleineren Ergebnis usw. erfolgt.
    Da ich ein group by verwende weiss ich nicht, wie ich die Reihenfolge der Ausgabe vorgeben bzw. sortieren kann. Die Ausgabe erfolgt also nach der Verarbeitungsgeschwindigkeit.

    SELECT count([Spalte]) as A_B_C
    FROM [SERVER].[Tabelle].[dbo].[Spalte]
    where ISNUMERIC(Spalte) <> 1
    and (Spalte = 1)
    AND (Date >= DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 0)) AND
    (Date < DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 1))
    union
    SELECT count([Spalte])
    FROM [Server].[Tabelle].[dbo].[Spalte]
    where (Spalte = 1 or Spalte = 2)
    AND (Time >= DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 0)) AND
    (Time < DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 1))
    group by Spalte

  • #2
    Hinter dem Group by einfach den Order by packen. Wenn man dort bei deiner Datenbank nicht den Spalten Alias verwenden kann kannst du auch einfach die Position angeben(also order by 1).

    Comment


    • #3
      Hallo,

      Hinweis: Formatierung von SQL in Beiträgen

      Die Bedingung "...where ISNUMERIC(Spalte) <> 1 and (Spalte = 1)..." sieht mir etwas widersprüchlich aus. Nach meiner Auffassung ist das IMMER Falsch!

      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


      • #4
        Hallo Ralf, wenn ich das order by hinzufüge bekomme ich folgende Fehlermeldung:

        ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.

        Comment


        • #5
          Nach was hast du den Versucht zu Ordern? Und welche DB ist das?

          Wenn du versucht hast nach Spalte zu sortieren und nicht nach A_B_C dann musst du Spalte mit in die Selectliste aufnehmen und zurückgeben. Nach einem Union sind die Quellenbezeichnungen nicht mehr zugänglich. Könnten ja in den verschiedenen Zweigen des Union auch unterschiedlich sein. Du kannst dich nur auch Daten beziehen die auch zurückgegeben werden.

          Comment


          • #6
            Die Datenbank ist SQL Server 2005. Order by 1 funktioniert. Was genau (welcher wert) wird mit order by 1 sortiert?

            Comment


            • #7
              Was genau (welcher wert) wird mit order by 1 sortiert?
              Die erste Spalte in der Ausgabe.

              Comment

              Working...
              X