SQL Server - filas de registros como columnas

   
Vista:

filas de registros como columnas

Publicado por Gabriela (5 intervenciones) el 30/01/2018 04:23:07
Hola espero me puedan ayudar con este tema he visto post relacionados y he intentado adaptarlo a lo que necesito pero no he tenido exito

Necesito crear una base de datos en la cual guarde mi listado de precios de ciertos producto para todo el año y que yo pueda llevar el registro de los cambios que hay con el paso del tiempo. Les muestro como lo hago ahora en excel (ejemplo) en el que cada día que hay cambio copia la hoja y le pongo las modificaciones y esto por cada estado de la republica

Quiero hacer esto en sql y que creado estas dos tablas

Tabla listado_año
id,estado,producto,fecha,tarifa-id

tabla precios
id, tarifa, precio

he logrado hacer la siguiente consulta pero no logro que me saltan en una misma fila los registro del mismo producto del mismo estado del mismo mes

1
2
3
4
5
select estado,fecha,producto,
(case when fecha='2018-01-01' then tarifa end) as '01Enero',
(case when fecha='2018-01-02' then tarifa end) as '02Enero'
from Listado_año left join Precios on listado_año.Tarifa_id=precios.id
order by Estado

ME PUEDEN ORIENTAR PARA SABER SI LO QUE ESTOY HACIENDO ESTA BIEN O NO? y si es posible hacer lo que que requiero

Mil gracias de antemano
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

filas de registros como columnas

Publicado por Isaias (3750 intervenciones) el 30/01/2018 19:01:31
¿Son registros SOLO POR UN AÑO? (12 MESES)
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

filas de registros como columnas

Publicado por Gabriela (5 intervenciones) el 30/01/2018 21:10:24
por el momento si pero la idea es que sea para los años próximo igual.
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

filas de registros como columnas

Publicado por Isaias (3750 intervenciones) el 30/01/2018 21:36:40
Vas a GOOGLE y buscas el concepto PIVOT y PIVOT DINAMICO, ves los ejemplos, si tienes aun dudas, nos comentas y tratamos de ayudarte:

Por ejemplo

https://stackoverflow.com/questions/25201292/how-to-pivot-table-for-year-in-sql
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

filas de registros como columnas

Publicado por Gabriela (5 intervenciones) el 01/02/2018 05:10:10
Hola ya logre hacer lo de las columnas lo que aun no me queda claro y quería ver si me podía orientar es como llevar el registro de los cambios que se hacen en en las tarifas

es decir el dia de 2 de enero tengo estos precios configurados

Dia 01-ene 02-ene 03-ene 04-ene 05-ene
Producto A Tarifa 1 Tarifa 2 Tarifa 1 Tarifa 2 Tarifa 2
Producto B Tarifa 2 Tarifa 3 Tarifa 2 Tarifa 3 Tarifa 3
Producto C Tarifa 3 Tarifa 1 Tarifa 3 Tarifa 1 Tarifa 1

Pero el día 3 cambiaron estas tarifas y debo poder sacar un reporte con las tarifas que estuvieron vigentes el dia 2 de enero y que estan actualmente

mi tabla es la siguiente

Listado_año:
,[Estado]
,[Grupo]
,[Fecha]
,[Tarifa_id]

Mi consulta quedo de la siguiente manera, pero creo que me faltan columna para guardar el historial :/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
declare @cols as nvarchar(max), @query as nvarchar(max)
 
select @cols= stuff((select ',' + quotename(fecha)
from listado_año
group by fecha
for xml path(''),type).value('.','nvarchar(max)'),1,1,'') from listado_año
 
select @query = 'select estado,grupo, ' + @cols +'
from
( 
	select vt.fecha,vp.tarifa,row_number() over(partition by vt.fecha order by vt.grupo) seq,
	vt.estado,vt.grupo

	from listado_año vt
	left join precios vp
	on vt.tarifa_id=vp.id
	)d

	pivot
	(
		max(tarifa)
		for fecha in ('+ @cols+')
	)p'
execute sp_executesql @query;
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

filas de registros como columnas

Publicado por Isaias (3750 intervenciones) el 01/02/2018 17:20:49
Hola nuevamente

Recuerdas mi pregunta: ¿Son registros SOLO POR UN AÑO? (12 MESES)

Si ya estamos hablando de un HISTORIAL, años y años atras, entonces no creo que PIVOT sea la solucion, se volveria multi-columnas, o sea, algo interminable
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

filas de registros como columnas

Publicado por Gabriela (5 intervenciones) el 01/02/2018 22:37:25
Por el momento es por un año.
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

filas de registros como columnas

Publicado por Isaias (3750 intervenciones) el 01/02/2018 23:47:42
¿Entonces funciona como lo muestras?
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
Revisar política de publicidad