Fehler: ORDER BY-Elemente müssen in der Auswahlliste angezeigt werden, wenn SELECT DISTINCT angegeben ist

Bin ich immer die Fehlermeldung:

ORDER BY-Elemente müssen in der Auswahlliste angezeigt werden, wenn SELECT DISTINCT angegeben wird.

Für diese Abfrage:

SELECT DISTINCT 
    [Theme].[Name], [ThemeType].[Type] 
FROM 
    [Theme] 
LEFT OUTER JOIN 
    [ThemeType] ON [Theme].[ThemeTypeId] = [ThemeType].[PK_ThemeType]
JOIN 
    [ProductTheme] ON [ProductTheme].[ThemeId]=[Theme].[PK_Theme]
WHERE 
    ProductTheme.ProductID LIKE '%' 
    AND ProductTheme.ThemeId = Theme.PK_Theme 
    AND COALESCE([THEME].[THEMETYPEID], 'null') LIKE '%[0-9]%' 
ORDER BY 
    CASE WHEN [THEMETYPE].[TYPE] IS NULL 
           THEN 0 
           ELSE 1 
    END, [THEMETYPE].[TYPE]

Ich sehe hinein, und nicht die Definition der Fälle scheint ein häufiges problem zu sein aber ich tun. Was mache ich falsch?

  • Versuchen einschließlich der gesamten CASE-Anweisung, die Sie haben, UM VON zu WÄHLEN sowie
  • Welche Werte hat Ihr ThemeType.Type Spalte haben? Könntest du vielleicht so etwas wie ISNULL(ThemeType.Type, -99999) im SELECT und ORDER BY Klauseln, die sicherstellen, dass die NULLs zuerst kommen?
  • Ich verstehe nicht den Zweck der CASE Ausdruck. Nicht NULLs Art sowieso erstmal?
  • Sie wollen also null-Werte sortiert werden, in der Ausgabe aber nicht angezeigt wie 1 oder 0? Es scheint, Sie sollte es sein, den Fall in der Liste auswählen und dann die Bestellung durch, die.
  • Ich will null-Werte werden zuerst aufgeführt und die nicht-null-Werte werden aufgelistet Sekunde. In diesen beiden Abschnitten möchte ich die Zeilen werden in alphabetischer Reihenfolge aufgelistet, die von [Thema].[Name]
  • Ihre vorhandene Abfrage keine order by [Design].[Name] an allem.

Schreibe einen Kommentar