Se puede hacer select si?

14/01/2006 - 17:01 por Fabián | Informe spam
Hola compañeros, tengo una pregunta que a lo mejor es básica.
Pero no se como hacerla T-SQL
Sí A >2 y G>4 y P>15 entonces X=X-(A+G+P)
o
Sí A >2 y G<4 y P<15 entonces X=X-(A)
Espero que me haya explicado.
Ej.:
XR,
A=8,
P)
entonces x= 52-(6+14) y el resultado sería x2

Desde ya muchas gracias.
Fabián

Preguntas similare

Leer las respuestas

#11 Alejandro Mesa
16/01/2006 - 00:25 | Informe spam
Fabián,

Me rindo. Si pudieras explicarlo paso a paso con la data de ejemplo creo me
ayudaria a tener una mejor idea.


AMB

"Fabián" wrote:

Alejandro,
> No se porque dices que G4 = 0. Lo mismo pasa con P15.
Esto lo digo por que:
si hago el select * from resumen1
obtengo que el afiliado 123456789013 Cantidad es 6 y el afiliado
123456789012 Cantidad es 4.
Al restarle A2 la cantidad para el afiliado 123456789013 queda cantidad 2 y
no se cumplen en consecuencia ninguna de las dos condiciones posteriores. Es
decir,
si cantidad - a2 es menor 4 entonces no tengo que restarle nada. Y como
cantidad para el mismo dia,medico es inferior a 15 entonces no tengo que
restarle nada.
Me explico?
Gracias
Fabián

"Alejandro Mesa" escribió:

> Fabián,
>
> Seguimos por parte. Para A2 creo que podemos usar:
>
> create view med
> as
> SELECT
> AÑO,MES,DIA,MEDICO,
> sum(cantidad) as sum_cantidad
> FROM RESUMEN1
> GROUP BY AÑO,MES,DIA,MEDICO
> go
>
> create view a2
> as
> select
> AÑO,MES,DIA,MEDICO,
> sum(cnt) as a2
> from
> (
> SELECT
> AÑO,MES,DIA,MEDICO,AFILIADO,
> case when count(*) > 2 then count(*) - 2 else 0 end as cnt
> FROM RESUMEN1
> GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> ) as t1
> group by
> AÑO,MES,DIA,MEDICO
> go
>
> select
> r.*, c.a2
> from
> med as r
> left outer join
> a2 as c
> ON R.AÑO=C.AÑO
> AND R.MES=C.MES
> AND R.DIA=C.DIA
> AND R.MEDICO = C.MEDICO
> go
>
> drop view med, a2
> go
>
> Para G4 y P15, necesito indagar un poco mas, porque si ejecutamos las
> siguientes sentencias sobre la data de ejemplo que posteastes, entonces:
>
> select AÑO, mes, dia, medico,substring(afiliado,1,9)as Grupo, sum(cantidad)
> as G4
> from resumen1
> group by AÑO, mes, dia, medico,substring(afiliado,1,9)
> having sum(cantidad) > 4
> go
>
> Resultado:
>
> AÑO mes dia medico Grupo G4
>
> 2005 12 1 10331 123456789 23
>
> No se porque dices que G4 = 0. Lo mismo pasa con P15.
>
>
> AMB
>
> "Fabián" wrote:
>
> > Alejandro,
> > > > P15 A2 G4
> > > > 0 6 0
> > Estos valores salen del control que hago a "mano",
> > A2 = 6
> > Significa que el mismo afiliado en el mismo día tuvo mas de 2 consultas.
> > Y en realidad sale del
> > select año,mes,dia,medico,afiliado, count(cantidad) cantidad from resumen1
> > group by año,mes,dia,medico,afiliado
> > 2005 12 1 10331 123456789012 4
> > 2005 12 1 10331 123456789013 6
> >
> > Es lo que quiero conseguir, pero no se como hacerlo.
> > En teoría es el select dia,medico,sum(cantidad)-2 as A2 from resumen1 group
> > by dia,medico having sum(cantidad) >4.
> >
> > G4=0
> > es el select dia,medico,substring(afiliado,1,9)as Grupo,sum(cantidad) as G4
> > from resumen1 group by dia,medico,substring(afiliado,1,9) having
> > sum(cantidad) >4
> > P15=0
> > es el select dia,medico,sum(cantidad) as P15 from resumen1 group by
> > dia,medico, having sum(cantidad) >15
> >
> >
> > "Alejandro Mesa" escribió:
> >
> > > Fabián,
> > >
> > > > Año Mes Medico Cantidad
> > > > 2005 12 10331 23
> > >
> > > Los datos previos se entienden. Ahora explicanos de donde salen los valores:
> > >
> > > > P15 A2 G4
> > > > 0 6 0
> > >
> > >
> > > AMB
> > >
> > > "Fabián" wrote:
> > >
> > > > Alejandro
> > > > Este es el script de creación de la tabla y la insercion de registros de
> > > > prueba
> > > > El resultado deseado es
> > > > Año Mes Medico Cantidad P15 A2 G4 Total
> > > > 2005 12 10331 23 0 6 0 17
> > > >
> > > >
> > > > CREATE TABLE [dbo].[RESUMEN1] (
> > > > [AÑO] [int] NULL ,
> > > > [MES] [int] NULL ,
> > > > [DIA] [int] NULL ,
> > > > [MEDICO] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > [AFILIADO] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > [PRACTICA] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > [CANTIDAD] [int] NULL
> > > > ) ON [PRIMARY]
> > > > GO
> > > >
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789013',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789013',4)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789013',11)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789013',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789013',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789013',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789012',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789012',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789012',1)
> > > > GO
> > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > (2005,12,1,'10331','123456789012',1)
> > > > GO
> > > > SELECT
> > > > R.AÑO,R.MES,R.MEDICO
> > > > ,SUM(CANTIDAD) AS CANTIDAD
> > > > ,SUM(P15) AS P15
> > > > ,SUM(A2) AS A2
> > > > ,SUM(G4) AS G4
> > > > ,TOTAL=(SUM(CANTIDAD)-SUM(P15)-SUM(A2)-SUM(G4))
> > > > FROM RESUMEN1 R
> > > > LEFT OUTER JOIN
> > > > /*
> > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE
> > > > 15 AFILIADOS EN UN MISMO DÍA. SE TIENE QUE DEBITAR PERO TENGO QUE TENER EN
> > > > CUENTA TAMBIEN LAS DOS CONDICIONES QUE SIGUEN A CONTINUACION.
> > > > */
> > > > (SELECT AÑO,MES,DIA,MEDICO,SUM(CANTIDAD)-15 AS P15
> > > > FROM RESUMEN1
> > > > GROUP BY AÑO,MES,DIA,MEDICO
> > > > HAVING SUM(CANTIDAD) >15)AS E
> > > > ON R.AÑO=E.AÑO AND R.MES=E.MES AND R.DIA=E.DIA AND R.MEDICO = E.MEDICO
> > > > LEFT OUTER JOIN
> > > > /*
> > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO 2 VECES
> > > > EN UN MISMO DÍA A UN MISMO AFILIADO. ESTO SE TIENE QUE DEBITAR
> > > > */
> > > > (SELECT AÑO,MES,DIA,MEDICO,AFILIADO,SUM(CANTIDAD)-2 AS A2
> > > > FROM RESUMEN1
> > > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > > HAVING SUM(CANTIDAD) >2)AS C
> > > > ON
> > > > R.AÑO=C.AÑO
> > > > AND
> > > > R.MES=C.MES
> > > > AND
> > > > R.DIA=C.DIA
> > > > AND
> > > > R.MEDICO = C.MEDICO
> > > > AND
> > > > R.AFILIADO = C.AFILIADO
> > > >
> > > > LEFT OUTER JOIN
> > > > /*
> > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE 4 VECES
> > > > A UN MISMO GRUPO FAMILIAR. ESTO SE TIENE QUE DEBITAR
> > > > */
> > > > (SELECT AÑO,MES,DIA,MEDICO,SUBSTRING(AFILIADO,1,9)AFILIADO,SUM(CANTIDAD)-4
> > > > AS G4
> > > > FROM RESUMEN1
> > > > GROUP BY AÑO,MES,DIA,MEDICO,SUBSTRING(AFILIADO,1,9)
> > > > HAVING SUM(CANTIDAD) >4)AS D
> > > > ON
> > > > R.AÑO=D.AÑO
> > > > AND
> > > > R.MES=D.MES
> > > > AND
> > > > R.DIA=D.DIA
> > > > AND
> > > > R.MEDICO = D.MEDICO
> > > > AND
> > > > SUBSTRING(R.AFILIADO,1,9) = SUBSTRING(D.AFILIADO,1,9)
> > > >
> > > > WHERE R.MEDICO331
> > > > GROUP BY R.AÑO,R.MES,R.MEDICO
> > > > ORDER BY R.MEDICO
> > > > GO
> > > >
> > > > "Alejandro Mesa" escribió:
> > > >
> > > > > Fabián,
> > > > >
> > > > > Creo que mejor pones un ejemplo de la tabla, data y resultado esperado. Es
> > > > > muy dificil entender lo que se quiere hacer cuando la descripcion del
> > > > > problema se da de poquito en poquito.
> > > > >
> > > > > 1 -
> > > > >
> > > > > Quien es X en todo este asunto?
> > > > >
> > > > > 2 -
> > > > >
> > > > > Por que usas un alias igual al nombre de una columna?
> > > > >
> > > > > > select a,b,sum(cantidad) AS A from tabla group by a,b having A>2
> > > > >
> > > > > 3 -
> > > > >
> > > > > Por que filtras en la clausula "having" y no en la clausula "where", si solo
> > > > > queires ciertos valores de la columna [A]?
> > > > >
> > > > > > select a,b,sum(cantidad) AS g from tabla group by a,b having A>4
> > > > > > select a,b,sum(cantidad) AS p from tabla group by a,b having A>15
> > > > >
> > > > >
> > > > > AMB
> > > > >
> > > > > "Fabián" wrote:
> > > > >
> > > > > > Hola, estos valores salen de una misma tabla y de un mismo campo. Que es el
> > > > > > campo cantidad. Lo que pasa es que los valores son group by.
> > > > > > Por ejemplo
> > > > > > select a,b,sum(cantidad) AS A from tabla group by a,b having A>2
> > > > > > select a,b,sum(cantidad) AS g from tabla group by a,b having A>4
> > > > > > select a,b,sum(cantidad) AS p from tabla group by a,b having A>15
> > > > > > Gracias
> > > > > >
> > > > > >
> > > > > > "Alejandro Mesa" escribió:
> > > > > >
> > > > > > > Fabián,
> > > > > > >
> > > > > > > De donde salen los valores a los que te refieres, desde una tabla o son
> > > > > > > valores de variables?
> > > > > > >
> > > > > > > T-SQL cuenta con una expresion muy interesante y util llamada "case".
> > > > > > >
> > > > > > > select
> > > > > > > case
> > > > > > > when A > 2 and G > 4 and P > 15 then X - (A + G + P)
> > > > > > > when A > 2 and G < 4 and P < 15 then X - A
> > > > > > > else NULL -- que pasa si no se cumplen los criterios anteriores
> > > > > > > end as X
> > > > > > > from
Respuesta Responder a este mensaje
#12 Fabián
16/01/2006 - 01:48 | Informe spam
Alejandro,
Muchas gracias por todo lo que has intentado y tu ayuda es invalorable. Te
pido disculpas por no haberme podido explicarme mejor.

