我正在使用SQL Server 2014,并希望在表中选择一个列,其行号与结果集中的列值连接。
例如:
DemoField
---------
Apple
Ball
Cat
应返回此结果集:
DemoField
---------
Row1 Apple
Row2 Ball
Row3 Cat
我在使用ROW_NUMBER()
时遇到了一些类似的问题,但我发现它被选为一个单独的列,而不是连接到要返回的现有列。
当我尝试将ROW_NUMBER()
连接到列时,出现错误:
将数据类型varchar转换为bigint时出错。
请告诉我。
由于
答案 0 :(得分:3)
如果2012+你可以使用 concat()
示例强>
Declare @YourTable Table ([DemoField] varchar(50))
Insert Into @YourTable Values
('Apple')
,('Ball')
,('Cat')
Select concat('Row',Row_Number() over(Order By DemoField),' ',DemoField)
from @YourTable
<强>返回强>
(No column name)
Row1 Apple
Row2 Ball
Row3 Cat
答案 1 :(得分:2)
这只是基本的ROW_NUMBER,有一些连接。似乎所需的输出很奇怪,但概念很简单。
select DemoField
from
(
select DemoField = 'Row' + convert(varchar(4), ROW_NUMBER() over (order by DemoField)) + ' ' + DemoField
from YourTable
) x
答案 2 :(得分:1)
发生这种情况的原因是因为您正在尝试向字符串添加数字。您必须将{rownumber CAST
作为VARCHAR,即
'Row' + CAST(ROW_NUMBER() OVER (ORDER BY DemoField) AS VARCHAR)
答案 3 :(得分:0)
您可以使用以下内容 -
SELECT CAST(ID AS NVARCHAR)+' '+CAST(ColName AS NVARCHAR)
FROM tb_Table
答案 4 :(得分:0)
如果要将行号连接到任何列,请检查其他答案。但IMO,这真的很奇怪。
如果您想在单独的列中获取行号,
您可以使用ROW_NUMBER
:
SELECT *, ROW_NUMBER() OVER(ORDER BY some_column) as RowNumber FROM YourTable
答案 5 :(得分:0)
您还可以使用CONCAT()以及USE CAST()将行号转换为字符
SELECT CONCAT('Row',CAST(ROW_NUMBER() OVER (ORDER BY demofield) AS VARCHAR),' ', demofield)