簡體   English   中英

查詢中的“ Invalid Column Name”錯誤,按case語句和外部選擇進行排序

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM