Czy istnieje możliwość zamówienia wynik przez ORDER
klauzuli zawierającej wyrażenie, cośSQL Server 2005 ORDER BY z wyrazem
SELECT colX0 FROM tbp_name ORDER BY (colX1 IS NOT NULL)
lub też bardziej złożone wypowiedzi?
UPDATE:
W międzyczasie znalazłem możliwość rozwiązać powyższy problem:
ORDER BY (case WHEN colX1 IS NULL THEN 1 ELSE 0 END) ASC
jednak pozostaje pytanie, czy istnieje możliwość zamówienia osobami wyrażenia.
Powodem, dla którego pierwsza próba nie działa, jest to, że SQL Server potrzebuje konwertować wyrażenie binarne na typ danych, według którego można sortować. Jeśli spróbujesz użyć wyrażenia 'colX1 IS NOT NULL' w instrukcji SELECT, to też by nie działało. Jak już zauważyłeś w drugim stwierdzeniu, możesz ORDER BYować wyrażenie, o ile jest ono poprawne, możesz umieścić instrukcję SELECT. – Rory
@Rory: To był zły przykład, a to doprowadziło mnie do złego kierunku (ponieważ dotyczy booleans). Twój komentarz powinien być zaakceptowaną odpowiedzią, odpowiada na moje główne pytanie. Przyjmuję odpowiedź gbn, ponieważ pokazuje, dlaczego mój przykład (i moja pierwsza próba) nie był zbyt dobry. Dzięki. – HCL