sexta-feira, 4 de junho de 2010

Como transformar linhas em colunas no SQL 2000?

Essa dica é bem interessante, pois o sql 2000 não possui a função PIVOT que é utilizada no SQL 2005.
Então vamos lá.Eu tenho a seguinte tabela:







Eu preciso retornar os dados assim:





A minha sugestão é a seguinte:

CREATE TABLE #Produto(
id_produto INT,
cor VARCHAR(10),
qtde INT
)

INSERT INTO #
Produto (id_produto,cor,qtde) VALUES (1030,'azul',10)
INSERT INTO #
Produto (id_produto,cor,qtde) VALUES (1030,'verde',5)
INSERT INTO #
Produto (id_produto,cor,qtde) VALUES (1030,'amarelo',3)

SELECT DISTINCT id_produto,MAX(azul) AS azul,MAX(verde) AS verde,MAX(amarelo) AS amarelo FROM (
SELECT id_produto,
azul = ( CASE cor WHEN 'azul' THEN QTDE END),
verde = ( CASE cor WHEN 'verde' THEN QTDE END),
amarelo= ( CASE cor WHEN 'amarelo' THEN QTDE END)
FROM #produto
) AS Tabela
GROUP BY ID_produto

DROP TABLE #produto

Resultado:

Um comentário: