Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.051 Beiträge
 
Delphi 2009 Professional
 
#20

AW: MySQL versus MsSQL Syntax Group By

  Alt 14. Mai 2021, 22:55
Ja, es ist etwas unlogisch, dass wenn du ein JOIN-Kriterium ein PK ist und trotzdem man alle Felder aggregieren oder gruppieren muss. Aber es ist konsequent bzgl. der Regel dass jedes Feld aggregiert oder gruppiert ist.

Übrigens:
- Bei MSSQL fasst man Bezeichner in eckigen Klammern ein oder notfalls in doppelten Anführungszeichen. Einfache Anführungszeichen sind für Strings.
- IIF ist übersichtlicher als ein CASE-WHEN-Konstrukt mit zwei Situationen.
- COALESCE mit zwei Parametern ist zwar dasselbe wie ISNULL, aber ISNULL ist leichter verständlich. /Edit: Und performanter.
- Und bitte benutze Views, statt so viele Zeilen SQL im Quelltext zu haben.
- Und zu QuotedStr kein Kommentar.
Na ja gut, egal. Namen der Tabellen und Felder sind der Horror. Dachte erst Paradox, aber das kannte immerhin längere Feldnamen.

In "normalem" SQL wäre das wohl so erforderlich:
SQL-Code:
SELECT
[...]
         CASE WHEN b.in__vrrd < a.minstock then 'Mindestmenge unterschrittenELSE 'END AS 'Kommentar',
[...]
GROUP BY
[...]
  'Kommentar'  -- da weiß ich jetzt garnicht, ob MS-SQL das so kann
Nein, kann es nicht. Felder, die du nur aus Aggregaten oder Gruppen generierst, gruppierst du nicht. Sonst gruppierst du dasselbe Feld (bzw. hier zwei Felder) zweimal, das ergibt keinen Sinn.
Janni
2005 PE, 2009 PA, XE2 PA

Geändert von Redeemer (14. Mai 2021 um 23:23 Uhr)
  Mit Zitat antworten Zitat