你能告诉我为什么我的 ORDER BY DESC 函数不能正常工作吗?
Could you tell me why my ORDER BY DESC function is not working properly?
SELECT
YEAR,
Strata,
Strata_Name,
FORMAT([%]/10000, 'P') [%]
FROM
[dbo].[Depression_in_California]
WHERE
Strata_Name = 'Male'
ORDER BY [%] desc;
该列是浮动的,不是空的
因为你是把浮点值转成字符串,然后排序。解决方案是修复您的格式,使其具有固定的小数位数并右对齐。另一种解决方案是 select 百分比列并按该列排序。
注意:我认为格式化和其他此类操作应该归入 GUI 而不是 SQL
您有一个名为 [%]
的数字列,并且您也将计算列命名为 [%]
。如果 nvarchar.
,则计算值的类型
正如@Tarik 所指出的,看起来 SQL 服务器正在按计算列(别名)对结果进行排序。我认为使用不同的别名会更清楚,例如:
SELECT
YEAR,
Strata,
Strata_Name,
FORMAT([%]/10000, 'P') PercentageOfDepression /* <-- calculated nvarchar */
FROM
[dbo].[Depression_in_California]
WHERE
Strata_Name = 'Male'
ORDER BY [%] desc; /* <-- numeric [%] */
SELECT
YEAR,
Strata,
Strata_Name,
FORMAT([%]/10000, 'P') [%]
FROM
[dbo].[Depression_in_California]
WHERE
Strata_Name = 'Male'
ORDER BY [%] desc;
该列是浮动的,不是空的
因为你是把浮点值转成字符串,然后排序。解决方案是修复您的格式,使其具有固定的小数位数并右对齐。另一种解决方案是 select 百分比列并按该列排序。
注意:我认为格式化和其他此类操作应该归入 GUI 而不是 SQL
您有一个名为 [%]
的数字列,并且您也将计算列命名为 [%]
。如果 nvarchar.
正如@Tarik 所指出的,看起来 SQL 服务器正在按计算列(别名)对结果进行排序。我认为使用不同的别名会更清楚,例如:
SELECT
YEAR,
Strata,
Strata_Name,
FORMAT([%]/10000, 'P') PercentageOfDepression /* <-- calculated nvarchar */
FROM
[dbo].[Depression_in_California]
WHERE
Strata_Name = 'Male'
ORDER BY [%] desc; /* <-- numeric [%] */