小编Nil*_*esh的帖子

查询以将计数转换为百万或数千

我正在对数据库运行查询以返回计数(*)的行数。

  • 如果计数大于百万,比如说 2,250,304,我希望查询返回 2.25M。
  • 如果计数大于 1000 但小于一百万,比如 65130,我希望查询返回“65.1k”。
  • 如果计数小于 1000,则查询应返回实际计数。

这是我的查询:

SELECT DATENAME(mm, CREATEDTS) + ', ' + DATENAME(yyyy, CREATEDTS) AS Month,
       CASE
         WHEN count(*) > 1000
              AND count(*) < 1000000 THEN ( CONVERT (VARCHAR(10), ( count(*) / 1000 )) ) + 'k'
         WHEN count(*) > 1000000 THEN ( CONVERT (VARCHAR(10), ( count(*) / 1000 )) ) + 'm'
         ELSE COUNT(*)
       END
FROM   USAGEDATA
GROUP  BY month(CREATEDTS),
          DATENAME(mm, CREATEDTS) + ', ' + DATENAME(yyyy, CREATEDTS)
ORDER  BY MONTH(CREATEDTS) 
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到一个错误:

将 …

sql-server sql-server-2008-r2 type-conversion

5
推荐指数
1
解决办法
9633
查看次数