Ayuda con Query

04/11/2005 - 02:04 por Isaias | Informe spam
Tiendo una Tabla de VENTAS, donde hay 3 columnas, CLIENTE, VENDEDOR, IMPORTE

CREATE TABLE VENTAS (CLIENTE INT, VENDEDOR INT, IMPORTE SMALLMONEY)
INSERT INTO VENTAS VALUES(1,1,100)
INSERT INTO VENTAS VALUES(1,1,100)
INSERT INTO VENTAS VALUES(1,2,100)
INSERT INTO VENTAS VALUES(1,3,100)
INSERT INTO VENTAS VALUES(1,3,100)
INSERT INTO VENTAS VALUES(1,4,100)
INSERT INTO VENTAS VALUES(1,5,1000)
INSERT INTO VENTAS VALUES(2,1,100)
INSERT INTO VENTAS VALUES(2,1,100)
INSERT INTO VENTAS VALUES(2,2,100)
INSERT INTO VENTAS VALUES(2,3,2100)
INSERT INTO VENTAS VALUES(2,3,100)
INSERT INTO VENTAS VALUES(2,4,100)
INSERT INTO VENTAS VALUES(2,5,100)
INSERT INTO VENTAS VALUES(3,1,100)
INSERT INTO VENTAS VALUES(3,1,100)
INSERT INTO VENTAS VALUES(3,1,100)
INSERT INTO VENTAS VALUES(3,3,2100)
INSERT INTO VENTAS VALUES(3,3,100)
INSERT INTO VENTAS VALUES(3,5,100)
INSERT INTO VENTAS VALUES(3,5,100)

Deseo obtener

TOTAL DE VENTAS por CLIENTE, donde aparezca:

CLIENTE VENDEDOR (*) TOTAL

1 3 1200

En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
mas al cliente.

Gracias.
Saludos
IIslas

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
04/11/2005 - 15:37 | Informe spam
Isaias,

Me inmagino que cuando dices:

En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
mas al cliente.



sea la suma de las ventas, verdad?. Si es asi, trata:

select top 1 with ties
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
order by
sum(IMPORTE) desc


select top 1 with ties
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
having
sum(IMPORTE) = (
select max(sum_importe)
from (
select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
) as t
)
go

No esta probado.

AMB

"Isaias" wrote:

Tiendo una Tabla de VENTAS, donde hay 3 columnas, CLIENTE, VENDEDOR, IMPORTE

CREATE TABLE VENTAS (CLIENTE INT, VENDEDOR INT, IMPORTE SMALLMONEY)
INSERT INTO VENTAS VALUES(1,1,100)
INSERT INTO VENTAS VALUES(1,1,100)
INSERT INTO VENTAS VALUES(1,2,100)
INSERT INTO VENTAS VALUES(1,3,100)
INSERT INTO VENTAS VALUES(1,3,100)
INSERT INTO VENTAS VALUES(1,4,100)
INSERT INTO VENTAS VALUES(1,5,1000)
INSERT INTO VENTAS VALUES(2,1,100)
INSERT INTO VENTAS VALUES(2,1,100)
INSERT INTO VENTAS VALUES(2,2,100)
INSERT INTO VENTAS VALUES(2,3,2100)
INSERT INTO VENTAS VALUES(2,3,100)
INSERT INTO VENTAS VALUES(2,4,100)
INSERT INTO VENTAS VALUES(2,5,100)
INSERT INTO VENTAS VALUES(3,1,100)
INSERT INTO VENTAS VALUES(3,1,100)
INSERT INTO VENTAS VALUES(3,1,100)
INSERT INTO VENTAS VALUES(3,3,2100)
INSERT INTO VENTAS VALUES(3,3,100)
INSERT INTO VENTAS VALUES(3,5,100)
INSERT INTO VENTAS VALUES(3,5,100)

Deseo obtener

TOTAL DE VENTAS por CLIENTE, donde aparezca:

CLIENTE VENDEDOR (*) TOTAL

1 3 1200

En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
mas al cliente.

Gracias.
Saludos
IIslas
Respuesta Responder a este mensaje
#2 Alejandro Mesa
04/11/2005 - 15:58 | Informe spam
Correccion:

select top 1 with ties
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
having
sum(IMPORTE) = (
select max(sum_importe)
from (
select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
) as t
)
go



select
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
having
sum(IMPORTE) = (
select max(sum_importe)
from (
select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
) as t
)
go


AMB

"Alejandro Mesa" wrote:

Isaias,

Me inmagino que cuando dices:

> En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> mas al cliente.

sea la suma de las ventas, verdad?. Si es asi, trata:

select top 1 with ties
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
order by
sum(IMPORTE) desc


select top 1 with ties
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
having
sum(IMPORTE) = (
select max(sum_importe)
from (
select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
) as t
)
go

No esta probado.

AMB

"Isaias" wrote:

> Tiendo una Tabla de VENTAS, donde hay 3 columnas, CLIENTE, VENDEDOR, IMPORTE
>
> CREATE TABLE VENTAS (CLIENTE INT, VENDEDOR INT, IMPORTE SMALLMONEY)
> INSERT INTO VENTAS VALUES(1,1,100)
> INSERT INTO VENTAS VALUES(1,1,100)
> INSERT INTO VENTAS VALUES(1,2,100)
> INSERT INTO VENTAS VALUES(1,3,100)
> INSERT INTO VENTAS VALUES(1,3,100)
> INSERT INTO VENTAS VALUES(1,4,100)
> INSERT INTO VENTAS VALUES(1,5,1000)
> INSERT INTO VENTAS VALUES(2,1,100)
> INSERT INTO VENTAS VALUES(2,1,100)
> INSERT INTO VENTAS VALUES(2,2,100)
> INSERT INTO VENTAS VALUES(2,3,2100)
> INSERT INTO VENTAS VALUES(2,3,100)
> INSERT INTO VENTAS VALUES(2,4,100)
> INSERT INTO VENTAS VALUES(2,5,100)
> INSERT INTO VENTAS VALUES(3,1,100)
> INSERT INTO VENTAS VALUES(3,1,100)
> INSERT INTO VENTAS VALUES(3,1,100)
> INSERT INTO VENTAS VALUES(3,3,2100)
> INSERT INTO VENTAS VALUES(3,3,100)
> INSERT INTO VENTAS VALUES(3,5,100)
> INSERT INTO VENTAS VALUES(3,5,100)
>
> Deseo obtener
>
> TOTAL DE VENTAS por CLIENTE, donde aparezca:
>
> CLIENTE VENDEDOR (*) TOTAL
>
> 1 3 1200
>
> En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> mas al cliente.
>
> Gracias.
> Saludos
> IIslas
Respuesta Responder a este mensaje
#3 Isaias
04/11/2005 - 16:29 | Informe spam
Gracias Alex

¿Donde quedan las ventas del CLIENTE 1?
Saludos
IIslas


"Alejandro Mesa" escribió:

Correccion:

> select top 1 with ties
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> having
> sum(IMPORTE) = (
> select max(sum_importe)
> from (
> select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> ) as t
> )
> go

select
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
having
sum(IMPORTE) = (
select max(sum_importe)
from (
select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
) as t
)
go


AMB

"Alejandro Mesa" wrote:

> Isaias,
>
> Me inmagino que cuando dices:
>
> > En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> > mas al cliente.
>
> sea la suma de las ventas, verdad?. Si es asi, trata:
>
> select top 1 with ties
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> order by
> sum(IMPORTE) desc
>
>
> select top 1 with ties
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> having
> sum(IMPORTE) = (
> select max(sum_importe)
> from (
> select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> ) as t
> )
> go
>
> No esta probado.
>
> AMB
>
> "Isaias" wrote:
>
> > Tiendo una Tabla de VENTAS, donde hay 3 columnas, CLIENTE, VENDEDOR, IMPORTE
> >
> > CREATE TABLE VENTAS (CLIENTE INT, VENDEDOR INT, IMPORTE SMALLMONEY)
> > INSERT INTO VENTAS VALUES(1,1,100)
> > INSERT INTO VENTAS VALUES(1,1,100)
> > INSERT INTO VENTAS VALUES(1,2,100)
> > INSERT INTO VENTAS VALUES(1,3,100)
> > INSERT INTO VENTAS VALUES(1,3,100)
> > INSERT INTO VENTAS VALUES(1,4,100)
> > INSERT INTO VENTAS VALUES(1,5,1000)
> > INSERT INTO VENTAS VALUES(2,1,100)
> > INSERT INTO VENTAS VALUES(2,1,100)
> > INSERT INTO VENTAS VALUES(2,2,100)
> > INSERT INTO VENTAS VALUES(2,3,2100)
> > INSERT INTO VENTAS VALUES(2,3,100)
> > INSERT INTO VENTAS VALUES(2,4,100)
> > INSERT INTO VENTAS VALUES(2,5,100)
> > INSERT INTO VENTAS VALUES(3,1,100)
> > INSERT INTO VENTAS VALUES(3,1,100)
> > INSERT INTO VENTAS VALUES(3,1,100)
> > INSERT INTO VENTAS VALUES(3,3,2100)
> > INSERT INTO VENTAS VALUES(3,3,100)
> > INSERT INTO VENTAS VALUES(3,5,100)
> > INSERT INTO VENTAS VALUES(3,5,100)
> >
> > Deseo obtener
> >
> > TOTAL DE VENTAS por CLIENTE, donde aparezca:
> >
> > CLIENTE VENDEDOR (*) TOTAL
> >
> > 1 3 1200
> >
> > En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> > mas al cliente.
> >
> > Gracias.
> > Saludos
> > IIslas
Respuesta Responder a este mensaje
#4 Isaias
04/11/2005 - 16:37 | Informe spam
Muchas gracias por tu query, solo que debe darme las ventas TOTALES por cada
Cliente y a este registro, asignarle el VENDEDOR que mas le haya vendido.

Deberian aparecer los 3 clientes, 1,2,3 con su respectivo vendedor (que le
haya vendido mas).

Saludos
IIslas


"Alejandro Mesa" escribió:

Correccion:

> select top 1 with ties
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> having
> sum(IMPORTE) = (
> select max(sum_importe)
> from (
> select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> ) as t
> )
> go

select
cliente, vendedor, sum(IMPORTE)
from
t1
group by
cliente, vendedor
having
sum(IMPORTE) = (
select max(sum_importe)
from (
select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
) as t
)
go


AMB

"Alejandro Mesa" wrote:

> Isaias,
>
> Me inmagino que cuando dices:
>
> > En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> > mas al cliente.
>
> sea la suma de las ventas, verdad?. Si es asi, trata:
>
> select top 1 with ties
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> order by
> sum(IMPORTE) desc
>
>
> select top 1 with ties
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> having
> sum(IMPORTE) = (
> select max(sum_importe)
> from (
> select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> ) as t
> )
> go
>
> No esta probado.
>
> AMB
>
> "Isaias" wrote:
>
> > Tiendo una Tabla de VENTAS, donde hay 3 columnas, CLIENTE, VENDEDOR, IMPORTE
> >
> > CREATE TABLE VENTAS (CLIENTE INT, VENDEDOR INT, IMPORTE SMALLMONEY)
> > INSERT INTO VENTAS VALUES(1,1,100)
> > INSERT INTO VENTAS VALUES(1,1,100)
> > INSERT INTO VENTAS VALUES(1,2,100)
> > INSERT INTO VENTAS VALUES(1,3,100)
> > INSERT INTO VENTAS VALUES(1,3,100)
> > INSERT INTO VENTAS VALUES(1,4,100)
> > INSERT INTO VENTAS VALUES(1,5,1000)
> > INSERT INTO VENTAS VALUES(2,1,100)
> > INSERT INTO VENTAS VALUES(2,1,100)
> > INSERT INTO VENTAS VALUES(2,2,100)
> > INSERT INTO VENTAS VALUES(2,3,2100)
> > INSERT INTO VENTAS VALUES(2,3,100)
> > INSERT INTO VENTAS VALUES(2,4,100)
> > INSERT INTO VENTAS VALUES(2,5,100)
> > INSERT INTO VENTAS VALUES(3,1,100)
> > INSERT INTO VENTAS VALUES(3,1,100)
> > INSERT INTO VENTAS VALUES(3,1,100)
> > INSERT INTO VENTAS VALUES(3,3,2100)
> > INSERT INTO VENTAS VALUES(3,3,100)
> > INSERT INTO VENTAS VALUES(3,5,100)
> > INSERT INTO VENTAS VALUES(3,5,100)
> >
> > Deseo obtener
> >
> > TOTAL DE VENTAS por CLIENTE, donde aparezca:
> >
> > CLIENTE VENDEDOR (*) TOTAL
> >
> > 1 3 1200
> >
> > En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> > mas al cliente.
> >
> > Gracias.
> > Saludos
> > IIslas
Respuesta Responder a este mensaje
#5 Alejandro Mesa
04/11/2005 - 16:46 | Informe spam
Isaias,

Creo que mal interprete el problema. Deseas ver las ventas de todos los
cliente, pero en la columna "vendedor" quieres ver el vendedor que mas le
haya vendido a ese cliente, correcto?. Entonces trata:

create view v1
as
select cliente, vendedor, sum(importe) as sum_importe
from t1
group by cliente, vendedor
go

select
x.cliente, y.max_vendedor, x.sum_importe
from
(
select
cliente,
sum(IMPORTE) as sum_importe
from
t1
group by
cliente
) as x
inner join
(
select
cliente, max(vendedor) as max_vendedor
from
v1 as a
where
not exists(
select *
from v1 as b
where b.cliente = a.cliente and b.sum_importe > a.sum_importe
)
) as y
on x.cliente = y.cliente
go


AMB

"Isaias" wrote:

Gracias Alex

¿Donde quedan las ventas del CLIENTE 1?
Saludos
IIslas


"Alejandro Mesa" escribió:

> Correccion:
>
> > select top 1 with ties
> > cliente, vendedor, sum(IMPORTE)
> > from
> > t1
> > group by
> > cliente, vendedor
> > having
> > sum(IMPORTE) = (
> > select max(sum_importe)
> > from (
> > select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> > ) as t
> > )
> > go
>
> select
> cliente, vendedor, sum(IMPORTE)
> from
> t1
> group by
> cliente, vendedor
> having
> sum(IMPORTE) = (
> select max(sum_importe)
> from (
> select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> ) as t
> )
> go
>
>
> AMB
>
> "Alejandro Mesa" wrote:
>
> > Isaias,
> >
> > Me inmagino que cuando dices:
> >
> > > En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> > > mas al cliente.
> >
> > sea la suma de las ventas, verdad?. Si es asi, trata:
> >
> > select top 1 with ties
> > cliente, vendedor, sum(IMPORTE)
> > from
> > t1
> > group by
> > cliente, vendedor
> > order by
> > sum(IMPORTE) desc
> >
> >
> > select top 1 with ties
> > cliente, vendedor, sum(IMPORTE)
> > from
> > t1
> > group by
> > cliente, vendedor
> > having
> > sum(IMPORTE) = (
> > select max(sum_importe)
> > from (
> > select sum(IMPORTE) as sum_importe from t1 group by cliente, vendedor
> > ) as t
> > )
> > go
> >
> > No esta probado.
> >
> > AMB
> >
> > "Isaias" wrote:
> >
> > > Tiendo una Tabla de VENTAS, donde hay 3 columnas, CLIENTE, VENDEDOR, IMPORTE
> > >
> > > CREATE TABLE VENTAS (CLIENTE INT, VENDEDOR INT, IMPORTE SMALLMONEY)
> > > INSERT INTO VENTAS VALUES(1,1,100)
> > > INSERT INTO VENTAS VALUES(1,1,100)
> > > INSERT INTO VENTAS VALUES(1,2,100)
> > > INSERT INTO VENTAS VALUES(1,3,100)
> > > INSERT INTO VENTAS VALUES(1,3,100)
> > > INSERT INTO VENTAS VALUES(1,4,100)
> > > INSERT INTO VENTAS VALUES(1,5,1000)
> > > INSERT INTO VENTAS VALUES(2,1,100)
> > > INSERT INTO VENTAS VALUES(2,1,100)
> > > INSERT INTO VENTAS VALUES(2,2,100)
> > > INSERT INTO VENTAS VALUES(2,3,2100)
> > > INSERT INTO VENTAS VALUES(2,3,100)
> > > INSERT INTO VENTAS VALUES(2,4,100)
> > > INSERT INTO VENTAS VALUES(2,5,100)
> > > INSERT INTO VENTAS VALUES(3,1,100)
> > > INSERT INTO VENTAS VALUES(3,1,100)
> > > INSERT INTO VENTAS VALUES(3,1,100)
> > > INSERT INTO VENTAS VALUES(3,3,2100)
> > > INSERT INTO VENTAS VALUES(3,3,100)
> > > INSERT INTO VENTAS VALUES(3,5,100)
> > > INSERT INTO VENTAS VALUES(3,5,100)
> > >
> > > Deseo obtener
> > >
> > > TOTAL DE VENTAS por CLIENTE, donde aparezca:
> > >
> > > CLIENTE VENDEDOR (*) TOTAL
> > >
> > > 1 3 1200
> > >
> > > En la columna VENDEDOR (*), debe aparecer el VENDEDOR que le haya vendido
> > > mas al cliente.
> > >
> > > Gracias.
> > > Saludos
> > > IIslas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida