2009-07-13 10 views
0

私はの連結列は、SQL Serverで設定し2000

attribute  value 
---------  ---------- 
petid   1000 
name   buttercup 
species   cat 
age    10 
owner   Bob Dole 

は基本的に私はすべての行を通過し、単一の文字列内のフィールド名と種を返すようにしたい、次の形式でデータを返すクエリを持っていますですので、結果は

buttercup cat 

どのように私はこれを行うことができますか?

+0

のようないくつかのことだろう普通の古い標準SQLでこれをしないでください。一般的には、使用しているプラ​​ットフォーム固有のカーソルを使用する必要があります。 SQLサーバー?オラクル?アクセス? –

+0

私はMSSQL 2000にいる – Matt

+0

実際には、私の答えで示されているようにカーソルを使用する必要はありません... http://stackoverflow.com/questions/1122596/iterating-through-a-result-set- in-SQL/1122621#1122621 –

答えて

2

これを試してください。私だけSQL Serer 2008でそれを試してみたが、多分それは動作します:

DECLARE @Concat nvarchar(50) 
SET @Concat=N'' 

SELECT @Concat = @Concat + Value + N' ' 
FROM dbo.AttributeValue 
WHERE Attribute IN (N'name', N'species') 

SELECT @Concat 
1

わかりました - 今、私はデータの形式を理解だと思う...ここ

は、ここでサンプルセット(ちょうど私が右のそれを持っていることを確認する)

CREATE TABLE MyTable 
(
attribute varchar(20), 
value varchar(20) 
) 

INSERT INTO MyTable VALUES('petid','1000') 
INSERT INTO MyTable VALUES('name','buttercup') 
INSERT INTO MyTable VALUES('species','cat') 
INSERT INTO MyTable VALUES('age','10') 
INSERT INTO MyTable VALUES('owner','Bob Dole') 

を作成するためのコードです私の答えは:

0

これを行うためのカーソルの方法は、あなたがすることができthis-

DECLARE @name varchar(20) 
DECLARE @species varchar(20)  
DECLARE nameSpeciesCursor CURSOR FOR 
SELECT name, species FROM tableName 

OPEN nameSpeciesCursor 
FETCH NEXT FROM nameSpeciesCursor INTO @name, @species 

WHILE @@FETCH_STATUS = 0 
BEGIN 
     PRINT @name + ' ' + @species  
     FETCH NEXT FROM nameSpeciesCursor INTO @name, @species 
END 

CLOSE nameSpeciesCursor 
DEALLOCATE nameSpeciesCursor 

歓声

関連する問題