2009-07-13 2 views
0

У меня есть запрос, который возвращает данные в видеконкатенации Колонны из результата в SQL Server 2000

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

В основном я хочу, чтобы пройти через каждую строку и возвращает имя поля и видов в одной строке , поэтому здесь будет

buttercup cat 

Любые идеи, как я мог это сделать?

+0

Вы можете Это можно сделать в обычном старом стандартном SQL. Обычно вам нужно использовать курсор, который зависит от платформы, на которой вы находитесь. SQL Server? Oracle? Доступ? –

+0

Я нахожусь на MSSQL 2000 – Matt

+0

На самом деле вам не нужно использовать курсор, как показано в моем ответе ниже ... http://stackoverflow.com/questions/1122596/iterating-through-a-result-set- в-SQL/1122621 # 1122621 –

ответ

2

Попробуйте это. Я только попробовал с SQL серер 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') 

Здесь это мой ответ:

SELECT a.value + ' ' +b.value 
FROM MyTable AS a 
INNER JOIN MyTable AS b ON a.attribute='name' AND b.attribute = 'species' 
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 

приветствий