2012-02-14 14 views
0

文字列を解析するユーザー定義関数があります。私の文字列は[email protected]>@100のように見えます。私の関数を呼び出すと、1、>、100の3つのレコードが返されます。これらの結果を列としてtempテーブルに挿入する必要があります。SQLで行を列に変換する

私の一時テーブルには3つの列があります。

または、私は3つの行を持つTEMP TABLE(テーブルには1つの列のみ)があり、3つの列に結果を変換する必要があると考えることができます。

select *から#tmptableは私に3行を与えますが、3行すべてを列として表示する必要があります。 ありがとうございます。

+0

は、あなただけの値を挿入するSQLを求めているの? – David

答えて

0

私は疑問誤解していない限り:

INSERT INTOテーブル名 VALUES(1、 '>'、100);

第1列と第3列が文字列でない限り、それらの回りにも小さな引用符を付けることになります。

+0

はい、 – jvm

+0

1> 100を3行として取得します。列としてテンポラリテーブルに挿入する必要があります – jvm

+0

興味深い...上記の挿入文では、3つの値を1つの列として正しく挿入する必要がありますが、他の3行は削除する必要があります。 – David

0

あなたは一時テーブルにIDを追加し、PIVOTを行ってみてください:

declare @t table(id int identity(1,1), strfrag varchar(8)) 
insert into @t values 
('1'), ('>'), ('100'); 

select [1],[2],[3] from @t 
pivot (
    max(strfrag) 
    for id in ([1],[2],[3]) 
) as pt; 

結果:

1  2  3 
-------- -------- -------- 
1  >  100 
+0

上記のクエリでエラーが発生しています 'max'付近の構文が正しくない – jvm

+0

正確にコピーして貼り付けましたか?私はSQL 2008に上記を貼り付けてもエラーは発生しません。 2005年に私が変えなければならなかったのは、挿入部分だけでした。しかしピボットエラーはありません。 –