SQL Server - sql server 2000 Pivot

 
Vista:

sql server 2000 Pivot

Publicado por kinetic_brain (67 intervenciones) el 29/04/2010 17:52:44
Hola maestros podrían ayudarme a crear una query tipo tabla dinamica (excel) pero en sql sever 2000

con los campos

codigo, fecha, cantidad, monto

quiero que me muestre

de la siguiente forma

codigo 201001 201002 201003
aaaa 100 555 333
bbbb 50 15 1000
cccc 100 40 50

donde los montos es la suma del campo monto.

Como puedo crear esto en sel server 2000 por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:sql server 2000 Pivot

Publicado por Isaias (4558 intervenciones) el 30/04/2010 20:24:43
REFERENCIAS CRUZADAS

En SQL-Server no hay consultas de referencias cruzadas, para eso está OLAP.

La puedes disimular con consultas agrupadas. Te pego un texto sacado de la ayuda:

-------------------
Informes de tablas de referencias cruzadas

Algunas veces es necesario hacer girar los resultados, de forma que las columnas se presenten horizontalmente y las filas se presenten verticalmente. Esto se conoce como crear PivotTable®, crear un informe de tabla de referencia cruzada o girar datos.

Suponga que hay una tabla Pivot que tiene una fila por trimestre. Un SELECT de Pivot informa de los trimestres verticalmente:

Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4

Debe crearse un informe con una tabla que contenga una fila por cada año, con los valores de cada trimestre en una columna separada, como en:

Year Q1 Q2 Q3 Q4

1990 1.1 1.2 1.3 1.4

1991 2.1 2.2 2.3 2.4


Éstas son las instrucciones que se utilizan para crear la tabla Pivot y rellenarla con los datos de la primera tabla:

USE Northwind
GO

CREATE TABLE Pivot
( Year SMALLINT,
Quarter TINYINT,
Amount DECIMAL(2,1) )
GO
INSERT INTO Pivot VALUES (1990, 1, 1.1)
INSERT INTO Pivot VALUES (1990, 2, 1.2)
INSERT INTO Pivot VALUES (1990, 3, 1.3)
INSERT INTO Pivot VALUES (1990, 4, 1.4)
INSERT INTO Pivot VALUES (1991, 1, 2.1)
INSERT INTO Pivot VALUES (1991, 2, 2.2)
INSERT INTO Pivot VALUES (1991, 3, 2.3)
INSERT INTO Pivot VALUES (1991, 4, 2.4)
GO

Ésta es la instrucción SELECT que se utiliza para crear resultados girados:

SELECT Year,
SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,
SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,
SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,
SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4
FROM Northwind.dbo.Pivot
GROUP BY Year
GO

Esta instrucción SELECT realiza también el tratamiento de una tabla en la que hay varias filas por cada trimestre. La cláusula GROUP BY combina todas las filas de Pivot de un año determinado en una única fila del resultado. Cuando se realiza la operación de agrupamiento, las funciones CASE de los agregados SUM se aplican de tal forma que los valores Amount de cada trimestre se agregan a la columna adecuada del conjunto de resultados, y se agrega 0 a las columnas del conjunto de resultados del resto de los trimestres.

Si los resultados de esta instrucción SELECT se usan como entrada de una hoja de cálculo, es fácil para la hoja de cálculo calcular un total para cada año. Cuando se usa SELECT desde una aplicación, puede ser más fácil mejorar la instrucción SELECT para calcular el total anual. Por ejemplo:

SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal
FROM (SELECT Year,
SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
FROM Pivot AS P
GROUP BY P.Year) AS P1
GO

GROUP BY con CUBE y GROUP BY con ROLLUP calculan la misma clase de información, como se muestra en el ejemplo, pero con un formato un poco diferente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sql server 2000 Pivot

Publicado por kinetic_brain (67 intervenciones) el 04/05/2010 19:00:43
Gracias Isaias, pero mi sql 2000 no me reconoce la palabra PIVOT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:sql server 2000 Pivot

Publicado por Isaias (4558 intervenciones) el 05/05/2010 02:45:21
En el ejemplo que te puse PIVOT es una simple tabla, no es ninguna instruccion, ¿como lo estas haciendo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sql server 2000 Pivot

Publicado por kinetic_brain (67 intervenciones) el 05/05/2010 06:46:36
Gracias Isaias,

despues que envie el mensaje, entendí a que te referias y si me ha resultado, lo malo que hay que construirlo, pero sirve mucho cuando los valores de columnas son limitados como por ejemplo periodos.

fue de mucha ayuda tu explicacion muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar