Упорядочить по вычисляемым столбцам в SQL Server - PullRequest
2 голосов
/ 06 декабря 2011

Я хочу, чтобы в моем операторе sql использовался оператор order by, используя оператор Case, а столбец, в котором используется order by, является вычисляемым столбцом, например:

declare @pOrderBy int
set @pOrderBy=1
Select ArtistId as Counting, ROW_NUMBER() OVER (ORDER BY  
CASE WHEN (@pOrderBy = 1) THEN "Counting" end)
from master.dbo.Album

Я получил ошибку

Invalid column name 'Counting'.

Я хочу упомянуть, что в фактическом запросе мой столбец Counting является вычисляемым столбцом, например:

Count(*) as Counting

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вы не можете повторно использовать псевдоним столбца на том же уровне, как он определен.

В этом случае я бы просто использовал ORDER BY ArtistId, а не пытался повторно использовать псевдоним. Для более сложных выражений вы можете определить его в CTE или CROSS APPLY , как описано в этой статье .

2 голосов
/ 06 декабря 2011

быстрая запись

declare @pOrderBy int
set @pOrderBy=1
Select ArtistId as Counting, ROW_NUMBER() OVER (ORDER BY  
CASE WHEN (@pOrderBy = 1) THEN ArtistId end)
from master.dbo.Album
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...