繁体   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