[英]“Invalid Column Name” error in query with order by case statement and outer select
我正在嘗試使用case語句確定外部select語句中的列來確定要排序的字段。 由於某些原因,我無法使用在外部選擇中創建的列。 如果我嘗試不使用case語句按該列排序,那么它將起作用。 我究竟做錯了什么?
偽代碼來說明問題:
DECLARE @orderBy varchar(8)
SET @orderBy = 'rating'
SELECT
CASE
WHEN rating is not null THEN 1
ELSE 0
END as hasRating,
*
FROM
(SELECT col1, ...) AS table1
LEFT OUTER JOIN
(SELECT col1, rating, ...) AS table2
ON table1.col1 = table2.col2
--causes error "Invalid column name 'hasRating'"
ORDER BY
CASE WHEN @orderBy = 'rating' THEN hasRating END DESC,
CASE WHEN @orderby = 'something else' THEN ...
--works
ORDER BY hasRating desc
這會引發錯誤:
ORDER BY
CASE WHEN @orderBy = 'rating' THEN CASE WHEN rating is not null THEN 1 ELSE 0 END END DESC,
CASE WHEN @orderby = 'something else' THEN ...
似乎在別名可用之前先評估ORDER
by中的CASE
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.