como usar Pivot Table.

10/12/2009 - 16:42 por fer | Informe spam
Hola,
Tengo una tabla definida de la siguiente manera.

Machine | Product1 | Product2 | Product3 | Product4 | Product5
-
2 | 5001 | 5002 | 5003 | 5004
| 5005
3 | 5011 | 5022 | 5033 | 5044
| 5055
4 | 5021 | 5032 | 5043 | 5054
| 5065
5 | 5031 | 5042 | 5053 | 5064
| 5075

Me han dicho que lo haga con un pivot pero no tengo ni idea,
Necesito dejarla de la siguiente manera.

| 2 | 3 | 4 |
5
-
Product1 | 5001 | 5002 | 5003 | 5004
|
Product2 | 5011 | 5022 | 5033 | 5044
|
Product3 | 5021 | 5032 | 5043 | 5054
|
Product4 | 5031 | 5042 | 5053 | 5064
|



Muchas Gracias de Antemano.
 

Leer las respuestas

#1 Alejandro Mesa
11/12/2009 - 01:50 | Informe spam
Debes primero transponer las columnas [Product?] a filas usando el operador
"unpivot", para luego transponer los valores de la columna [MACHINE] a
columnas.

USE tempdb;
GO
DECLARE @T TABLE (
MACHINE int,
Product1 int,
Product2 int,
Product3 int,
Product4 int,
Product5 int
);
SET NOCOUNT ON;
INSERT INTO @T VALUES(2,5001,5002,5003,5004,5005);
INSERT INTO @T VALUES(3,5011,5022,5033,5044,5055);
INSERT INTO @T VALUES(4,5021,5032,5043,5054,5065);
INSERT INTO @T VALUES(5,5031,5042,5053,5064,5075);
SET NOCOUNT OFF;

SELECT
Product,
[2],
[3],
[4],
[5]
FROM
(
SELECT
MACHINE,
Product,
[Value]
FROM
@T
UNPIVOT
(
[Value]
FOR Product IN ([Product1], [Product2], [Product3], [Product4],
[Product5])
) AS U
) AS T
PIVOT
(
MIN([Value])
FOR MACHINE IN ([2], [3], [4], [5])
) AS P;
GO

Resultado:

Product 2 3 4 5
Product1 5001 5011 5021 5031
Product2 5002 5022 5032 5042
Product3 5003 5033 5043 5053
Product4 5004 5044 5054 5064
Product5 5005 5055 5065 5075


Si deseas las filas ordenadas por [Product], entonces debes adicionar la
clausula "order by".

AMB



"fer" wrote:

Hola,
Tengo una tabla definida de la siguiente manera.

Machine | Product1 | Product2 | Product3 | Product4 | Product5
-
2 | 5001 | 5002 | 5003 | 5004
| 5005
3 | 5011 | 5022 | 5033 | 5044
| 5055
4 | 5021 | 5032 | 5043 | 5054
| 5065
5 | 5031 | 5042 | 5053 | 5064
| 5075

Me han dicho que lo haga con un pivot pero no tengo ni idea,
Necesito dejarla de la siguiente manera.

| 2 | 3 | 4 |
5
-
Product1 | 5001 | 5002 | 5003 | 5004
|
Product2 | 5011 | 5022 | 5033 | 5044
|
Product3 | 5021 | 5032 | 5043 | 5054
|
Product4 | 5031 | 5042 | 5053 | 5064
|



Muchas Gracias de Antemano.

Preguntas similares