Ya veré como se puede hacer, si es que es factible.

En realidad lo que tengo que obtener es encadenar los criterios.

Los dos primeros criterios tienen en cuenta a los afiliados, y el tercer
criterio tiene en cuenta al medico.

Si el count(cantidad) >2 para un mismo dia,médico y afiliado entonces le
resto 2
Ej.:
Estos datos son del mismo grupo de afiliados

Día Medico Afiliado Count_Cantidad
1 1 110 1
1 1 110 1
1 1 110 1
1 1 111 1
1 1 112 1
1 1 113 1
1 1 114 1

Como el count_Cantidad para el afiliado 110 es mayor a 2 tengo que dejar la
diferencia.
Día Medico Afiliado Count_Cantidad
1 1 110 1
1 1 111 1
1 1 112 1
1 1 113 1
1 1 114 1

A este set de datos que se devolvio despues de aplicarle el primer criterio .
Le tengo que preguntar si count_cantidad >4
Estos datos son del mismo grupo de afiliados
En este caso la respuesta es afirmativa por que tengo

Día Medico Afiliado Count_Cantidad
1 1 110 1
1 1 111 1
1 1 112 1
1 1 113 1
1 1 114 1

Esto lo tengo que tengo que restarle por que el el count de la cantidad para
el mismo grupo es mayor a 4

Día Medico Count_Cantidad
1 1 1

Despues de haber restado los que son >2 y >4
El resultado final deseado es
7-2-1=4
día médico count_cantidad
1 1 4
Desde ya muchas gracias
Fabián
"Alejandro Mesa" escribió:

Fabián,

Me rindo. Si pudieras explicarlo paso a paso con la data de ejemplo creo me
ayudaria a tener una mejor idea.


AMB

"Fabián" wrote:

> Alejandro,
> > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> Esto lo digo por que:
> si hago el select * from resumen1
> obtengo que el afiliado 123456789013 Cantidad es 6 y el afiliado
> 123456789012 Cantidad es 4.
> Al restarle A2 la cantidad para el afiliado 123456789013 queda cantidad 2 y
> no se cumplen en consecuencia ninguna de las dos condiciones posteriores. Es
> decir,
> si cantidad - a2 es menor 4 entonces no tengo que restarle nada. Y como
> cantidad para el mismo dia,medico es inferior a 15 entonces no tengo que
> restarle nada.
> Me explico?
> Gracias
> Fabián
>
> "Alejandro Mesa" escribió:
>
> > Fabián,
> >
> > Seguimos por parte. Para A2 creo que podemos usar:
> >
> > create view med
> > as
> > SELECT
> > AÑO,MES,DIA,MEDICO,
> > sum(cantidad) as sum_cantidad
> > FROM RESUMEN1
> > GROUP BY AÑO,MES,DIA,MEDICO
> > go
> >
> > create view a2
> > as
> > select
> > AÑO,MES,DIA,MEDICO,
> > sum(cnt) as a2
> > from
> > (
> > SELECT
> > AÑO,MES,DIA,MEDICO,AFILIADO,
> > case when count(*) > 2 then count(*) - 2 else 0 end as cnt
> > FROM RESUMEN1
> > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > ) as t1
> > group by
> > AÑO,MES,DIA,MEDICO
> > go
> >
> > select
> > r.*, c.a2
> > from
> > med as r
> > left outer join
> > a2 as c
> > ON R.AÑO=C.AÑO
> > AND R.MES=C.MES
> > AND R.DIA=C.DIA
> > AND R.MEDICO = C.MEDICO
> > go
> >
> > drop view med, a2
> > go
> >
> > Para G4 y P15, necesito indagar un poco mas, porque si ejecutamos las
> > siguientes sentencias sobre la data de ejemplo que posteastes, entonces:
> >
> > select AÑO, mes, dia, medico,substring(afiliado,1,9)as Grupo, sum(cantidad)
> > as G4
> > from resumen1
> > group by AÑO, mes, dia, medico,substring(afiliado,1,9)
> > having sum(cantidad) > 4
> > go
> >
> > Resultado:
> >
> > AÑO mes dia medico Grupo G4
> >
> > 2005 12 1 10331 123456789 23
> >
> > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> >
> >
> > AMB
> >
> > "Fabián" wrote:
> >
> > > Alejandro,
> > > > > P15 A2 G4
> > > > > 0 6 0
> > > Estos valores salen del control que hago a "mano",
> > > A2 = 6
> > > Significa que el mismo afiliado en el mismo día tuvo mas de 2 consultas.
> > > Y en realidad sale del
> > > select año,mes,dia,medico,afiliado, count(cantidad) cantidad from resumen1
> > > group by año,mes,dia,medico,afiliado
> > > 2005 12 1 10331 123456789012 4
> > > 2005 12 1 10331 123456789013 6
> > >
> > > Es lo que quiero conseguir, pero no se como hacerlo.
> > > En teoría es el select dia,medico,sum(cantidad)-2 as A2 from resumen1 group
> > > by dia,medico having sum(cantidad) >4.
> > >
> > > G4=0
> > > es el select dia,medico,substring(afiliado,1,9)as Grupo,sum(cantidad) as G4
> > > from resumen1 group by dia,medico,substring(afiliado,1,9) having
> > > sum(cantidad) >4
> > > P15=0
> > > es el select dia,medico,sum(cantidad) as P15 from resumen1 group by
> > > dia,medico, having sum(cantidad) >15
> > >
> > >
> > > "Alejandro Mesa" escribió:
> > >
> > > > Fabián,
> > > >
> > > > > Año Mes Medico Cantidad
> > > > > 2005 12 10331 23
> > > >
> > > > Los datos previos se entienden. Ahora explicanos de donde salen los valores:
> > > >
> > > > > P15 A2 G4
> > > > > 0 6 0
> > > >
> > > >
> > > > AMB
> > > >
> > > > "Fabián" wrote:
> > > >
> > > > > Alejandro
> > > > > Este es el script de creación de la tabla y la insercion de registros de
> > > > > prueba
> > > > > El resultado deseado es
> > > > > Año Mes Medico Cantidad P15 A2 G4 Total
> > > > > 2005 12 10331 23 0 6 0 17
> > > > >
> > > > >
> > > > > CREATE TABLE [dbo].[RESUMEN1] (
> > > > > [AÑO] [int] NULL ,
> > > > > [MES] [int] NULL ,
> > > > > [DIA] [int] NULL ,
> > > > > [MEDICO] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > [AFILIADO] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > [PRACTICA] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > [CANTIDAD] [int] NULL
> > > > > ) ON [PRIMARY]
> > > > > GO
> > > > >
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789013',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789013',4)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789013',11)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789013',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789013',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789013',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789012',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789012',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789012',1)
> > > > > GO
> > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > (2005,12,1,'10331','123456789012',1)
> > > > > GO
> > > > > SELECT
> > > > > R.AÑO,R.MES,R.MEDICO
> > > > > ,SUM(CANTIDAD) AS CANTIDAD
> > > > > ,SUM(P15) AS P15
> > > > > ,SUM(A2) AS A2
> > > > > ,SUM(G4) AS G4
> > > > > ,TOTAL=(SUM(CANTIDAD)-SUM(P15)-SUM(A2)-SUM(G4))
> > > > > FROM RESUMEN1 R
> > > > > LEFT OUTER JOIN
> > > > > /*
> > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE
> > > > > 15 AFILIADOS EN UN MISMO DÍA. SE TIENE QUE DEBITAR PERO TENGO QUE TENER EN
> > > > > CUENTA TAMBIEN LAS DOS CONDICIONES QUE SIGUEN A CONTINUACION.
> > > > > */
> > > > > (SELECT AÑO,MES,DIA,MEDICO,SUM(CANTIDAD)-15 AS P15
> > > > > FROM RESUMEN1
> > > > > GROUP BY AÑO,MES,DIA,MEDICO
> > > > > HAVING SUM(CANTIDAD) >15)AS E
> > > > > ON R.AÑO=E.AÑO AND R.MES=E.MES AND R.DIA=E.DIA AND R.MEDICO = E.MEDICO
> > > > > LEFT OUTER JOIN
> > > > > /*
> > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO 2 VECES
> > > > > EN UN MISMO DÍA A UN MISMO AFILIADO. ESTO SE TIENE QUE DEBITAR
> > > > > */
> > > > > (SELECT AÑO,MES,DIA,MEDICO,AFILIADO,SUM(CANTIDAD)-2 AS A2
> > > > > FROM RESUMEN1
> > > > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > > > HAVING SUM(CANTIDAD) >2)AS C
> > > > > ON
> > > > > R.AÑO=C.AÑO
> > > > > AND
> > > > > R.MES=C.MES
> > > > > AND
> > > > > R.DIA=C.DIA
> > > > > AND
> > > > > R.MEDICO = C.MEDICO
> > > > > AND
> > > > > R.AFILIADO = C.AFILIADO
> > > > >
> > > > > LEFT OUTER JOIN
> > > > > /*
> > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE 4 VECES
> > > > > A UN MISMO GRUPO FAMILIAR. ESTO SE TIENE QUE DEBITAR
> > > > > */
> > > > > (SELECT AÑO,MES,DIA,MEDICO,SUBSTRING(AFILIADO,1,9)AFILIADO,SUM(CANTIDAD)-4
> > > > > AS G4
> > > > > FROM RESUMEN1
> > > > > GROUP BY AÑO,MES,DIA,MEDICO,SUBSTRING(AFILIADO,1,9)
> > > > > HAVING SUM(CANTIDAD) >4)AS D
> > > > > ON
> > > > > R.AÑO=D.AÑO
> > > > > AND
> > > > > R.MES=D.MES
> > > > > AND
> > > > > R.DIA=D.DIA
> > > > > AND
> > > > > R.MEDICO = D.MEDICO
> > > > > AND
> > > > > SUBSTRING(R.AFILIADO,1,9) = SUBSTRING(D.AFILIADO,1,9)
> > > > >
> > > > > WHERE R.MEDICO331
> > > > > GROUP BY R.AÑO,R.MES,R.MEDICO
> > > > > ORDER BY R.MEDICO
> > > > > GO
> > > > >
> > > > > "Alejandro Mesa" escribió:
> > > > >
> > > > > > Fabián,
> > > > > >
> > > > > > Creo que mejor pones un ejemplo de la tabla, data y resultado esperado. Es
> > > > > > muy dificil entender lo que se quiere hacer cuando la descripcion del
> > > > > > problema se da de poquito en poquito.
> > > > > >
> > > > > > 1 -
> > > > > >
> > > > > > Quien es X en todo este asunto?
> > > > > >
> > > > > > 2 -
> > > > > >
> > > > > > Por que usas un alias igual al nombre de una columna?
> > > > > >
> > > > > > > select a,b,sum(cantidad) AS A from tabla group by a,b having A>2
> > > > > >
> > > > > > 3 -
> > > > > >
> > > > > > Por que filtras en la clausula "having" y no en la clausula "where", si solo
> > > > > > queires ciertos valores de la columna [A]?
> > > > > >
> > > > > > > select a,b,sum(cantidad) AS g from tabla group by a,b having A>4
> > > > > > > select a,b,sum(cantidad) AS p from tabla group by a,b having A>15
> > > > > >
> > > > > >
> > > > > > AMB
> > > > > >
> > > > > > "Fabián" wrote:
> > > > > >
> > > > > > > Hola, estos valores salen de una misma tabla y de un mismo campo. Que es el
> > > > > > > campo cantidad. Lo que pasa es que los valores son group by.
> > > > > > > Por ejemplo
> > > > > > > select a,b,sum(cantidad) AS A from tabla group by a,b having A>2
> > > > > > > select a,b,sum(cantidad) AS g from tabla group by a,b having A>4
> > > > > > > select a,b,sum(cantidad) AS p from tabla group by a,b having A>15
> > > > > > > Gracias
> > > > > > >
> > > > > > >
> > > > > > > "Alejandro Mesa" escribió:
> > > > > > >
> > > > > > > > Fabián,
> > > > > > > >
> > > > > > > > De donde salen los valores a los que te refieres, desde una tabla o son
> > > > > > > > valores de variables?
Respuesta Responder a este mensaje
#13 Alejandro Mesa
16/01/2006 - 03:22 | Informe spam
Fabián,

