如何使用CAST数据创建列并获得前5个结果?

时间:2016-09-05 09:20:00

标签: sql sql-server sql-server-2008 tsql

我有一个包含字母数字数据的列([Usage_in_GB]),当我想对它进行排序时,它不会这样做。我已经在SO上找到了这个问题的答案,但它们都不适合我的需要,所以我所做的是将字母数字列([用法])转换为浮点数,但现在我无法获得前5个结果。

这是我的查询:

SELECT
[Name],
[Model],
[Usage_in_GB],
[Number_of_Clients],
[Date],
CAST (REPLACE([Usage_in_GB],'GB','') AS FLOAT) AS [Usage]
FROM[dbo].[Devices]
WHERE([Usage] IN (SELECT TOP 5 [Usage]
   FROM [dbo].[Devices]
   GROUP BY [Usage]
   ORDER BY [Usage] DESC)
   )

1 个答案:

答案 0 :(得分:1)

你只是以这种方式尝试:

SELECT TOP 5
    [Name],
    [Model],
    [Usage_in_GB],
    [Number_of_Clients],
    [Date],
    CAST(REPLACE([Usage_in_GB],'GB','') AS FLOAT) AS [Usage]
FROM[dbo].[Devices]
ORDER BY [Usage] DESC