Объединение столбцов из набора результатов в SQL Server 2000 - PullRequest
2 голосов
/ 14 июля 2009

У меня есть запрос, который возвращает данные в следующей форме

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

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

buttercup cat

Есть идеи, как мне это сделать?

Ответы [ 3 ]

3 голосов
/ 14 июля 2009

Попробуй это. Я только пробовал это с 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
2 голосов
/ 14 июля 2009

Хорошо - теперь я думаю, что понимаю формат данных ...

Вот код для создания набора образцов (просто чтобы убедиться, что я правильно понял)

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'
1 голос
/ 14 июля 2009

Курсор делает это примерно так:

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 

ура

...