Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Generar una Vista

Estas en el tema de Generar una Vista en el foro de SQL Server en Foros del Web. Hola! Utilizo SLQ Server 2005 Necesito generar una vista de tres tablas de hechos. Las tres tablas tienen las mismas columnas pero la vista no ...
  #1 (permalink)  
Antiguo 15/07/2011, 04:51
 
Fecha de Ingreso: julio-2011
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Generar una Vista

Hola!

Utilizo SLQ Server 2005

Necesito generar una vista de tres tablas de hechos.
Las tres tablas tienen las mismas columnas pero la vista no tiene que tener todas las columnas. Las tablas tienen 12 columnas y solo necesito 7.

Por otro lado hay registros que son idénticos en las diferentes tablas pero me tengo que quedar con el valor más actual, es decir:

Tabla 1
Mes---Dia----Valor--------Las demas dimensiones con el cruce identico
Junio---2--------50

Tabla 2
Mes---Dia-----Valor--------Las demas dimensiones con el cruce identico
Julio----3-------40

Tabla 3
Mes---Dia-----Valor--------Las demas dimensiones con el cruce identico
Julio----1-------40

En este caso la vista solo debería contener un registro (el de la Tabla2 que es el valor más actual)

Como lo puedo hacer???

Muchas gracias!!
  #2 (permalink)  
Antiguo 15/07/2011, 07:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Generar una Vista

create view nombre_de_la_vista
as

select dato1,dato2,max(dato_fecha) from
(
select tabla1.dato1,tabla2.dato2,tabla1.dato3,tabla2.dato 4,tabla3.dato5
from tabla1
inner join tabla2 on (tabla1.id=tabla2.id)
inner join tabla3 on (tabla2.id=tabla3.id)
) as t1


Algo asi :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/07/2011, 03:41
 
Fecha de Ingreso: julio-2011
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Generar una Vista

Muchas gracias por la respuesta!

Tengo otro requisito.

Se puede generar una vista pero sumando los valores identicos en cada tabla?

es decir:

Tabla 1
Mes---Dia----Valor--------Empresa
Junio---2--------50----------A--------

Tabla 2
Mes---Dia-----Valor--------Empresa
Junio----2-------40-------------A


Resultado de la vista
Vista
Mes---Dia-----Valor--------Empresa
Junio----2-------90-------------A


"Solo tiene que sumar el valor si todas las demas dimensiones son iguales"

Un saludo
  #4 (permalink)  
Antiguo 25/07/2011, 07:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Generar una Vista

Sip solo seria que hicieras algo asi


create view suma
as
select sum(campo) from tabla group by tus campos


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/07/2011, 09:01
 
Fecha de Ingreso: julio-2011
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Generar una Vista

Hola Libras,

gracias por la respuesta pero no acabo de pillar bien como hacerlo.

Estoy utilizando SLQ Server2005 y hago "create view" en la base de datos que estan las tablas, ahi selecciono las 3 tablas que quiero (que tienen todas las mismas columnas) y automaticamente me genera este código:

SELECT
FROM dbo.tblTabla1 CROSS JOIN
dbo.tblTabla2 CROSS JOIN
dbo.tblTabla3
-----

En este punto que tengo que hacer? editar el codigo? o tambien tengo opcion de seleccionar los campos de cada tabla y me generando un codigo nuevo.

Imagina este ejemplo:
Campos de la tabla1:
Dia --- Mes --- Empresa --- VALOR
Campos de la tabla2:
Dia --- Mes --- Empresa --- VALOR

Como he comentado antes necesito el VALOR Sumado cuando los otros campos sean identicos.

Me puedes poner con este ejemplo el codigo correcto??

Muchas gracias!!
  #6 (permalink)  
Antiguo 25/07/2011, 09:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Generar una Vista

y tu nieve??? de limon??

create view suma
as
SELECT dia,mes,sum(valor),empresa
FROM dbo.tblTabla1 CROSS JOIN
dbo.tblTabla2 CROSS JOIN
dbo.tblTabla3
group by dia,mes,empresa

__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 25/07/2011, 10:02
 
Fecha de Ingreso: julio-2011
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Generar una Vista

Buenas Libras!

Me da este error al ejecutar la consulta SQL:

Msg 209, Level 16, State 1, Procedure suma, Line 8
El nombre de columna 'dia' es ambiguo.
Msg 209, Level 16, State 1, Procedure suma, Line 8
El nombre de columna 'mes' es ambiguo.
.....


aunque las columnas se llamen igual pertenecen a tablas diferentes...para crear la vista...selecciono cualquiera? o como va?

Gracias!
  #8 (permalink)  
Antiguo 25/07/2011, 10:30
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Generar una Vista

Te marca esos porque los campos es tus tablas se llaman de la misma manera lo que tienes que hacer es lo siguiente:



create view suma
as
select t1.campo1,t1.campo2,sum(t1.valor)
from tabla1 as t1
inner join tabla2 as t2 on (t1.id=t2.id)
inner join tabla3 as t3 on (t2.id=t3.id)
group by t1.campo1,t1.campo2


t1,t2 y t3 son alias de tus tablas(un alias es un nombre logico para poder hacer las referencias en el momento en que ejecutas tu query) el error que te marca es que al tener campos con el mismo nombre no le indicas la tabla de donde va a tomar ese campo.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 25/07/2011, 10:55
 
Fecha de Ingreso: julio-2011
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Generar una Vista

Ok! Muchas gracias!

Etiquetas: registros, server, tabla, vistas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:10.