crees que pudieras dar la misma explicacion usando la data que posteastes en
el primer script, donde aparece la definicion de la tabla?


AMB

"Fabián" wrote:

Alejandro,
Muchas gracias por todo lo que has intentado y tu ayuda es invalorable. Te
pido disculpas por no haberme podido explicarme mejor.

Ya veré como se puede hacer, si es que es factible.

En realidad lo que tengo que obtener es encadenar los criterios.

Los dos primeros criterios tienen en cuenta a los afiliados, y el tercer
criterio tiene en cuenta al medico.

Si el count(cantidad) >2 para un mismo dia,médico y afiliado entonces le
resto 2
Ej.:
Estos datos son del mismo grupo de afiliados

Día Medico Afiliado Count_Cantidad
1 1 110 1
1 1 110 1
1 1 110 1
1 1 111 1
1 1 112 1
1 1 113 1
1 1 114 1

Como el count_Cantidad para el afiliado 110 es mayor a 2 tengo que dejar la
diferencia.
Día Medico Afiliado Count_Cantidad
1 1 110 1
1 1 111 1
1 1 112 1
1 1 113 1
1 1 114 1

A este set de datos que se devolvio despues de aplicarle el primer criterio .
Le tengo que preguntar si count_cantidad >4
Estos datos son del mismo grupo de afiliados
En este caso la respuesta es afirmativa por que tengo

Día Medico Afiliado Count_Cantidad
1 1 110 1
1 1 111 1
1 1 112 1
1 1 113 1
1 1 114 1

Esto lo tengo que tengo que restarle por que el el count de la cantidad para
el mismo grupo es mayor a 4

Día Medico Count_Cantidad
1 1 1

Despues de haber restado los que son >2 y >4
El resultado final deseado es
7-2-1=4
día médico count_cantidad
1 1 4
Desde ya muchas gracias
Fabián
"Alejandro Mesa" escribió:

> Fabián,
>
> Me rindo. Si pudieras explicarlo paso a paso con la data de ejemplo creo me
> ayudaria a tener una mejor idea.
>
>
> AMB
>
> "Fabián" wrote:
>
> > Alejandro,
> > > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> > Esto lo digo por que:
> > si hago el select * from resumen1
> > obtengo que el afiliado 123456789013 Cantidad es 6 y el afiliado
> > 123456789012 Cantidad es 4.
> > Al restarle A2 la cantidad para el afiliado 123456789013 queda cantidad 2 y
> > no se cumplen en consecuencia ninguna de las dos condiciones posteriores. Es
> > decir,
> > si cantidad - a2 es menor 4 entonces no tengo que restarle nada. Y como
> > cantidad para el mismo dia,medico es inferior a 15 entonces no tengo que
> > restarle nada.
> > Me explico?
> > Gracias
> > Fabián
> >
> > "Alejandro Mesa" escribió:
> >
> > > Fabián,
> > >
> > > Seguimos por parte. Para A2 creo que podemos usar:
> > >
> > > create view med
> > > as
> > > SELECT
> > > AÑO,MES,DIA,MEDICO,
> > > sum(cantidad) as sum_cantidad
> > > FROM RESUMEN1
> > > GROUP BY AÑO,MES,DIA,MEDICO
> > > go
> > >
> > > create view a2
> > > as
> > > select
> > > AÑO,MES,DIA,MEDICO,
> > > sum(cnt) as a2
> > > from
> > > (
> > > SELECT
> > > AÑO,MES,DIA,MEDICO,AFILIADO,
> > > case when count(*) > 2 then count(*) - 2 else 0 end as cnt
> > > FROM RESUMEN1
> > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > ) as t1
> > > group by
> > > AÑO,MES,DIA,MEDICO
> > > go
> > >
> > > select
> > > r.*, c.a2
> > > from
> > > med as r
> > > left outer join
> > > a2 as c
> > > ON R.AÑO=C.AÑO
> > > AND R.MES=C.MES
> > > AND R.DIA=C.DIA
> > > AND R.MEDICO = C.MEDICO
> > > go
> > >
> > > drop view med, a2
> > > go
> > >
> > > Para G4 y P15, necesito indagar un poco mas, porque si ejecutamos las
> > > siguientes sentencias sobre la data de ejemplo que posteastes, entonces:
> > >
> > > select AÑO, mes, dia, medico,substring(afiliado,1,9)as Grupo, sum(cantidad)
> > > as G4
> > > from resumen1
> > > group by AÑO, mes, dia, medico,substring(afiliado,1,9)
> > > having sum(cantidad) > 4
> > > go
> > >
> > > Resultado:
> > >
> > > AÑO mes dia medico Grupo G4
> > >
> > > 2005 12 1 10331 123456789 23
> > >
> > > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> > >
> > >
> > > AMB
> > >
> > > "Fabián" wrote:
> > >
> > > > Alejandro,
> > > > > > P15 A2 G4
> > > > > > 0 6 0
> > > > Estos valores salen del control que hago a "mano",
> > > > A2 = 6
> > > > Significa que el mismo afiliado en el mismo día tuvo mas de 2 consultas.
> > > > Y en realidad sale del
> > > > select año,mes,dia,medico,afiliado, count(cantidad) cantidad from resumen1
> > > > group by año,mes,dia,medico,afiliado
> > > > 2005 12 1 10331 123456789012 4
> > > > 2005 12 1 10331 123456789013 6
> > > >
> > > > Es lo que quiero conseguir, pero no se como hacerlo.
> > > > En teoría es el select dia,medico,sum(cantidad)-2 as A2 from resumen1 group
> > > > by dia,medico having sum(cantidad) >4.
> > > >
> > > > G4=0
> > > > es el select dia,medico,substring(afiliado,1,9)as Grupo,sum(cantidad) as G4
> > > > from resumen1 group by dia,medico,substring(afiliado,1,9) having
> > > > sum(cantidad) >4
> > > > P15=0
> > > > es el select dia,medico,sum(cantidad) as P15 from resumen1 group by
> > > > dia,medico, having sum(cantidad) >15
> > > >
> > > >
> > > > "Alejandro Mesa" escribió:
> > > >
> > > > > Fabián,
> > > > >
> > > > > > Año Mes Medico Cantidad
> > > > > > 2005 12 10331 23
> > > > >
> > > > > Los datos previos se entienden. Ahora explicanos de donde salen los valores:
> > > > >
> > > > > > P15 A2 G4
> > > > > > 0 6 0
> > > > >
> > > > >
> > > > > AMB
> > > > >
> > > > > "Fabián" wrote:
> > > > >
> > > > > > Alejandro
> > > > > > Este es el script de creación de la tabla y la insercion de registros de
> > > > > > prueba
> > > > > > El resultado deseado es
> > > > > > Año Mes Medico Cantidad P15 A2 G4 Total
> > > > > > 2005 12 10331 23 0 6 0 17
> > > > > >
> > > > > >
> > > > > > CREATE TABLE [dbo].[RESUMEN1] (
> > > > > > [AÑO] [int] NULL ,
> > > > > > [MES] [int] NULL ,
> > > > > > [DIA] [int] NULL ,
> > > > > > [MEDICO] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > [AFILIADO] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > [PRACTICA] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > [CANTIDAD] [int] NULL
> > > > > > ) ON [PRIMARY]
> > > > > > GO
> > > > > >
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789013',4)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789013',11)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > GO
> > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > GO
> > > > > > SELECT
> > > > > > R.AÑO,R.MES,R.MEDICO
> > > > > > ,SUM(CANTIDAD) AS CANTIDAD
> > > > > > ,SUM(P15) AS P15
> > > > > > ,SUM(A2) AS A2
> > > > > > ,SUM(G4) AS G4
> > > > > > ,TOTAL=(SUM(CANTIDAD)-SUM(P15)-SUM(A2)-SUM(G4))
> > > > > > FROM RESUMEN1 R
> > > > > > LEFT OUTER JOIN
> > > > > > /*
> > > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE
> > > > > > 15 AFILIADOS EN UN MISMO DÍA. SE TIENE QUE DEBITAR PERO TENGO QUE TENER EN
> > > > > > CUENTA TAMBIEN LAS DOS CONDICIONES QUE SIGUEN A CONTINUACION.
> > > > > > */
> > > > > > (SELECT AÑO,MES,DIA,MEDICO,SUM(CANTIDAD)-15 AS P15
> > > > > > FROM RESUMEN1
> > > > > > GROUP BY AÑO,MES,DIA,MEDICO
> > > > > > HAVING SUM(CANTIDAD) >15)AS E
> > > > > > ON R.AÑO=E.AÑO AND R.MES=E.MES AND R.DIA=E.DIA AND R.MEDICO = E.MEDICO
> > > > > > LEFT OUTER JOIN
> > > > > > /*
> > > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO 2 VECES
> > > > > > EN UN MISMO DÍA A UN MISMO AFILIADO. ESTO SE TIENE QUE DEBITAR
> > > > > > */
> > > > > > (SELECT AÑO,MES,DIA,MEDICO,AFILIADO,SUM(CANTIDAD)-2 AS A2
> > > > > > FROM RESUMEN1
> > > > > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > > > > HAVING SUM(CANTIDAD) >2)AS C
> > > > > > ON
> > > > > > R.AÑO=C.AÑO
> > > > > > AND
> > > > > > R.MES=C.MES
> > > > > > AND
> > > > > > R.DIA=C.DIA
> > > > > > AND
> > > > > > R.MEDICO = C.MEDICO
> > > > > > AND
> > > > > > R.AFILIADO = C.AFILIADO
> > > > > >
> > > > > > LEFT OUTER JOIN
> > > > > > /*
> > > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE 4 VECES
> > > > > > A UN MISMO GRUPO FAMILIAR. ESTO SE TIENE QUE DEBITAR
> > > > > > */
> > > > > > (SELECT AÑO,MES,DIA,MEDICO,SUBSTRING(AFILIADO,1,9)AFILIADO,SUM(CANTIDAD)-4
> > > > > > AS G4
> > > > > > FROM RESUMEN1
> > > > > > GROUP BY AÑO,MES,DIA,MEDICO,SUBSTRING(AFILIADO,1,9)
> > > > > > HAVING SUM(CANTIDAD) >4)AS D
> > > > > > ON
Respuesta Responder a este mensaje
#14 Fabián
16/01/2006 - 04:01 | Informe spam
Alejandro,
Tomando como base la data que pase en el primer script.
La explicación es de esta manera.
> Los dos primeros criterios tienen en cuenta a los afiliados, y el tercer
> criterio tiene en cuenta al medico.
>
> Si el count(cantidad) >2 para un mismo dia,médico y afiliado entonces le
> resto 2



Ej.:
Estos datos son del mismo grupo de afiliados

select año,mes,dia,medico,afiliado,count(*)count_cantidad from resumen1
group by año,mes,dia,afiliado
año mes dia medico afiliado
count_cantidad
2005 12 1 10331 123456789012 4
2005 12 1 10331 123456789013 6

Aplicando el primer criterio que dice que un médico, no debe atender mas de
dos veces el mismo dia al mismo paciente.
Tengo que restarle 2 al primer registro y 4 al segundo registro.
Quedando de esta manera
año mes dia afiliado
count_cantidad
2005 12 1 123456789012 2
2005 12 1 123456789013 2

> A este set de datos que se devolvio despues de aplicarle el primer criterio .
> Le tengo que preguntar si count_cantidad >4
> Estos datos son del mismo grupo de afiliados


En este caso la respuesta es negativa por que tengo
año mes dia afiliado
count_cantidad
2005 12 1 123456789012 2
2005 12 1 123456789013 2
Es decir que el count_cantidad no es >4 entonces no le tengo que restar nada.
Y ahí terminan las operaciones de suma y resta.

El tercer criterio es que el select año,mes,dia,medico,count(cantidad) from
resumen1 group by año,mes,dia,medico having count(cantidad) > 15
No se cumple por que no es mayor a 15
> Despues de haber restado los que son >2 y >4
> El resultado final deseado es
> 10-6-0=4
> día médico count_cantidad
> 1 10331 4



Gracias
Fabián
"Alejandro Mesa" escribió:

Fabián,

crees que pudieras dar la misma explicacion usando la data que posteastes en
el primer script, donde aparece la definicion de la tabla?


AMB

"Fabián" wrote:

