简体   繁体   English

通过在SQL Server中将两个数相除来排序查询

[英]Ordering query by divide two numbers in Sql Server

I've got Sql Server Query like this: 我有这样的Sql Server查询:

Select       * 
             ,Cast(Column1 as float) as Column1Convert
             ,Cast(Column2 as float) as Column2Convert
             ,Column1Convert/Colun2Convert AS [Result] 
From         MyTable 
Order By     Points DESC, Result ASC

But I'am receiving error: "Invalid column name 'Column1Convert'." 但是我收到错误:“无效的列名'Column1Convert'。” and second error: "Invalid column name 'Column2Convert'." 第二个错误:“无效的列名'Column2Convert'。”

Could You tell me what I'am doing wrong ? 你能告诉我我做错了什么吗?

This is because you are using aliases in the same level of the query which is not allowed. 这是因为您在不允许查询的同一级别中使用别名。 Try: 尝试:

Select       * 
             ,Cast(Column1 as float) as Column1Convert
             ,Cast(Column2 as float) as Column2Convert
             ,Cast(Column1 as float)/Cast(Column2 as float) AS [Result] 
From         MyTable 
Order By     Points DESC, Result ASC

Try this: 尝试这个:

SELECT
    Points, Result, Column1Convert, Column2Convert, 
    Column1Convert/Colun2Convert AS [Result]
FROM
(
    Select       * 
                 ,Cast(Column1 as float) as Column1Convert
                 ,Cast(Column2 as float) as Column2Convert
    From         MyTable 
)
Order By    
    Points DESC, 
    (Column1Convert/Colun2Convert) ASC

In SQL Server there is another way to access field aliases for reuse (aside from nested query) 在SQL Server中,还有另一种访问字段别名以进行重用的方法(除了嵌套查询)

SELECT
      Points
    , ca.Column1Convert
    , ca.Column2Convert
    , ca.Column1Convert / ca.Colun2Convert AS [Result]
FROM MyTable
      CROSS APPLY (
                  SELECT
                        CAST(Column1 AS float) AS Column1Convert
                      , CAST(Column2 AS float) AS Column2Convert
            ) AS ca
ORDER BY
      Points DESC
      , [Result] ASC

If available to you, you may want to use TRY_CAST() instead of CAST() 如果可用,您可能需要使用TRY_CAST()而不是CAST()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM