首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TSQL:如何向select语句添加字符

TSQL:如何向select语句添加字符
EN

Stack Overflow用户
提问于 2009-01-27 16:45:18
回答 2查看 2K关注 0票数 2

我有以下声明

代码语言:javascript
复制
SELECT id, descr from mytable 

它会返回

1,'Test1‘

4,'Test4‘

6,'Test6‘

8,'Test8‘

22,'Test22‘

现在我想让显示器在前4个结果中添加一个连续的字符...

'A',1,'Test1‘

'B',4,'Test4‘

'C',6,'Test6‘

'D',8,'Test8‘

'',22,'Test22‘

有什么想法?

编辑:如果可能的话,我更喜欢SQL Server 2000的例子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-27 16:48:53

代码语言:javascript
复制
SELECT CASE WHEN ROWNUMBER < 4
           THEN CHAR(65 + ROWNUMBER - 1)
           ELSE ''
       AS <WHATEVER>
       ,X.id
       ,X.descr
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY <WHATEVER>) AS ROWNUMBER
        ,id
        ,descr
    FROM mytable
) AS X

这是在SQL Server 2005及更高版本中实现的。

在SQL Server 2000中(假设id是排序顺序且是唯一的):

代码语言:javascript
复制
SELECT CASE WHEN rownumbers.rownumber < 4
           THEN CHAR(65 + rownumbers.rownumber - 1)
           ELSE ''
       AS <WHATEVER>
       ,mytable.id
       ,mytable.descr
FROM (
    SELECT l.id, COUNT(*) AS rownumber
    FROM mytable AS l
    LEFT JOIN mytable AS r
        ON l.id >= r.id
    GROUP BY l.id
) AS rownumbers
INNER JOIN mytable
    ON mytable.id = rownumbers.id
票数 4
EN

Stack Overflow用户

发布于 2009-01-27 17:15:06

在SQL Server2000中,不能在单个select语句中执行此操作。SQL Server 2000没有ROWNUM语句。

如果要使用临时表,可以使用IDENTITY函数。

代码语言:javascript
复制
SELECT IDENTITY(int,1,1) rownum, 
       id, 
       descr 
INTO #mytable 
from mytable

SELECT CASE WHEN ROWNUMBER < 4
       THEN CHAR(65 + ROWNUMBER - 1)
       ELSE ''
   AS <WHATEVER>
   ,X.id
   ,X.descr
FROM #mytable X
ORDER BY rownum

注意:标识函数只能在SELECT INTO语句中使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/484165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档