> Alejandro,
> Muchas gracias por todo lo que has intentado y tu ayuda es invalorable. Te
> pido disculpas por no haberme podido explicarme mejor.
>
> Ya veré como se puede hacer, si es que es factible.
>
> En realidad lo que tengo que obtener es encadenar los criterios.
>
> Los dos primeros criterios tienen en cuenta a los afiliados, y el tercer
> criterio tiene en cuenta al medico.
>
> Si el count(cantidad) >2 para un mismo dia,médico y afiliado entonces le
> resto 2
> Ej.:
> Estos datos son del mismo grupo de afiliados
>
> Día Medico Afiliado Count_Cantidad
> 1 1 110 1
> 1 1 110 1
> 1 1 110 1
> 1 1 111 1
> 1 1 112 1
> 1 1 113 1
> 1 1 114 1
>
> Como el count_Cantidad para el afiliado 110 es mayor a 2 tengo que dejar la
> diferencia.
> Día Medico Afiliado Count_Cantidad
> 1 1 110 1
> 1 1 111 1
> 1 1 112 1
> 1 1 113 1
> 1 1 114 1
>
> A este set de datos que se devolvio despues de aplicarle el primer criterio .
> Le tengo que preguntar si count_cantidad >4
> Estos datos son del mismo grupo de afiliados
> En este caso la respuesta es afirmativa por que tengo
>
> Día Medico Afiliado Count_Cantidad
> 1 1 110 1
> 1 1 111 1
> 1 1 112 1
> 1 1 113 1
> 1 1 114 1
>
> Esto lo tengo que tengo que restarle por que el el count de la cantidad para
> el mismo grupo es mayor a 4
>
> Día Medico Count_Cantidad
> 1 1 1
>
> Despues de haber restado los que son >2 y >4
> El resultado final deseado es
> 7-2-1=4
> día médico count_cantidad
> 1 1 4
> Desde ya muchas gracias
> Fabián
> "Alejandro Mesa" escribió:
>
> > Fabián,
> >
> > Me rindo. Si pudieras explicarlo paso a paso con la data de ejemplo creo me
> > ayudaria a tener una mejor idea.
> >
> >
> > AMB
> >
> > "Fabián" wrote:
> >
> > > Alejandro,
> > > > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> > > Esto lo digo por que:
> > > si hago el select * from resumen1
> > > obtengo que el afiliado 123456789013 Cantidad es 6 y el afiliado
> > > 123456789012 Cantidad es 4.
> > > Al restarle A2 la cantidad para el afiliado 123456789013 queda cantidad 2 y
> > > no se cumplen en consecuencia ninguna de las dos condiciones posteriores. Es
> > > decir,
> > > si cantidad - a2 es menor 4 entonces no tengo que restarle nada. Y como
> > > cantidad para el mismo dia,medico es inferior a 15 entonces no tengo que
> > > restarle nada.
> > > Me explico?
> > > Gracias
> > > Fabián
> > >
> > > "Alejandro Mesa" escribió:
> > >
> > > > Fabián,
> > > >
> > > > Seguimos por parte. Para A2 creo que podemos usar:
> > > >
> > > > create view med
> > > > as
> > > > SELECT
> > > > AÑO,MES,DIA,MEDICO,
> > > > sum(cantidad) as sum_cantidad
> > > > FROM RESUMEN1
> > > > GROUP BY AÑO,MES,DIA,MEDICO
> > > > go
> > > >
> > > > create view a2
> > > > as
> > > > select
> > > > AÑO,MES,DIA,MEDICO,
> > > > sum(cnt) as a2
> > > > from
> > > > (
> > > > SELECT
> > > > AÑO,MES,DIA,MEDICO,AFILIADO,
> > > > case when count(*) > 2 then count(*) - 2 else 0 end as cnt
> > > > FROM RESUMEN1
> > > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > > ) as t1
> > > > group by
> > > > AÑO,MES,DIA,MEDICO
> > > > go
> > > >
> > > > select
> > > > r.*, c.a2
> > > > from
> > > > med as r
> > > > left outer join
> > > > a2 as c
> > > > ON R.AÑO=C.AÑO
> > > > AND R.MES=C.MES
> > > > AND R.DIA=C.DIA
> > > > AND R.MEDICO = C.MEDICO
> > > > go
> > > >
> > > > drop view med, a2
> > > > go
> > > >
> > > > Para G4 y P15, necesito indagar un poco mas, porque si ejecutamos las
> > > > siguientes sentencias sobre la data de ejemplo que posteastes, entonces:
> > > >
> > > > select AÑO, mes, dia, medico,substring(afiliado,1,9)as Grupo, sum(cantidad)
> > > > as G4
> > > > from resumen1
> > > > group by AÑO, mes, dia, medico,substring(afiliado,1,9)
> > > > having sum(cantidad) > 4
> > > > go
> > > >
> > > > Resultado:
> > > >
> > > > AÑO mes dia medico Grupo G4
> > > >
> > > > 2005 12 1 10331 123456789 23
> > > >
> > > > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> > > >
> > > >
> > > > AMB
> > > >
> > > > "Fabián" wrote:
> > > >
> > > > > Alejandro,
> > > > > > > P15 A2 G4
> > > > > > > 0 6 0
> > > > > Estos valores salen del control que hago a "mano",
> > > > > A2 = 6
> > > > > Significa que el mismo afiliado en el mismo día tuvo mas de 2 consultas.
> > > > > Y en realidad sale del
> > > > > select año,mes,dia,medico,afiliado, count(cantidad) cantidad from resumen1
> > > > > group by año,mes,dia,medico,afiliado
> > > > > 2005 12 1 10331 123456789012 4
> > > > > 2005 12 1 10331 123456789013 6
> > > > >
> > > > > Es lo que quiero conseguir, pero no se como hacerlo.
> > > > > En teoría es el select dia,medico,sum(cantidad)-2 as A2 from resumen1 group
> > > > > by dia,medico having sum(cantidad) >4.
> > > > >
> > > > > G4=0
> > > > > es el select dia,medico,substring(afiliado,1,9)as Grupo,sum(cantidad) as G4
> > > > > from resumen1 group by dia,medico,substring(afiliado,1,9) having
> > > > > sum(cantidad) >4
> > > > > P15=0
> > > > > es el select dia,medico,sum(cantidad) as P15 from resumen1 group by
> > > > > dia,medico, having sum(cantidad) >15
> > > > >
> > > > >
> > > > > "Alejandro Mesa" escribió:
> > > > >
> > > > > > Fabián,
> > > > > >
> > > > > > > Año Mes Medico Cantidad
> > > > > > > 2005 12 10331 23
> > > > > >
> > > > > > Los datos previos se entienden. Ahora explicanos de donde salen los valores:
> > > > > >
> > > > > > > P15 A2 G4
> > > > > > > 0 6 0
> > > > > >
> > > > > >
> > > > > > AMB
> > > > > >
> > > > > > "Fabián" wrote:
> > > > > >
> > > > > > > Alejandro
> > > > > > > Este es el script de creación de la tabla y la insercion de registros de
> > > > > > > prueba
> > > > > > > El resultado deseado es
> > > > > > > Año Mes Medico Cantidad P15 A2 G4 Total
> > > > > > > 2005 12 10331 23 0 6 0 17
> > > > > > >
> > > > > > >
> > > > > > > CREATE TABLE [dbo].[RESUMEN1] (
> > > > > > > [AÑO] [int] NULL ,
> > > > > > > [MES] [int] NULL ,
> > > > > > > [DIA] [int] NULL ,
> > > > > > > [MEDICO] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > > [AFILIADO] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > > [PRACTICA] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > > [CANTIDAD] [int] NULL
> > > > > > > ) ON [PRIMARY]
> > > > > > > GO
> > > > > > >
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789013',4)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789013',11)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > > GO
> > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > (2005,12,1,'10331','123456789012',1)
> > > > > > > GO
> > > > > > > SELECT
> > > > > > > R.AÑO,R.MES,R.MEDICO
> > > > > > > ,SUM(CANTIDAD) AS CANTIDAD
> > > > > > > ,SUM(P15) AS P15
> > > > > > > ,SUM(A2) AS A2
> > > > > > > ,SUM(G4) AS G4
> > > > > > > ,TOTAL=(SUM(CANTIDAD)-SUM(P15)-SUM(A2)-SUM(G4))
> > > > > > > FROM RESUMEN1 R
> > > > > > > LEFT OUTER JOIN
> > > > > > > /*
> > > > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO MAS DE
> > > > > > > 15 AFILIADOS EN UN MISMO DÍA. SE TIENE QUE DEBITAR PERO TENGO QUE TENER EN
> > > > > > > CUENTA TAMBIEN LAS DOS CONDICIONES QUE SIGUEN A CONTINUACION.
> > > > > > > */
> > > > > > > (SELECT AÑO,MES,DIA,MEDICO,SUM(CANTIDAD)-15 AS P15
> > > > > > > FROM RESUMEN1
> > > > > > > GROUP BY AÑO,MES,DIA,MEDICO
> > > > > > > HAVING SUM(CANTIDAD) >15)AS E
> > > > > > > ON R.AÑO=E.AÑO AND R.MES=E.MES AND R.DIA=E.DIA AND R.MEDICO = E.MEDICO
> > > > > > > LEFT OUTER JOIN
> > > > > > > /*
> > > > > > > CON ESTA SUBCONSULTA DEVUELVO LOS MÉDICOS QUE HAN ATENDIDO 2 VECES
> > > > > > > EN UN MISMO DÍA A UN MISMO AFILIADO. ESTO SE TIENE QUE DEBITAR
> > > > > > > */
> > > > > > > (SELECT AÑO,MES,DIA,MEDICO,AFILIADO,SUM(CANTIDAD)-2 AS A2
> > > > > > > FROM RESUMEN1
> > > > > > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > > > > > HAVING SUM(CANTIDAD) >2)AS C
> > > > > > > ON
> > > > > > > R.AÑO=C.AÑO
> > > > > > > AND
> > > > > > > R.MES=C.MES
> > > > > > > AND
> > > > > > > R.DIA=C.DIA
> > > > > > > AND
> > > > > > > R.MEDICO = C.MEDICO
> > > > > > > AND
> > > > > > > R.AFILIADO = C.AFILIADO
> > > > > > >
> > > > > > > LEFT OUTER JOIN
Respuesta Responder a este mensaje
#15 Alejandro Mesa
16/01/2006 - 20:01 | Informe spam
Fabián,

Trabajemos sobre este ejemplo. Dime si el resultado de la select final esta
o no correcto. En caso de no estar correcto, danos una breve descripcion de
lo que pasa.
Trata de agregarle mas filas para probar con mas dias. Tambien dime como
seria para calcular P15 y restarlo del total.

CREATE TABLE [dbo].[RESUMEN1] (
[AÑO] [int] NULL ,
[MES] [int] NULL ,
[DIA] [int] NULL ,
[MEDICO] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
[AFILIADO] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
[PRACTICA] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
[CANTIDAD] [int] NULL
) ON [PRIMARY]
GO

set nocount off
go

INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789013',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789013',4)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789013',11)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789013',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789013',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789013',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789012',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789012',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789012',1)
GO
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789012',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789014',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789015',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789016',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456789017',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456788001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456788002',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456788003',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456787001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456786001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456785001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456784001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456783001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456782001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456781001',1)
INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
(2005,12,1,'10331','123456780001',1)
GO

set nocount off
go

create view a2
as
select
AÑO,MES,DIA,MEDICO,AFILIADO,
count(*) as cantidad,
case when count(*) > 2 then count(*) - 2 else 0 end as cantidad_no_valida
from
RESUMEN1
group by
AÑO,MES,DIA,MEDICO,AFILIADO
go

create view g4
as
select
AÑO,MES,DIA,MEDICO,left(AFILIADO, 9) as grupo,
count(*) as cantidad,
case when count(*) > 4 then count(*) - 4 else 0 end as cantidad_no_valida
from
RESUMEN1
group by
AÑO,MES,DIA,MEDICO,left(AFILIADO, 9)
go

create view v1
as
select
AÑO,MES,DIA,MEDICO,
count(*) as cantidad
from
RESUMEN1
group by
AÑO,MES,DIA,MEDICO
go

select * from a2
select * from g4

select
v1.*,
t2.a2_cantidad_no_valida,
t3.g4_cantidad_no_valida,
v1.cantidad - t2.a2_cantidad_no_valida - t3.g4_cantidad_no_valida as total
from
v1
inner join
(
select
AÑO,MES,DIA,MEDICO,
sum(cantidad_no_valida) as a2_cantidad_no_valida
from
a2
group by
AÑO,MES,DIA,MEDICO
) as t2
on v1.AÑO = t2.AÑO
and v1.MES = t2.MES
and v1.DIA = t2.DIA
and v1.MEDICO = t2.MEDICO
inner join
(
select
AÑO,MES,DIA,MEDICO,
sum(cantidad_no_valida) as g4_cantidad_no_valida
from
g4
group by
AÑO,MES,DIA,MEDICO
) as t3
on v1.AÑO = t3.AÑO
and v1.MES = t3.MES
and v1.DIA = t3.DIA
and v1.MEDICO = t3.MEDICO
go

drop view v1, a2, g4
go


AMB


"Fabián" wrote:

Alejandro,
Tomando como base la data que pase en el primer script.
La explicación es de esta manera.
> > Los dos primeros criterios tienen en cuenta a los afiliados, y el tercer
> > criterio tiene en cuenta al medico.
> >
> > Si el count(cantidad) >2 para un mismo dia,médico y afiliado entonces le
> > resto 2

Ej.:
Estos datos son del mismo grupo de afiliados

select año,mes,dia,medico,afiliado,count(*)count_cantidad from resumen1
group by año,mes,dia,afiliado
año mes dia medico afiliado
count_cantidad
2005 12 1 10331 123456789012 4
2005 12 1 10331 123456789013 6

Aplicando el primer criterio que dice que un médico, no debe atender mas de
dos veces el mismo dia al mismo paciente.
Tengo que restarle 2 al primer registro y 4 al segundo registro.
Quedando de esta manera
año mes dia afiliado
count_cantidad
2005 12 1 123456789012 2
2005 12 1 123456789013 2

> > A este set de datos que se devolvio despues de aplicarle el primer criterio .
> > Le tengo que preguntar si count_cantidad >4
> > Estos datos son del mismo grupo de afiliados
En este caso la respuesta es negativa por que tengo
año mes dia afiliado
count_cantidad
2005 12 1 123456789012 2
2005 12 1 123456789013 2
Es decir que el count_cantidad no es >4 entonces no le tengo que restar nada.
Y ahí terminan las operaciones de suma y resta.

El tercer criterio es que el select año,mes,dia,medico,count(cantidad) from
resumen1 group by año,mes,dia,medico having count(cantidad) > 15
No se cumple por que no es mayor a 15
> > Despues de haber restado los que son >2 y >4
> > El resultado final deseado es
> > 10-6-0=4
> > día médico count_cantidad
> > 1 10331 4

Gracias
Fabián
"Alejandro Mesa" escribió:

