SQL - PRESENTACION HORIZONTAL-SQL

   
Vista:

PRESENTACION HORIZONTAL-SQL

Publicado por Carlos (2 intervenciones) el 14/12/2014 14:51:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
table galpon(
gal_id PK
gal_nom
)
table producto(
pro_id int PK
pro_nombre varchart
pro_gal_id FK
)
table periodo(
per_id PK
per_nombre
)
create table precio(
pre_id PK
pre_valor
pre_per_id FK
pre_pro_id FK
pre_gal_id FK
)

1
2
3
4
5
6
7
8
9
10
Select p.pro_nombre, pre.pre_valor, pre.pre_per_id FROM producto p, precio pre
where pre.pro_id=p.pro_id and pre_gal_id=1
AL HACER LA CONSULTA ME MUESTRA VERTICAL
pro_nombre  pre_valor  pre_per_id
leche          0.25         1
leche1         0.50         1
leche2         0.75         1
leche          0.30         2
leche1         0.45         2
leche2         0.50         2


QUIERO MOSTRAR LOS DATOS DE LA SIGUIENTE MANERA COMO HAGO
1
2
3
4
pro_nombre   pre_per_id(PERIODO 1)   pre_per_id(PERIODO 2)
leche                0.25                     0.30
leche1               0.50                     0.45
leche2               0.75                     0.50
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

PRESENTACION HORIZONTAL-SQL

Publicado por Ramiro (7 intervenciones) el 15/12/2014 14:20:03
Ni idea que motor de base de datos usas, pero en Oracle podes hacerlo de la siguiente manera:

SELECT
p.pro_nombre,
DECODE(pre.pre_per_id,1,pre.pre_valor) "PERIODO 1",
DECODE(pre.pre_per_id,2,pre.pre_valor) "PERIODO 2",
DECODE(pre.pre_per_id,3,pre.pre_valor) "PERIODO 3"
FROM productos p, precio pre
GROUP BY p.pro_nombre
ORDER BY p.pro_nombre

o

SELECT *
FROM (SELECT p.pro_nombre, pre.pre_valor, pre.pre_per_id
FROM productos p, precio pre) PRO_PRE
PIVOT (
PRO_PRE.pre_valor
FOR PRO_PRE.pre_per_id
IN (1 "PERIODO 1",
2 "PERIODO 2",
3 "PERIODO 3"
)
)
ORDER BY p.pro_nombre
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

PRESENTACION HORIZONTAL-SQL

Publicado por Carlos (2 intervenciones) el 15/12/2014 16:11:11
Estoy utilizando SQL Server 2008 no pude ejecutar, ademas tengo problemas con los periodo porque; ejemplo 1000 periodos tendria que hacer el el codigo(PERIODO 1.... PERIODO 1000) . Me podrian ayudar con el codigo.
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

PRESENTACION HORIZONTAL-SQL

Publicado por leonardo_josue (877 intervenciones) el 15/12/2014 21:44:49
Hola Carlos:

La función Pivot también existe en SQL Server. Dices que no pudiste ejecutar la sentencia de Ramiro, pero nunca nos dices por qué razón... si fue un error de sintaxis o qué diablos pasó. Ojo con eso, no esperes una respuesta sólo para copiar y pegar.

Checa esta liga:

http://msdn.microsoft.com/es-es/library/dn391756.aspx

Con esto se soluciona tu problema y la parte de los periodos que puedan crecer arbitrariamente. Si tienes problemas postea lo que intentaste hacer y si marca algun error la consulta, dinos qué error es el que está marcando, para poder tratar de ayudarte.

Saludos
Leo.
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