【发布时间】:2014-02-06 05:00:07
【问题描述】:
我需要按 int 列升序对结果进行排序,但我只想获取带数字的行 (0...10000),但默认排序会在数字之前为我提供此列的空值行。我用谷歌搜索了将带有 null 的行设置为排序末尾(毕竟是数字)的解决方案,它看起来像
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'.
我做错了什么?谢谢
【问题讨论】:
标签: sql sql-server tsql