Announcement

Collapse
No announcement yet.

Ersatz für Access FIRST ???

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

  • Ersatz für Access FIRST ???

    Hallo, ich hab ein großes Problem, ich bin von Access auf SQL umgestiegen.
    Nun will ich meine Abfragen dort einbauen, aber ich bekomme die Meldung, das die FIRST-Funktion, die ich in Access verwendet habe hier nicht Funktioniert. Weiß jemand wie ich das jetzt Vernünftig realisieren kann, so dass ich auch die gleichen Werte wie in Access bekomme?

    Hier mal meine Abfrage:

    SELECT [dbo_Vertraege].[KG_ID], Count([dbo_Vertraege].[W_ID]) AS [Anzahl von W_ID], First([dbo_Vertraege].[Matchcode]) AS [ErsterWert von Matchcode], Sum([Vertragssumme].[Vertragssumme]) AS Gesamtsumme, First([dbo_Vertraege].[SL]) AS SL, First([dbo_Vertraege].[PG_ID]) AS PG_ID, First([dbo_Branche].[Branche]) AS Branche
    FROM (dbo_Vertraege INNER JOIN Vertragssumme ON [dbo_Vertraege].[W_ID]=[Vertragssumme].[W_ID]) LEFT JOIN dbo_Branche ON [dbo_Vertraege].[B_ID]=[dbo_Branche].[B_ID]
    WHERE ((([dbo_Vertraege].[Status])=1)) Or ((([dbo_Vertraege].[Status])=-1) And (([dbo_Vertraege].[K_Datum])>Date())) Or ((([dbo_Vertraege].[Status])=2) And (([dbo_Vertraege].[K_Datum])<Date()))
    GROUP BY [dbo_Vertraege].[KG_ID]
    ORDER BY Sum([Vertragssumme].[Vertragssumme]) DESC;

    Ich hoffe es kann mir jemand helfen..

    Grüßle
    Andi

  • #2
    Hallo Andreas,<BR><BR>im Gegensatz zu der Desktop-Datenbank Access, die eine SQL-Funktionalität nur simuliert, kennt eine echte SQL-Datenbank nur noch Datenmengen und keine Reihenfolgen (außer bei ORDER BY). Demzufolge gibt es auch FIRST() nicht als Gruppierungsfunktion. Hier musst du auf MIN() oder MAX() ausweichen. Dabei kannst du aber durchaus auf andere Ergebnisse kommen, als das vorher mit FIRST bei Access der Fall war. Falls du eine Auto-ID in deiner Tabelle [dbo_Vertraege] hast, dann kannst du mit einer Unterabfrage sicherstellen, dass bei gemeinsamer [KG_ID] der Datensatz mit der kleinsten Auto-ID ausgewählt werden soll. Das ist dann ja praktisch FIRST.<BR>Der Umstieg von Access auf eine echte SQL-Server Datenbank ist am Anfang machmal etwas schwierig, da man so einige liebgewonnene Dinge vermisst. Aber glaube mir, wenn du ein paar Stufen erklommen hast, dann wirst du dir die Frage stellen - "Was ist eigentlich Access!?"<BR><BR>Viele Grüße Ola

    Comment


    • #3
      Hi Olaf,

      wie müsste denn eine solche Unterabfrage aussehen?
      Ich hab es mal mit der Top 1 - Anweisung probiert, aber die liefert genau den ersten Wert der Tabelle zurück, was dann das ergbnis, sagen wir mal, sehr monoton aussehen lässt, da immer überall der selbe wert drin stand.

      Aber die Top 1 - Anweisung ist ja ansich auch sowas wie eine eigene Unterabfrage da sie ja auch aus SELECT ... FROM ... besteht. Wenn ich das jetzt mit einem WHERE auf die aktuelle [KG_ID] eingrenzen könnte, wäre ich auch schon wieder viel näher an dem ACCESS-FIRST dran.
      Ich weiß aber leider nicht, wie ich da das WHERE Formulieren müsste.

      Ich hoffe, das ich irgendwann auch mal so über Access denken kann wie du ;-

      Comment

      Working...
      X