> Fabián,
>
> crees que pudieras dar la misma explicacion usando la data que posteastes en
> el primer script, donde aparece la definicion de la tabla?
>
>
> AMB
>
> "Fabián" wrote:
>
> > Alejandro,
> > Muchas gracias por todo lo que has intentado y tu ayuda es invalorable. Te
> > pido disculpas por no haberme podido explicarme mejor.
> >
> > Ya veré como se puede hacer, si es que es factible.
> >
> > En realidad lo que tengo que obtener es encadenar los criterios.
> >
> > Los dos primeros criterios tienen en cuenta a los afiliados, y el tercer
> > criterio tiene en cuenta al medico.
> >
> > Si el count(cantidad) >2 para un mismo dia,médico y afiliado entonces le
> > resto 2
> > Ej.:
> > Estos datos son del mismo grupo de afiliados
> >
> > Día Medico Afiliado Count_Cantidad
> > 1 1 110 1
> > 1 1 110 1
> > 1 1 110 1
> > 1 1 111 1
> > 1 1 112 1
> > 1 1 113 1
> > 1 1 114 1
> >
> > Como el count_Cantidad para el afiliado 110 es mayor a 2 tengo que dejar la
> > diferencia.
> > Día Medico Afiliado Count_Cantidad
> > 1 1 110 1
> > 1 1 111 1
> > 1 1 112 1
> > 1 1 113 1
> > 1 1 114 1
> >
> > A este set de datos que se devolvio despues de aplicarle el primer criterio .
> > Le tengo que preguntar si count_cantidad >4
> > Estos datos son del mismo grupo de afiliados
> > En este caso la respuesta es afirmativa por que tengo
> >
> > Día Medico Afiliado Count_Cantidad
> > 1 1 110 1
> > 1 1 111 1
> > 1 1 112 1
> > 1 1 113 1
> > 1 1 114 1
> >
> > Esto lo tengo que tengo que restarle por que el el count de la cantidad para
> > el mismo grupo es mayor a 4
> >
> > Día Medico Count_Cantidad
> > 1 1 1
> >
> > Despues de haber restado los que son >2 y >4
> > El resultado final deseado es
> > 7-2-1=4
> > día médico count_cantidad
> > 1 1 4
> > Desde ya muchas gracias
> > Fabián
> > "Alejandro Mesa" escribió:
> >
> > > Fabián,
> > >
> > > Me rindo. Si pudieras explicarlo paso a paso con la data de ejemplo creo me
> > > ayudaria a tener una mejor idea.
> > >
> > >
> > > AMB
> > >
> > > "Fabián" wrote:
> > >
> > > > Alejandro,
> > > > > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> > > > Esto lo digo por que:
> > > > si hago el select * from resumen1
> > > > obtengo que el afiliado 123456789013 Cantidad es 6 y el afiliado
> > > > 123456789012 Cantidad es 4.
> > > > Al restarle A2 la cantidad para el afiliado 123456789013 queda cantidad 2 y
> > > > no se cumplen en consecuencia ninguna de las dos condiciones posteriores. Es
> > > > decir,
> > > > si cantidad - a2 es menor 4 entonces no tengo que restarle nada. Y como
> > > > cantidad para el mismo dia,medico es inferior a 15 entonces no tengo que
> > > > restarle nada.
> > > > Me explico?
> > > > Gracias
> > > > Fabián
> > > >
> > > > "Alejandro Mesa" escribió:
> > > >
> > > > > Fabián,
> > > > >
> > > > > Seguimos por parte. Para A2 creo que podemos usar:
> > > > >
> > > > > create view med
> > > > > as
> > > > > SELECT
> > > > > AÑO,MES,DIA,MEDICO,
> > > > > sum(cantidad) as sum_cantidad
> > > > > FROM RESUMEN1
> > > > > GROUP BY AÑO,MES,DIA,MEDICO
> > > > > go
> > > > >
> > > > > create view a2
> > > > > as
> > > > > select
> > > > > AÑO,MES,DIA,MEDICO,
> > > > > sum(cnt) as a2
> > > > > from
> > > > > (
> > > > > SELECT
> > > > > AÑO,MES,DIA,MEDICO,AFILIADO,
> > > > > case when count(*) > 2 then count(*) - 2 else 0 end as cnt
> > > > > FROM RESUMEN1
> > > > > GROUP BY AÑO,MES,DIA,MEDICO,AFILIADO
> > > > > ) as t1
> > > > > group by
> > > > > AÑO,MES,DIA,MEDICO
> > > > > go
> > > > >
> > > > > select
> > > > > r.*, c.a2
> > > > > from
> > > > > med as r
> > > > > left outer join
> > > > > a2 as c
> > > > > ON R.AÑO=C.AÑO
> > > > > AND R.MES=C.MES
> > > > > AND R.DIA=C.DIA
> > > > > AND R.MEDICO = C.MEDICO
> > > > > go
> > > > >
> > > > > drop view med, a2
> > > > > go
> > > > >
> > > > > Para G4 y P15, necesito indagar un poco mas, porque si ejecutamos las
> > > > > siguientes sentencias sobre la data de ejemplo que posteastes, entonces:
> > > > >
> > > > > select AÑO, mes, dia, medico,substring(afiliado,1,9)as Grupo, sum(cantidad)
> > > > > as G4
> > > > > from resumen1
> > > > > group by AÑO, mes, dia, medico,substring(afiliado,1,9)
> > > > > having sum(cantidad) > 4
> > > > > go
> > > > >
> > > > > Resultado:
> > > > >
> > > > > AÑO mes dia medico Grupo G4
> > > > >
> > > > > 2005 12 1 10331 123456789 23
> > > > >
> > > > > No se porque dices que G4 = 0. Lo mismo pasa con P15.
> > > > >
> > > > >
> > > > > AMB
> > > > >
> > > > > "Fabián" wrote:
> > > > >
> > > > > > Alejandro,
> > > > > > > > P15 A2 G4
> > > > > > > > 0 6 0
> > > > > > Estos valores salen del control que hago a "mano",
> > > > > > A2 = 6
> > > > > > Significa que el mismo afiliado en el mismo día tuvo mas de 2 consultas.
> > > > > > Y en realidad sale del
> > > > > > select año,mes,dia,medico,afiliado, count(cantidad) cantidad from resumen1
> > > > > > group by año,mes,dia,medico,afiliado
> > > > > > 2005 12 1 10331 123456789012 4
> > > > > > 2005 12 1 10331 123456789013 6
> > > > > >
> > > > > > Es lo que quiero conseguir, pero no se como hacerlo.
> > > > > > En teoría es el select dia,medico,sum(cantidad)-2 as A2 from resumen1 group
> > > > > > by dia,medico having sum(cantidad) >4.
> > > > > >
> > > > > > G4=0
> > > > > > es el select dia,medico,substring(afiliado,1,9)as Grupo,sum(cantidad) as G4
> > > > > > from resumen1 group by dia,medico,substring(afiliado,1,9) having
> > > > > > sum(cantidad) >4
> > > > > > P15=0
> > > > > > es el select dia,medico,sum(cantidad) as P15 from resumen1 group by
> > > > > > dia,medico, having sum(cantidad) >15
> > > > > >
> > > > > >
> > > > > > "Alejandro Mesa" escribió:
> > > > > >
> > > > > > > Fabián,
> > > > > > >
> > > > > > > > Año Mes Medico Cantidad
> > > > > > > > 2005 12 10331 23
> > > > > > >
> > > > > > > Los datos previos se entienden. Ahora explicanos de donde salen los valores:
> > > > > > >
> > > > > > > > P15 A2 G4
> > > > > > > > 0 6 0
> > > > > > >
> > > > > > >
> > > > > > > AMB
> > > > > > >
> > > > > > > "Fabián" wrote:
> > > > > > >
> > > > > > > > Alejandro
> > > > > > > > Este es el script de creación de la tabla y la insercion de registros de
> > > > > > > > prueba
> > > > > > > > El resultado deseado es
> > > > > > > > Año Mes Medico Cantidad P15 A2 G4 Total
> > > > > > > > 2005 12 10331 23 0 6 0 17
> > > > > > > >
> > > > > > > >
> > > > > > > > CREATE TABLE [dbo].[RESUMEN1] (
> > > > > > > > [AÑO] [int] NULL ,
> > > > > > > > [MES] [int] NULL ,
> > > > > > > > [DIA] [int] NULL ,
> > > > > > > > [MEDICO] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > > > [AFILIADO] [varchar] (30) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > > > [PRACTICA] [varchar] (20) COLLATE SQL_Latin1_General_CP850_CI_AS NULL ,
> > > > > > > > [CANTIDAD] [int] NULL
> > > > > > > > ) ON [PRIMARY]
> > > > > > > > GO
> > > > > > > >
> > > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > > GO
> > > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > > (2005,12,1,'10331','123456789013',4)
> > > > > > > > GO
> > > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > > (2005,12,1,'10331','123456789013',11)
> > > > > > > > GO
> > > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > > GO
> > > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > > GO
> > > > > > > > INSERT INTO RESUMEN1 (AÑO,MES,DIA,MEDICO,AFILIADO,CANTIDAD) VALUES
> > > > > > > > (2005,12,1,'10331','123456789013',1)
> > > > > > > > GO
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida