2017-09-06 25 views
0

SQL Server 2014を使用していて、結果セットの列値に連結された行番号を持つ表の列を選択したいとします。例えば行番号がSQL Serverで連結された列を選択

:私はROW_NUMBER()が使用されているいくつかの同様の質問を経て、私はそれが別の列として選択されていることを見つける

DemoField 
--------- 
Row1 Apple 
Row2 Ball 
Row3 Cat 

DemoField 
--------- 
Apple 
Ball 
Cat 

は、この結果セットを返す必要があります戻される既存の列には連結されません。

私は列にROW_NUMBER()を連結しようとすると、私はエラーを取得:

Error converting data type varchar to bigint.

私に知らせてください。

おかげ

+0

に変換するために、行番号をCONCAT()などのUSE CAST()を使用することができるよう、あなたのROW_NUMBERをCASTする必要がRow2、Row3を1列の行として使用しますか?またはそれはテキスト "Row1アップル" – Isaiah3015

+0

"ロー1アップル"それはちょうど1つの列です – Vishwas

+0

まあ、私たちを見せ***どのように***あなたは2つの情報の連結をしようとする! 'ROW_NUMBER()'は 'INT'を返すので、他の列の文字列値と連結する前に少なくともCAST(ROW_NUMBER()AS VARCHAR(10))かそれと同様のものを使用しなければなりません。 –

答えて

1

あなたは文字列に番号を追加しようとしているので、これが起こっている理由は、 。あなたは、VARCHARすなわち

'Row' + CAST(ROW_NUMBER() OVER (ORDER BY DemoField) AS VARCHAR) 
+0

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –

0

次を使用することができます -

SELECT CAST(ID AS NVARCHAR)+' '+CAST(ColName AS NVARCHAR) 
    FROM tb_Table 
+0

これがどのように問題を解決するのか分かりません。 IDフィールドとは何ですか? – Vishwas

+0

あなたの列の名前が何であるか分かりません。それは単なる例です。 IDはRow1、Row2、Row3などとなりますので、名前を列に付けた名前に変更してから、ColNameはApple、Ball、Catなどとなりますので、colNameを列名に置き換えてください。そして、明らかにtb_Tableをあなたのテーブル名に置き換えてください。希望は意味をなさないでしょうか? – GrantD

2

これは、いくつかの連結を持つだけで、基本的なROW_NUMBERです。希望の出力はかなり奇妙だが、コンセプトはシンプルだ。

select DemoField 
from 
(
    select DemoField = 'Row' + convert(varchar(4), ROW_NUMBER() over (order by DemoField)) + ' ' + DemoField 
    from YourTable 
) x 
2

あなたがGEにしたい場合は、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

を使用することができます2012+場合列番号を任意の列に連結して、他の回答を確認してください。しかし、IMO、それは本当に奇妙です。

あなたが別の列に行番号を取得したい場合は、

あなたがROW_NUMBERを使用することができます。

SELECT *, ROW_NUMBER() OVER(ORDER BY some_column) as RowNumber FROM YourTable 
0

ます。また、文字

あなたは行1にしたい
SELECT CONCAT('Row',CAST(ROW_NUMBER() OVER (ORDER BY demofield) AS VARCHAR),' ', demofield) 
関連する問題