SQL 服务器 - 在第 n 行后重复字符
SQL Server - Repeat Characters after nth row
如何在每第 n 行后重复字符。例如,我想要这样的结果:
1 1234-A
2 32423-B
3 324234-C
4 afsd-D
5 32432-A
6 32423-B
7 3dsfa33-C
8 sdfw3rf-D
A、B、C 和 D 将在结果集中重复出现。没有其他字符。
每四行生成一个行号,并用case语句追加所需的字符。试试这个。
CREATE TABLE #str(id INT,string VARCHAR(50))
INSERT #str
VALUES (1,'1234' ),(2,'32423' ),(3,'324234' ),
(4,'afsd' ),(5,'32432' ),(6,'32423' ),
(7,'3dsfa33' ),(8,'sdfw3rf' )
SELECT id,
CASE
WHEN rn = 1 THEN string + '-A'
WHEN rn = 2 THEN string + '-B'
WHEN rn = 3 THEN string + '-C'
WHEN rn = 4 THEN string + '-D'
END AS String
FROM (SELECT ( ( id - 1 )%4 ) + 1 rn,*
FROM #str)a
结果:
+----+-----------+
| id | String |
+----+-----------+
| 1 | 1234-A |
| 2 | 32423-B |
| 3 | 324234-C |
| 4 | afsd-D |
| 5 | 32432-A |
| 6 | 32423-B |
| 7 | 3dsfa33-C|
| 8 | sdfw3rf-D|
+----+-----------+
试试这个:
SELECT YourID
,YourDescr + '-' + CHAR((ROW_NUMBER() OVER (ORDER BY YourID) - 1) % 4 + 65) AS YourDescr
FROM YourTable
它不依赖于 ID 列的值。
如何在每第 n 行后重复字符。例如,我想要这样的结果:
1 1234-A
2 32423-B
3 324234-C
4 afsd-D
5 32432-A
6 32423-B
7 3dsfa33-C
8 sdfw3rf-D
A、B、C 和 D 将在结果集中重复出现。没有其他字符。
每四行生成一个行号,并用case语句追加所需的字符。试试这个。
CREATE TABLE #str(id INT,string VARCHAR(50))
INSERT #str
VALUES (1,'1234' ),(2,'32423' ),(3,'324234' ),
(4,'afsd' ),(5,'32432' ),(6,'32423' ),
(7,'3dsfa33' ),(8,'sdfw3rf' )
SELECT id,
CASE
WHEN rn = 1 THEN string + '-A'
WHEN rn = 2 THEN string + '-B'
WHEN rn = 3 THEN string + '-C'
WHEN rn = 4 THEN string + '-D'
END AS String
FROM (SELECT ( ( id - 1 )%4 ) + 1 rn,*
FROM #str)a
结果:
+----+-----------+
| id | String |
+----+-----------+
| 1 | 1234-A |
| 2 | 32423-B |
| 3 | 324234-C |
| 4 | afsd-D |
| 5 | 32432-A |
| 6 | 32423-B |
| 7 | 3dsfa33-C|
| 8 | sdfw3rf-D|
+----+-----------+
试试这个:
SELECT YourID
,YourDescr + '-' + CHAR((ROW_NUMBER() OVER (ORDER BY YourID) - 1) % 4 + 65) AS YourDescr
FROM YourTable
它不依赖于 ID 列的值。