当前位置: 首页 > 面试题库 >

如何在SQL中创建序数(即“第一”,“第二”等)

暨高洁
2023-03-14
问题内容

我最近在SSRS-2008标记中回答了这个问题,要求将日期中的天数更改为序数(即“ 1st”,“ 2nd”而不是“ 1”,“2”)。该解决方案涉及VB.Net功能。我很好奇如何在SQL中执行此任务(特别是t-sql和SQL Server),或者是否有内置的支持。

因此,这是一个场景:假设您为1000个跑步者组织了一场比赛,并将结果存储在带有“名称”和“位置”(以正常数字表示)列的表格中。您想要创建一个查询,该查询将显示用户名及其在序号中的位置。


问题答案:

这是一个可扩展的解决方案,适用于任何数量。我以为别人用了%100来表示11,12,13,但我弄错了。

WITH CTE_Numbers
AS
(
    SELECT 1 num
    UNION ALL
    SELECT num + 1
    FROM CTE_Numbers
    WHERE num < 1000
)

SELECT  CAST(num AS VARCHAR(10))
        +
        CASE
            WHEN num % 100 IN (11,12,13) THEN 'th' --first checks for exception
            WHEN num % 10 = 1 THEN 'st'
            WHEN num % 10 = 2 THEN 'nd'
            WHEN num % 10 = 3 THEN 'rd'
            ELSE 'th' --works for num % 10 IN (4,5,6,7,8,9,0)
        END
FROM CTE_Numbers
OPTION (MAXRECURSION 0)


 类似资料:
  • 我想在Laravel中制作一个API第一应用程序。我不知道什么是最好的方法来做到这一点,我会解释我正在努力做什么,但请随意给出答案如何以不同的方式做到这一点。 我不希望我所有的前端都是用javascript编写的,并用angular.js或类似的东西解析API的JSON输出。我希望我的Laravel应用程序产生超文本标记语言视图。我试图走下去的道路上有两个控制器一个对API和一个对网络。对于显示用

  • 本章通过举例说明如何创建一个项目。

  • 先尝试用 D3 写第一个 HelloWorld 程序。学编程入门的第一个程序都是在屏幕上输出 HelloWorld,本课稍微有些不同,不是单纯的输出。 HTML 是怎么输出 HelloWorld 的 都知道 HTML 吧,如果不知道请下百度一下吧。在 HTML 中输出 HelloWorld 是怎样的呢,先看下面的代码。 <html> <head> <meta charset="

  • 我有两个班级。首先是MainActivity.kt,我有一些字符串。第二个是像这样的ServiceBuilder.kt 我需要正确地将字符串从 MainActivity 传输到此对象。我认为在ServiceBuilder中创建MainActivity对象不是一个好主意,因为它分配了多余的内存。使用数据库或共享首选项也不是一个好主意,因为这种调用会减慢工作程序的速度,并且这种技术是为解决其他问题而创

  • 问题内容: 如果这: 从表中返回最新记录,如何获取 第二个最新 记录? 问题答案: 或者: 或者: 如果该列具有唯一值,则所有三个查询将给出相同的结果。如果该列可以有重复的日期,则它们可能给出不同的结果(当并列在第一或第二位时)。如果在第二位有联系,则第一个查询甚至会在结果中提供多行。

  • 我新安装了MongoDB 3.2,并尝试创建第一个抛出以下错误的用户。 “错误:无法添加用户:未经管理员授权执行命令” 我遵循mongoDB 3.2文档,https://docs.mongodb.org/manual/tutorial/enable-authentication/ 为了添加管理员,我尝试了以下代码,导致了上述错误 创建用户管理员。添加具有userAdminAnyDatabase角色