您不能以这种方式按别名排序。
第一种选择是重复代码。注意:仅仅因为重复代码,SQL引擎就不会天真地再次执行它,而是重用了结果。
ORDER BY CASE WHEN @orderby = 'default' THEN l.aanmaakdatum END DESC, CASE WHEN @orderby = 'type' THEN l.type END ASC, CASE WHEN @orderby = 'naam' THEN l.naam END ASC, CASE WHEN @orderby = 'reacties' THEN (SELECt COUNT(lead_regel_id) FROM Lead_regel As lr WHERe Lr.lead_id = l.lead_id And Lr.status <> 100 ) END DESC
或全部使用子查询…
SELECt * FROM ( yourQuery ) AS sub_query ORDER BY CASE WHEN @orderby = 'default' THEN aanmaakdatum END DESC, CASE WHEN @orderby = 'type' THEN type END ASC, CASE WHEN @orderby = 'naam' THEN naam END ASC, CASE WHEN @orderby = 'reacties' THEN aantal_regels END DESC



