vista condicional y con agregados

12/04/2005 - 16:47 por -=Jomaweb=- | Informe spam
Hola

¿puedo generar una vista condicional con algún campo agregado?, me explico:

Imaginemos una vista que une dos tablas (clientes, pedidos) y muestra
nombre y apellidos del cliente, suma de todos sus pedidos hasta la fecha
(Este es el agregado), y el condicional es que si el campo
clientes.ANTIGUEDAD_CLIENTE es mayor de 5 años la vista muestre "CLIENTE
ANTIGUO" y si el campo es menor de 5 años muestre "CLIENTE RECIENTE".

De momento no he visto manera de hacerlo en una vista.

Gracias

Preguntas similare

Leer las respuestas

#1 Don Roque
12/04/2005 - 17:05 | Informe spam
Lo que deberias hacer es agregar en la vista un campo, que sea el
resultado de evaluar el campo CLIENTE.ANTIGUEDAD usando la sentencia
CASE

fijate si este ejemplo te sirve


use northwind

go


create table clientes
(
cli_id int not null,
cli_nom varchar(100) not null,
cli_ant int not null
)

go

create table pedidos
(
ped_id int not null,
cli_id int not null,
ped_monto money not null
)

go



insert into clientes values (1, 'Cliente Antiguo', 100)
insert into clientes values (2, 'Cliente Nuevo', 1)

insert into pedidos values (1, 1, 100)
insert into pedidos values (2, 1, 121)
insert into pedidos values (3, 1, 103)
insert into pedidos values (4, 1, 150)
insert into pedidos values (5, 1, 500)


insert into pedidos values (1, 2, 240)
insert into pedidos values (2, 2, 551)
insert into pedidos values (3, 2, 163)
insert into pedidos values (4, 2, 770)
insert into pedidos values (5, 2, 580)

go


create view vwTest as
select c.cli_id,
c.cli_nom,
sum(ped_monto) as total,
case
when cli_ant <=5 then 'Cliente Nuevo' else 'Cliente Antiguo'
end as Campo_Agregado
from clientes c
inner join pedidos p
on c.cli_id = p.cli_id
group by c.cli_id,
c.cli_nom, cli_ant

go

select * from vwTest
Respuesta Responder a este mensaje
#2 -=Jomaweb=-
13/04/2005 - 11:43 | Informe spam
Perfecto. Gracias

Don Roque wrote:
Lo que deberias hacer es agregar en la vista un campo, que sea el
resultado de evaluar el campo CLIENTE.ANTIGUEDAD usando la sentencia
CASE

fijate si este ejemplo te sirve


use northwind

go


create table clientes
(
cli_id int not null,
cli_nom varchar(100) not null,
cli_ant int not null
)

go

create table pedidos
(
ped_id int not null,
cli_id int not null,
ped_monto money not null
)

go



insert into clientes values (1, 'Cliente Antiguo', 100)
insert into clientes values (2, 'Cliente Nuevo', 1)

insert into pedidos values (1, 1, 100)
insert into pedidos values (2, 1, 121)
insert into pedidos values (3, 1, 103)
insert into pedidos values (4, 1, 150)
insert into pedidos values (5, 1, 500)


insert into pedidos values (1, 2, 240)
insert into pedidos values (2, 2, 551)
insert into pedidos values (3, 2, 163)
insert into pedidos values (4, 2, 770)
insert into pedidos values (5, 2, 580)

go


create view vwTest as
select c.cli_id,
c.cli_nom,
sum(ped_monto) as total,
case
when cli_ant <=5 then 'Cliente Nuevo' else 'Cliente Antiguo'
end as Campo_Agregado
from clientes c
inner join pedidos p
on c.cli_id = p.cli_id
group by c.cli_id,
c.cli_nom, cli_ant

go

select * from vwTest

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida