Ayuda con consulta

14/07/2009 - 20:28 por Joshua | Informe spam
Hola a todo mundo!.


Oigan tengo una gran duda, tengo una tabla con la siguiente estructura:



id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


Y quiero obtener mediante una consulta la siguiente informacion:
FECHA VEND01 ACUMULADO VEND02 ACUMULADO CONCENTRADO
13-03-09 1 1 0
0 1
13-04-09 2 3 0
0 3
12-05-09 1 4 0
0 4
13-05-09 1 5 0
0 5
10-06-09 0 5 1
1 6
11-06/09 0 5 1
2 7
10-07-09 0 5 2
4 9


Es decir, agrupo por fecha, cuento las ocurrencias diferentes e iguales a 0
para el vendedor01 y 02 respectivamente, el acumulado por
vendedor y el concentrado que es la suma del acumulado de vendedores.

Hasta ahorita tengo la siguiente consulta:
SELECT
CONVERT(char(10), fecha, 101) AS fecha, COUNT(id) AS Numero
FROM vendedores
WHERE (id = 0)
GROUP BY
CONVERT(char(10), fecha, 101), id
ORDER BY fecha

esto me agrupa por fecha las ocurrencias del vendedor cuyo ID es igual a 0,
la pregunta es:
¿hay alguna manera de poder sacar todos esos pasos mediante 1 sola
consulta?, para el acumulado de vendedor queria hacer un sum del count..
pero creo que no es una opcion jaja

Ayuda por favor!

gracias adelantadas!

Preguntas similare

Leer las respuestas

#6 Joshua
16/07/2009 - 16:54 | Informe spam
Hola Carlos, gracias, muchas gracias por tu intencion de ayudar.

Quiza no he logrado explicarme bien, pero VEND1 y VEND02 es el acumulado de
facturas de los vendedores, es el resultado de eso, ese campo como tal no
existe en mi base, todo los campos que puse de prueba se derivan de estas 2
columnas que si existen en mi base:

id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


no importa mucho el contendio del campo Id o id_vendedor, el contenido que
importa es que sea cero o sea diferente de 0
y entonces, manipulando los 2 campos que te mencione anteriormente (ID y
FECHA), yo debo asumir que:

el dia 10/07/09 el vendedor1 (VEND1 o lo que sea, ya que tiene la condicion
de igual a 0 en el id) hizo 2 facturas, el dia 10/06/09 1 documento y el dia
11/06/09 1 documento tambien (con el criterio que id sea igual a 0), esto
en el resultado deberia quedar asi:

[fecha] [C1] [acumulado c1]
10/06/09 1 1
11/06/09 1 2
10/07/09 2 4

aplicando el mismo criterio para el id <> de 0, por lo que habia pensado en
sacar un solo query y que me arrojara esos resiltados y quedaria a grandes
rasgos de esta manera:
[FECHA] [C1] [ACUMULADO C1] [C2] [ACUMULADO C2]
[CONCENTRADO]
13-03-09 1 1 0
0 1
13-04-09 2 3 0
0 3
12-05-09 1 4 0
0 4
13-05-09 1 5 0
0 5
10-06-09 0 5 1
1 6
11-06-09 0 5 1
2 7
10-07-09 0 5 2
4 9


Yo tengo problema con el acumulado y el concentrado, es decir, si yo pudiera
hacer quiza un sum de un Count (utilizado para sacar el C1 y C2) seria lo
ideal pero hasta el sol de hoy no he podido, tambien habia pensado en sacar
mediante un solo query ambos criterios diferente de cero e igual a cero y en
base a los acumulados de ambos criterios sumarlos y sacar el "concentrado" o
la suma de [acumulado C1+acumulado C2]...

Saludos.




"Joshua" escribió en el mensaje
news:
Hola a todo mundo!.


Oigan tengo una gran duda, tengo una tabla con la siguiente estructura:



id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


Y quiero obtener mediante una consulta la siguiente informacion:
FECHA VEND01 ACUMULADO VEND02 ACUMULADO CONCENTRADO
13-03-09 1 1 0 0
1
13-04-09 2 3 0 0
3
12-05-09 1 4 0 0
4
13-05-09 1 5 0 0
5
10-06-09 0 5 1 1
6
11-06/09 0 5 1 2
7
10-07-09 0 5 2 4
9


Es decir, agrupo por fecha, cuento las ocurrencias diferentes e iguales a
0 para el vendedor01 y 02 respectivamente, el acumulado por
vendedor y el concentrado que es la suma del acumulado de vendedores.

Hasta ahorita tengo la siguiente consulta:
SELECT
CONVERT(char(10), fecha, 101) AS fecha, COUNT(id) AS Numero
FROM vendedores
WHERE (id = 0)
GROUP BY
CONVERT(char(10), fecha, 101), id
ORDER BY fecha

esto me agrupa por fecha las ocurrencias del vendedor cuyo ID es igual a
0, la pregunta es:
¿hay alguna manera de poder sacar todos esos pasos mediante 1 sola
consulta?, para el acumulado de vendedor queria hacer un sum del count..
pero creo que no es una opcion jaja

Ayuda por favor!

gracias adelantadas!

Respuesta Responder a este mensaje
#7 Carlos Sacristan
16/07/2009 - 17:26 | Informe spam
Ahora ya sí que te entendí. Prueba entonces con algo como:


;WITH calc AS (
SELECT fecha_movimiento
, CASE WHEN id_vendedor <> 0 THEN 1 ELSE 0 END AS id_vendedor
FROM dbo.vendedores
)
,preData AS(
SELECT fecha_movimiento ,
SUM(CASE id_vendedor WHEN 0 THEN 1 ELSE 0 END) AS C1,
SUM(CASE WHEN id_vendedor <> 0 THEN 1 ELSE 0 END) AS C2,
COUNT(fecha_movimiento) AS concentrado
FROM calc
WHERE (id_vendedor BETWEEN 0 AND 2)
GROUP BY fecha_movimiento
)
SELECT TOP (10) PERCENT
preData.fecha_movimiento
, preData.C1
, (SELECT SUM(t1.C1)
FROM preData t1
WHERE t1.fecha_movimiento <= preData.fecha_movimiento) AS acumulado_C1
, preData.C2
, (SELECT SUM(C2)
FROM preData t1
WHERE t1.fecha_movimiento <= preData.fecha_movimiento) AS acumulado_C2
, preData.concentrado
FROM preData
ORDER BY fecha_movimiento;

He creado un par de CTEs para mejorar la legibilidad de la instrucción, no
por otra razón...

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba


"Joshua" wrote in message
news:
Hola Carlos, gracias, muchas gracias por tu intencion de ayudar.

Quiza no he logrado explicarme bien, pero VEND1 y VEND02 es el acumulado
de facturas de los vendedores, es el resultado de eso, ese campo como tal
no existe en mi base, todo los campos que puse de prueba se derivan de
estas 2 columnas que si existen en mi base:

id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


no importa mucho el contendio del campo Id o id_vendedor, el contenido que
importa es que sea cero o sea diferente de 0
y entonces, manipulando los 2 campos que te mencione anteriormente (ID y
FECHA), yo debo asumir que:

el dia 10/07/09 el vendedor1 (VEND1 o lo que sea, ya que tiene la
condicion de igual a 0 en el id) hizo 2 facturas, el dia 10/06/09 1
documento y el dia 11/06/09 1 documento tambien (con el criterio que id
sea igual a 0), esto en el resultado deberia quedar asi:

[fecha] [C1] [acumulado c1]
10/06/09 1 1
11/06/09 1 2
10/07/09 2 4

aplicando el mismo criterio para el id <> de 0, por lo que habia pensado
en sacar un solo query y que me arrojara esos resiltados y quedaria a
grandes rasgos de esta manera:
[FECHA] [C1] [ACUMULADO C1] [C2] [ACUMULADO C2]
[CONCENTRADO]
13-03-09 1 1 0 0
1
13-04-09 2 3 0 0
3
12-05-09 1 4 0 0
4
13-05-09 1 5 0 0
5
10-06-09 0 5 1 1
6
11-06-09 0 5 1 2
7
10-07-09 0 5 2 4
9


Yo tengo problema con el acumulado y el concentrado, es decir, si yo
pudiera hacer quiza un sum de un Count (utilizado para sacar el C1 y C2)
seria lo ideal pero hasta el sol de hoy no he podido, tambien habia
pensado en sacar mediante un solo query ambos criterios diferente de cero
e igual a cero y en base a los acumulados de ambos criterios sumarlos y
sacar el "concentrado" o la suma de [acumulado C1+acumulado C2]...

Saludos.




"Joshua" escribió en el mensaje
news:
Hola a todo mundo!.


Oigan tengo una gran duda, tengo una tabla con la siguiente estructura:



id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


Y quiero obtener mediante una consulta la siguiente informacion:
FECHA VEND01 ACUMULADO VEND02 ACUMULADO CONCENTRADO
13-03-09 1 1 0 0 1
13-04-09 2 3 0 0 3
12-05-09 1 4 0 0 4
13-05-09 1 5 0 0 5
10-06-09 0 5 1 1 6
11-06/09 0 5 1 2 7
10-07-09 0 5 2 4 9


Es decir, agrupo por fecha, cuento las ocurrencias diferentes e iguales
a 0 para el vendedor01 y 02 respectivamente, el acumulado por
vendedor y el concentrado que es la suma del acumulado de vendedores.

Hasta ahorita tengo la siguiente consulta:
SELECT
CONVERT(char(10), fecha, 101) AS fecha, COUNT(id) AS Numero
FROM vendedores
WHERE (id = 0)
GROUP BY
CONVERT(char(10), fecha, 101), id
ORDER BY fecha

esto me agrupa por fecha las ocurrencias del vendedor cuyo ID es igual a
0, la pregunta es:
¿hay alguna manera de poder sacar todos esos pasos mediante 1 sola
consulta?, para el acumulado de vendedor queria hacer un sum del count..
pero creo que no es una opcion jaja

Ayuda por favor!

gracias adelantadas!





Respuesta Responder a este mensaje
#8 Joshua
17/07/2009 - 20:00 | Informe spam
Muchas gracias Carlos he estado viendo tu query y lo adaptare a lo que
requiero, para serte honesto yo no me habia metido con los CTE's pero veo
que se pueden hacer cosas muy interesantes con estos.

Nuevamente muchas gracias!


Saludos desde la ciudad + grande del mundo.



"Carlos Sacristan" escribió en el mensaje
news:%
Ahora ya sí que te entendí. Prueba entonces con algo como:


;WITH calc AS (
SELECT fecha_movimiento
, CASE WHEN id_vendedor <> 0 THEN 1 ELSE 0 END AS id_vendedor
FROM dbo.vendedores
)
,preData AS(
SELECT fecha_movimiento ,
SUM(CASE id_vendedor WHEN 0 THEN 1 ELSE 0 END) AS C1,
SUM(CASE WHEN id_vendedor <> 0 THEN 1 ELSE 0 END) AS C2,
COUNT(fecha_movimiento) AS concentrado
FROM calc
WHERE (id_vendedor BETWEEN 0 AND 2)
GROUP BY fecha_movimiento
)
SELECT TOP (10) PERCENT
preData.fecha_movimiento
, preData.C1
, (SELECT SUM(t1.C1)
FROM preData t1
WHERE t1.fecha_movimiento <= preData.fecha_movimiento) AS acumulado_C1
, preData.C2
, (SELECT SUM(C2)
FROM preData t1
WHERE t1.fecha_movimiento <= preData.fecha_movimiento) AS acumulado_C2
, preData.concentrado
FROM preData
ORDER BY fecha_movimiento;

He creado un par de CTEs para mejorar la legibilidad de la instrucción, no
por otra razón...

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba


"Joshua" wrote in message
news:
Hola Carlos, gracias, muchas gracias por tu intencion de ayudar.

Quiza no he logrado explicarme bien, pero VEND1 y VEND02 es el acumulado
de facturas de los vendedores, es el resultado de eso, ese campo como tal
no existe en mi base, todo los campos que puse de prueba se derivan de
estas 2 columnas que si existen en mi base:

id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


no importa mucho el contendio del campo Id o id_vendedor, el contenido
que importa es que sea cero o sea diferente de 0
y entonces, manipulando los 2 campos que te mencione anteriormente (ID y
FECHA), yo debo asumir que:

el dia 10/07/09 el vendedor1 (VEND1 o lo que sea, ya que tiene la
condicion de igual a 0 en el id) hizo 2 facturas, el dia 10/06/09 1
documento y el dia 11/06/09 1 documento tambien (con el criterio que id
sea igual a 0), esto en el resultado deberia quedar asi:

[fecha] [C1] [acumulado c1]
10/06/09 1 1
11/06/09 1 2
10/07/09 2 4

aplicando el mismo criterio para el id <> de 0, por lo que habia pensado
en sacar un solo query y que me arrojara esos resiltados y quedaria a
grandes rasgos de esta manera:
[FECHA] [C1] [ACUMULADO C1] [C2] [ACUMULADO C2]
[CONCENTRADO]
13-03-09 1 1 0 0 1
13-04-09 2 3 0 0 3
12-05-09 1 4 0 0 4
13-05-09 1 5 0 0 5
10-06-09 0 5 1 1 6
11-06-09 0 5 1 2 7
10-07-09 0 5 2 4 9


Yo tengo problema con el acumulado y el concentrado, es decir, si yo
pudiera hacer quiza un sum de un Count (utilizado para sacar el C1 y C2)
seria lo ideal pero hasta el sol de hoy no he podido, tambien habia
pensado en sacar mediante un solo query ambos criterios diferente de cero
e igual a cero y en base a los acumulados de ambos criterios sumarlos y
sacar el "concentrado" o la suma de [acumulado C1+acumulado C2]...

Saludos.




"Joshua" escribió en el mensaje
news:
Hola a todo mundo!.


Oigan tengo una gran duda, tengo una tabla con la siguiente estructura:



id FECHA
0 10/07/2009 17:00
0 10/07/2009 17:34
0 10/06/2009 23:27
0 11/06/2009 02:21
1 12/05/2009 13:37
2 13/05/2009 01:28
3 13/04/2009 11:29
4 13/04/2009 11:48
5 13/03/2009 12:13


Y quiero obtener mediante una consulta la siguiente informacion:
FECHA VEND01 ACUMULADO VEND02 ACUMULADO CONCENTRADO
13-03-09 1 1 0 0 1
13-04-09 2 3 0 0 3
12-05-09 1 4 0 0 4
13-05-09 1 5 0 0 5
10-06-09 0 5 1 1 6
11-06/09 0 5 1 2 7
10-07-09 0 5 2 4 9


Es decir, agrupo por fecha, cuento las ocurrencias diferentes e iguales
a 0 para el vendedor01 y 02 respectivamente, el acumulado por
vendedor y el concentrado que es la suma del acumulado de vendedores.

Hasta ahorita tengo la siguiente consulta:
SELECT
CONVERT(char(10), fecha, 101) AS fecha, COUNT(id) AS Numero
FROM vendedores
WHERE (id = 0)
GROUP BY
CONVERT(char(10), fecha, 101), id
ORDER BY fecha

esto me agrupa por fecha las ocurrencias del vendedor cuyo ID es igual a
0, la pregunta es:
¿hay alguna manera de poder sacar todos esos pasos mediante 1 sola
consulta?, para el acumulado de vendedor queria hacer un sum del count..
pero creo que no es una opcion jaja

Ayuda por favor!

gracias adelantadas!








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