Мне нужно заказать мои результаты по столбцу int по возрастанию, но я хочу получить только строки с числами (0 ... 10000), но по умолчанию упорядочение дает мне строки с нулевыми значениями для этого столбец перед номерами. Я гугле решение, которое набор строк с нулем в конце заказа (после всех чисел) это выглядит как(ORDER BY CASE WHEN) заказ по подзапросу
SELECT ProductName
FROM Products
ORDER BY
CASE WHEN Position is null THEN 1 ELSE 0 END,
Position
Так что мой запрос выглядит следующим образом:
SELECT c.CompanyId, c.CompanyName, c.CompanyCategoryId, cc.CompanyCategoryName, c.HQCountryISO, c.CrunchBaseUrl,c.AngelListUrl,
(SELECT MAX(mf.NumLikes) FROM MeasurementFacebook mf
JOIN FacebookAccount f ON f.CompanyId = c.CompanyId
WHERE f.FacebookAccountId in (mf.FacebookAccountId)) as Likes,
(SELECT MAX(mt.NumFollowers) FROM MeasurementTwitter mt
JOIN TwitterAccount t ON t.CompanyId = c.CompanyId
WHERE t.TwitterAccountId in (mt.TwitterAccountId)) as Followers,
(SELECT MAX(ma.AlexaRanking) FROM MeasurementAlexa ma
JOIN Website w ON w.CompanyId = c.CompanyId
WHERE w.WebsiteId in (ma.WebsiteId)) as AlexaRank
FROM Company c
JOIN CompanyCategory cc ON c.CompanyCategoryId = cc.CompanyCategoryId
WHERE c.HQCountryISO = 'FRA'
ORDER BY CASE WHEN AlexaRank IS NULL THEN 1 ELSE 0 END, AlexaRank
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
Как вы можете видеть, AlexaRank
является результат третьего подзапроса, и я хочу заказать результат в этом столбце. Но у меня есть ошибка, которая гласит:
Msg 207, Level 16, State 1, Line 14
Invalid column name 'AlexaRank'.
Что я делаю неправильно? Благодаря
Прохладный! Спасибо! – user1947702