我有Emp_Name
列
Emp_Name
A
B
C
D
值。
我想在一行中打印序列号,如
1)A, 2)B, 3)C, 4)D ....
答案 0 :(得分:3)
尝试以下查询,
SELECT STUFF((
SELECT ', '+ CAST( ROW_NUMBER() OVER(ORDER BY Emp_Name) AS VARCHAR) +')' +Emp_Name
FROM @Employee_Table
FOR XML PATH('')
),1,2,'') AS Emp_Name
答案 1 :(得分:0)
使用CTE功能获得转置结果:
DECLARE @String VARCHAR(100) = 'A,B,C,D'
;WITH _CTE ( TransStr , RemainStr ) AS
(
SELECT SUBSTRING(@String,0,CHARINDEX(',',@String)) ,
SUBSTRING(@String,CHARINDEX(',',@String)+1,LEN(@String))
UNION ALL
SELECT CASE WHEN CHARINDEX(',',RemainStr) = 0 THEN RemainStr ELSE
SUBSTRING(RemainStr,0,CHARINDEX(',',RemainStr)) END,
CASE WHEN CHARINDEX(',',RemainStr) = 0 THEN '' ELSE
SUBSTRING(RemainStr,CHARINDEX(',',RemainStr)+1,LEN(RemainStr)) END
FROM _CTE
WHERE RemainStr<> ''
)
SELECT STUFF((
SELECT ', '+ CAST( ROW_NUMBER() OVER(ORDER BY TransStr) AS VARCHAR) +')' +
TransStr FROM _CTE FOR XML PATH('')
),1,2,'') AS String
答案 2 :(得分:0)
试试这个
declare @myTable table([Emp_Name] varchar(max))
insert @myTable values ('A'), ('B'), ('C'), ('D')
select STUFF((
select ', ' + CAST(ROW_NUMBER() over (order by Emp_Name) AS VARCHAR) +')' + [Emp_Name]
from @myTable
for xml path(''), type
).value('.', 'varchar(max)'), 1, 1, '') [values]
只需用我的临时表更改你的表