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 wieISNULL(ThemeType.Type, -99999)
imSELECT
undORDER BY
Klauseln, die sicherstellen, dass dieNULL
s zuerst kommen? - Ich verstehe nicht den Zweck der
CASE
Ausdruck. NichtNULL
s 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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eher als SELECT DISTINCT verwenden Sie GROUP BY (entsprechend der Sortierreihenfolge angegeben in den Kommentaren):