AYUDA CON CONSULTA URGENTE

07/07/2004 - 20:51 por Ing. Bernardo Cordoba - Previmedic S.A. | Informe spam
necesito realizar un informe de cantidad de pacientes agrupados por IPS y
por Sexo en rangos de edad que pertenezcan a Cartagena (muncodigo='001' y
depcodigo='13')

Rango 1 => 0-7 años
Rango 2 => 8-14 años
Rango 3 => 15-44 años
Rango 4 => 45-59 años
Rango 5 => mayores a 59 años

//Para lo anterior creo una tabla temporal donde calculo la edad de los
pacientes, ademas coloco los campos que necesito.
select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
case
when month(afbfecnac) < month(getdate())
then
(year(getdate())-year(afbfecnac))
else
(year(getdate())-year(afbfecnac))-1
end as edad -- Calculo de la edad, teniendo en cuenta el mes
presente, asumo como error el dia.
into #beneficiarios
from afbenefi
where muncodigo='001' and depcodigo='13'

obteniendo este resultado
(32741 filas afectadas)

luego me toca hacer 5 consultas para los rangos de edad

select ips, sexo, count(sexo) as cantidad
from #beneficiarios
where edad between 15 and 44
group by sexo, ips
order by ips,sexo

ips sexo cantidad
0996 63
0996 F 1187
0996 M 623
1100100435 F 150
1100100435 M 32
1300101439 1
1300101439 F 3861
1300101439 M 1955
1609 F 2228
1609 M 944

(10 filas afectadas)

El problema esta en que toca hacer tantas consultas sean necesarias segun
los rangos de edades, ademas de esto el informe se debe presentar en el
siguiente informe ya que es para la actualizacion de una web.


IPS SEXO RANGO 1 RANGO 2 RANGO 3 RANGO 4 RANGO 5

Preguntas similare

Leer las respuestas

#1 Liliana Sorrentino
07/07/2004 - 21:21 | Informe spam
Hola Marcos,
Suponiendo que tenés entonces una función para calcular la edad, podrías
hacer por ejemplo:

SELECT ips, sexo, SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN
0
AND 7 THEN 1 END) as '0-7',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 8 AND
14 THEN 1 END) as '8-14',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 15 AND
44 THEN 1 END) as '15-44',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 45 AND
59 THEN 1 END) as '45-59',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) > 59 THEN 1 END) as '>
59'
FROM tabla
GROUP BY ips, sexo

Saludos... Liliana.


"Ing. Bernardo Cordoba - Previmedic S.A." escribió en
el mensaje news:
necesito realizar un informe de cantidad de pacientes agrupados por IPS y
por Sexo en rangos de edad que pertenezcan a Cartagena (muncodigo='001' y
depcodigo='13')

Rango 1 => 0-7 años
Rango 2 => 8-14 años
Rango 3 => 15-44 años
Rango 4 => 45-59 años
Rango 5 => mayores a 59 años

//Para lo anterior creo una tabla temporal donde calculo la edad de los
pacientes, ademas coloco los campos que necesito.
select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
case
when month(afbfecnac) < month(getdate())
then
(year(getdate())-year(afbfecnac))
else
(year(getdate())-year(afbfecnac))-1
end as edad -- Calculo de la edad, teniendo en cuenta el mes
presente, asumo como error el dia.
into #beneficiarios
from afbenefi
where muncodigo='001' and depcodigo='13'

obteniendo este resultado
(32741 filas afectadas)

luego me toca hacer 5 consultas para los rangos de edad

select ips, sexo, count(sexo) as cantidad
from #beneficiarios
where edad between 15 and 44
group by sexo, ips
order by ips,sexo

ips sexo cantidad
0996 63
0996 F 1187
0996 M 623
1100100435 F 150
1100100435 M 32
1300101439 1
1300101439 F 3861
1300101439 M 1955
1609 F 2228
1609 M 944

(10 filas afectadas)

El problema esta en que toca hacer tantas consultas sean necesarias segun
los rangos de edades, ademas de esto el informe se debe presentar en el
siguiente informe ya que es para la actualizacion de una web.


IPS SEXO RANGO 1 RANGO 2 RANGO 3 RANGO 4 RANGO 5



Respuesta Responder a este mensaje
#2 Ing. Bernardo Cordoba - Previmedic S.A.
08/07/2004 - 02:01 | Informe spam
Liliana, me parece bien esta consulta, de tanta vuelta que le di, alfin lo
realize utilizando case pero lo hago en la tabla temporal.

me suena la idea tuya de hacer una funcion para calcular la edad y asi
elimino tener que crear una tabla emporal, pero como hago esto? recuerda que
soy novato en transact sql.

te envio el codigo que hice para que me arrojara lo que necesito:

select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
case
when month(afbfecnac) < month(getdate())
then
(year(getdate())-year(afbfecnac))
else
(year(getdate())-year(afbfecnac))-1
end as edad
into #beneficiarios
from afbenefi
where muncodigo='001' and depcodigo='13'

select
A.ipsnombre,
COUNT(case when B.sexo='M' then case when B.edad between 0 and 7 then
B.sexo else null end else null end)as Rango1M,
COUNT(case when B.sexo='F' then case when B.edad between 0 and 7 then
B.sexo else null end else null end)as Rango1F,
COUNT(case when B.sexo='M' then case when B.edad between 8 and 14 then
B.sexo else null end else null end)as Rango2M,
COUNT(case when B.sexo='F' then case when B.edad between 8 and 14 then
B.sexo else null end else null end)as Rango2F,
COUNT(case when B.sexo='M' then case when B.edad between 15 and 44 then
B.sexo else null end else null end)as Rango3M,
COUNT(case when B.sexo='F' then case when B.edad between 15 and 44 then
B.sexo else null end else null end)as Rango3F,
COUNT(case when B.sexo='M' then case when B.edad between 45 and 59 then
B.sexo else null end else null end)as Rango4M,
COUNT(case when B.sexo='F' then case when B.edad between 45 and 59 then
B.sexo else null end else null end)as Rango4F,
COUNT(case when B.sexo='M' then case when B.edad >` then B.sexo else null
end else null end)as Rango5M,
COUNT(case when B.sexo='F' then case when B.edad >` then B.sexo else null
end else null end)as Rango5F,
COUNT(case when B.sexo NOT IN('F','M') then B.sexo else null end)as NOSEXO
from #beneficiarios as B, dbgenerales..geipsesp as A
where B.ips=A.ipscodigo
group by A.ipsnombre
order by A.ipsnombre


ips rango1 rango2
M | F M | F


"Liliana Sorrentino" escribió en el mensaje
news:
Hola Marcos,
Suponiendo que tenés entonces una función para calcular la edad, podrías
hacer por ejemplo:

SELECT ips, sexo, SUM(CASE WHEN calcularedad(nacimiento, getdate())


BETWEEN
0
AND 7 THEN 1 END) as '0-7',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 8 AND
14 THEN 1 END) as '8-14',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 15 AND
44 THEN 1 END) as '15-44',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 45 AND
59 THEN 1 END) as '45-59',
SUM(CASE WHEN calcularedad(nacimiento, getdate()) > 59 THEN 1 END) as '>
59'
FROM tabla
GROUP BY ips, sexo

Saludos... Liliana.


"Ing. Bernardo Cordoba - Previmedic S.A." escribió


en
el mensaje news:
> necesito realizar un informe de cantidad de pacientes agrupados por IPS


y
> por Sexo en rangos de edad que pertenezcan a Cartagena (muncodigo='001'


y
> depcodigo='13')
>
> Rango 1 => 0-7 años
> Rango 2 => 8-14 años
> Rango 3 => 15-44 años
> Rango 4 => 45-59 años
> Rango 5 => mayores a 59 años
>
> //Para lo anterior creo una tabla temporal donde calculo la edad de los
> pacientes, ademas coloco los campos que necesito.
> select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
> case
> when month(afbfecnac) < month(getdate())
> then
> (year(getdate())-year(afbfecnac))
> else
> (year(getdate())-year(afbfecnac))-1
> end as edad -- Calculo de la edad, teniendo en cuenta el mes
> presente, asumo como error el dia.
> into #beneficiarios
> from afbenefi
> where muncodigo='001' and depcodigo='13'
>
> obteniendo este resultado
> (32741 filas afectadas)
>
> luego me toca hacer 5 consultas para los rangos de edad
>
> select ips, sexo, count(sexo) as cantidad
> from #beneficiarios
> where edad between 15 and 44
> group by sexo, ips
> order by ips,sexo
>
> ips sexo cantidad
> 0996 63
> 0996 F 1187
> 0996 M 623
> 1100100435 F 150
> 1100100435 M 32
> 1300101439 1
> 1300101439 F 3861
> 1300101439 M 1955
> 1609 F 2228
> 1609 M 944
>
> (10 filas afectadas)
>
> El problema esta en que toca hacer tantas consultas sean necesarias


segun
> los rangos de edades, ademas de esto el informe se debe presentar en el
> siguiente informe ya que es para la actualizacion de una web.
>
>
> IPS SEXO RANGO 1 RANGO 2 RANGO 3 RANGO 4 RANGO 5
>
>
>


Respuesta Responder a este mensaje
#3 Liliana Sorrentino
08/07/2004 - 15:25 | Informe spam
Hola Bernardo,

La función para calcular edad va un poquito más en detalle que la que
preparaste.
Y después el query que la invoca, utilizando una tabla derivada en lugar de
la temporal.
No conozco la información ni el volumen de la misma, así que el control de
performance queda en tus manos.
Saludos... Liliana.

CREATE FUNCTION calcularedad (@fecha datetime, @getdate datetime) RETURNS
smallint
AS
BEGIN
DECLARE @edad smallint
SELECT @edad = CASE WHEN MONTH( @fecha) > MONTH( @getdate)) OR
MONTH( @fecha) = MONTH( @getdate) AND DAY( @fecha)
DAY(@getdate))


THEN YEAR( @getdate) - YEAR( @fecha) - 1
ELSE YEAR( @getdate) - YEAR( @fecha) END
RETURN @edad
END
GO

SELECT
ipsnombre,
COUNT(case when sexo='M' and edad between 0 and 7 then sexo else null
end) as Rango1M,
COUNT(case when sexo='F' and edad between 0 and 7 then sexo else null
end) as Rango1F,
COUNT(case when sexo='M' and edad between 8 and 14 then sexo else null
end) as Rango2M,
COUNT(case when sexo='F' and edad between 8 and 14 then sexo else null
end) as Rango2F,
COUNT(case when sexo='M' and edad between 15 and 44 then sexo else null
end) as Rango3M,
COUNT(case when sexo='F' and edad between 15 and 44 then sexo else null
end) as Rango3F,
COUNT(case when sexo='M' and edad between 45 and 59 then sexo else null
end) as Rango4M,
COUNT(case when sexo='F' and edad between 45 and 59 then sexo else null
end) as Rango4F,
COUNT(case when sexo='M' and edad >` then sexo else null end) as Rango5M,
COUNT(case when sexo='F' and edad >` then sexo else null end) as Rango5F,
COUNT(case when sexo NOT IN('F','M') then sexo else null end) as NOSEXO
FROM (SELECT ipsnombre, afbsexo as sexo, calcularedad(afbfecnac, getdate())
as edad
FROM afbenefi
WHERE muncodigo='001' and depcodigo='13') AS persona_edad
GROUP BY ipsnombre
ORDER BY ipsnombre



"Ing. Bernardo Cordoba - Previmedic S.A." escribió en
el mensaje news:
Liliana, me parece bien esta consulta, de tanta vuelta que le di, alfin lo
realize utilizando case pero lo hago en la tabla temporal.

me suena la idea tuya de hacer una funcion para calcular la edad y asi
elimino tener que crear una tabla emporal, pero como hago esto? recuerda


que
soy novato en transact sql.

te envio el codigo que hice para que me arrojara lo que necesito:

select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
case
when month(afbfecnac) < month(getdate())
then
(year(getdate())-year(afbfecnac))
else
(year(getdate())-year(afbfecnac))-1
end as edad
into #beneficiarios
from afbenefi
where muncodigo='001' and depcodigo='13'

select
A.ipsnombre,
COUNT(case when B.sexo='M' then case when B.edad between 0 and 7 then
B.sexo else null end else null end)as Rango1M,
COUNT(case when B.sexo='F' then case when B.edad between 0 and 7 then
B.sexo else null end else null end)as Rango1F,
COUNT(case when B.sexo='M' then case when B.edad between 8 and 14 then
B.sexo else null end else null end)as Rango2M,
COUNT(case when B.sexo='F' then case when B.edad between 8 and 14 then
B.sexo else null end else null end)as Rango2F,
COUNT(case when B.sexo='M' then case when B.edad between 15 and 44 then
B.sexo else null end else null end)as Rango3M,
COUNT(case when B.sexo='F' then case when B.edad between 15 and 44 then
B.sexo else null end else null end)as Rango3F,
COUNT(case when B.sexo='M' then case when B.edad between 45 and 59 then
B.sexo else null end else null end)as Rango4M,
COUNT(case when B.sexo='F' then case when B.edad between 45 and 59 then
B.sexo else null end else null end)as Rango4F,
COUNT(case when B.sexo='M' then case when B.edad >` then B.sexo else


null
end else null end)as Rango5M,
COUNT(case when B.sexo='F' then case when B.edad >` then B.sexo else


null
end else null end)as Rango5F,
COUNT(case when B.sexo NOT IN('F','M') then B.sexo else null end)as


NOSEXO
from #beneficiarios as B, dbgenerales..geipsesp as A
where B.ips=A.ipscodigo
group by A.ipsnombre
order by A.ipsnombre


ips rango1 rango2
M | F M | F


"Liliana Sorrentino" escribió en el


mensaje
news:
> Hola Marcos,
> Suponiendo que tenés entonces una función para calcular la edad, podrías
> hacer por ejemplo:
>
> SELECT ips, sexo, SUM(CASE WHEN calcularedad(nacimiento, getdate())
BETWEEN
> 0
> AND 7 THEN 1 END) as '0-7',
> SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 8 AND
> 14 THEN 1 END) as '8-14',
> SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 15 AND
> 44 THEN 1 END) as '15-44',
> SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 45 AND
> 59 THEN 1 END) as '45-59',
> SUM(CASE WHEN calcularedad(nacimiento, getdate()) > 59 THEN 1 END) as


'>
> 59'
> FROM tabla
> GROUP BY ips, sexo
>
> Saludos... Liliana.
>
>
> "Ing. Bernardo Cordoba - Previmedic S.A."


escribió
en
> el mensaje news:
> > necesito realizar un informe de cantidad de pacientes agrupados por


IPS
y
> > por Sexo en rangos de edad que pertenezcan a Cartagena


(muncodigo='001'
y
> > depcodigo='13')
> >
> > Rango 1 => 0-7 años
> > Rango 2 => 8-14 años
> > Rango 3 => 15-44 años
> > Rango 4 => 45-59 años
> > Rango 5 => mayores a 59 años
> >
> > //Para lo anterior creo una tabla temporal donde calculo la edad de


los
> > pacientes, ademas coloco los campos que necesito.
> > select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
> > case
> > when month(afbfecnac) < month(getdate())
> > then
> > (year(getdate())-year(afbfecnac))
> > else
> > (year(getdate())-year(afbfecnac))-1
> > end as edad -- Calculo de la edad, teniendo en cuenta el mes
> > presente, asumo como error el dia.
> > into #beneficiarios
> > from afbenefi
> > where muncodigo='001' and depcodigo='13'
> >
> > obteniendo este resultado
> > (32741 filas afectadas)
> >
> > luego me toca hacer 5 consultas para los rangos de edad
> >
> > select ips, sexo, count(sexo) as cantidad
> > from #beneficiarios
> > where edad between 15 and 44
> > group by sexo, ips
> > order by ips,sexo
> >
> > ips sexo cantidad
> > 0996 63
> > 0996 F 1187
> > 0996 M 623
> > 1100100435 F 150
> > 1100100435 M 32
> > 1300101439 1
> > 1300101439 F 3861
> > 1300101439 M 1955
> > 1609 F 2228
> > 1609 M 944
> >
> > (10 filas afectadas)
> >
> > El problema esta en que toca hacer tantas consultas sean necesarias
segun
> > los rangos de edades, ademas de esto el informe se debe presentar en


el
> > siguiente informe ya que es para la actualizacion de una web.
> >
> >
> > IPS SEXO RANGO 1 RANGO 2 RANGO 3 RANGO 4 RANGO 5
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Ing. Bernardo Cordoba - Previmedic S.A.
08/07/2004 - 17:07 | Informe spam
Liliana nuevamente muchas gracias, el lunes proximo intentare la consulta
con tu ayuda y la funcion que me enviastes ya que debo viajar hacia otra
ciudad para implementar un nuevo sistema de informacion en una sucursal de
la compañia.

Nos estamos hablando.

Me gustaria sbaer mas de ti..

Ing. Bernardo Cordoba
Previmedic S.A.
cartagena, Colombia

"Liliana Sorrentino" escribió en el mensaje
news:
Hola Bernardo,

La función para calcular edad va un poquito más en detalle que la que
preparaste.
Y después el query que la invoca, utilizando una tabla derivada en lugar


de
la temporal.
No conozco la información ni el volumen de la misma, así que el control de
performance queda en tus manos.
Saludos... Liliana.

CREATE FUNCTION calcularedad (@fecha datetime, @getdate datetime) RETURNS
smallint
AS
BEGIN
DECLARE @edad smallint
SELECT @edad = CASE WHEN MONTH( @fecha) > MONTH( @getdate)) OR
MONTH( @fecha) = MONTH( @getdate) AND DAY(


@fecha)
> DAY(@getdate))
THEN YEAR( @getdate) - YEAR( @fecha) - 1
ELSE YEAR( @getdate) - YEAR( @fecha) END
RETURN @edad
END
GO

SELECT
ipsnombre,
COUNT(case when sexo='M' and edad between 0 and 7 then sexo else null
end) as Rango1M,
COUNT(case when sexo='F' and edad between 0 and 7 then sexo else null
end) as Rango1F,
COUNT(case when sexo='M' and edad between 8 and 14 then sexo else null
end) as Rango2M,
COUNT(case when sexo='F' and edad between 8 and 14 then sexo else null
end) as Rango2F,
COUNT(case when sexo='M' and edad between 15 and 44 then sexo else null
end) as Rango3M,
COUNT(case when sexo='F' and edad between 15 and 44 then sexo else null
end) as Rango3F,
COUNT(case when sexo='M' and edad between 45 and 59 then sexo else null
end) as Rango4M,
COUNT(case when sexo='F' and edad between 45 and 59 then sexo else null
end) as Rango4F,
COUNT(case when sexo='M' and edad >` then sexo else null end) as


Rango5M,
COUNT(case when sexo='F' and edad >` then sexo else null end) as


Rango5F,
COUNT(case when sexo NOT IN('F','M') then sexo else null end) as NOSEXO
FROM (SELECT ipsnombre, afbsexo as sexo, calcularedad(afbfecnac,


getdate())
as edad
FROM afbenefi
WHERE muncodigo='001' and depcodigo='13') AS persona_edad
GROUP BY ipsnombre
ORDER BY ipsnombre



"Ing. Bernardo Cordoba - Previmedic S.A." escribió


en
el mensaje news:
> Liliana, me parece bien esta consulta, de tanta vuelta que le di, alfin


lo
> realize utilizando case pero lo hago en la tabla temporal.
>
> me suena la idea tuya de hacer una funcion para calcular la edad y asi
> elimino tener que crear una tabla emporal, pero como hago esto? recuerda
que
> soy novato en transact sql.
>
> te envio el codigo que hice para que me arrojara lo que necesito:
>
> select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
> case
> when month(afbfecnac) < month(getdate())
> then
> (year(getdate())-year(afbfecnac))
> else
> (year(getdate())-year(afbfecnac))-1
> end as edad
> into #beneficiarios
> from afbenefi
> where muncodigo='001' and depcodigo='13'
>
> select
> A.ipsnombre,
> COUNT(case when B.sexo='M' then case when B.edad between 0 and 7 then
> B.sexo else null end else null end)as Rango1M,
> COUNT(case when B.sexo='F' then case when B.edad between 0 and 7 then
> B.sexo else null end else null end)as Rango1F,
> COUNT(case when B.sexo='M' then case when B.edad between 8 and 14 then
> B.sexo else null end else null end)as Rango2M,
> COUNT(case when B.sexo='F' then case when B.edad between 8 and 14 then
> B.sexo else null end else null end)as Rango2F,
> COUNT(case when B.sexo='M' then case when B.edad between 15 and 44 then
> B.sexo else null end else null end)as Rango3M,
> COUNT(case when B.sexo='F' then case when B.edad between 15 and 44 then
> B.sexo else null end else null end)as Rango3F,
> COUNT(case when B.sexo='M' then case when B.edad between 45 and 59 then
> B.sexo else null end else null end)as Rango4M,
> COUNT(case when B.sexo='F' then case when B.edad between 45 and 59 then
> B.sexo else null end else null end)as Rango4F,
> COUNT(case when B.sexo='M' then case when B.edad >` then B.sexo else
null
> end else null end)as Rango5M,
> COUNT(case when B.sexo='F' then case when B.edad >` then B.sexo else
null
> end else null end)as Rango5F,
> COUNT(case when B.sexo NOT IN('F','M') then B.sexo else null end)as
NOSEXO
> from #beneficiarios as B, dbgenerales..geipsesp as A
> where B.ips=A.ipscodigo
> group by A.ipsnombre
> order by A.ipsnombre
>
>
> ips rango1 rango2
> M | F M | F
>
>
> "Liliana Sorrentino" escribió en el
mensaje
> news:
> > Hola Marcos,
> > Suponiendo que tenés entonces una función para calcular la edad,


podrías
> > hacer por ejemplo:
> >
> > SELECT ips, sexo, SUM(CASE WHEN calcularedad(nacimiento, getdate())
> BETWEEN
> > 0
> > AND 7 THEN 1 END) as '0-7',
> > SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 8 AND
> > 14 THEN 1 END) as '8-14',
> > SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 15 AND
> > 44 THEN 1 END) as '15-44',
> > SUM(CASE WHEN calcularedad(nacimiento, getdate()) BETWEEN 45 AND
> > 59 THEN 1 END) as '45-59',
> > SUM(CASE WHEN calcularedad(nacimiento, getdate()) > 59 THEN 1 END) as
'>
> > 59'
> > FROM tabla
> > GROUP BY ips, sexo
> >
> > Saludos... Liliana.
> >
> >
> > "Ing. Bernardo Cordoba - Previmedic S.A."
escribió
> en
> > el mensaje news:
> > > necesito realizar un informe de cantidad de pacientes agrupados por
IPS
> y
> > > por Sexo en rangos de edad que pertenezcan a Cartagena
(muncodigo='001'
> y
> > > depcodigo='13')
> > >
> > > Rango 1 => 0-7 años
> > > Rango 2 => 8-14 años
> > > Rango 3 => 15-44 años
> > > Rango 4 => 45-59 años
> > > Rango 5 => mayores a 59 años
> > >
> > > //Para lo anterior creo una tabla temporal donde calculo la edad de
los
> > > pacientes, ademas coloco los campos que necesito.
> > > select ipscodigo as ips, afbsexo as sexo, afbfecnac as fechanac,
> > > case
> > > when month(afbfecnac) < month(getdate())
> > > then
> > > (year(getdate())-year(afbfecnac))
> > > else
> > > (year(getdate())-year(afbfecnac))-1
> > > end as edad -- Calculo de la edad, teniendo en cuenta el


mes
> > > presente, asumo como error el dia.
> > > into #beneficiarios
> > > from afbenefi
> > > where muncodigo='001' and depcodigo='13'
> > >
> > > obteniendo este resultado
> > > (32741 filas afectadas)
> > >
> > > luego me toca hacer 5 consultas para los rangos de edad
> > >
> > > select ips, sexo, count(sexo) as cantidad
> > > from #beneficiarios
> > > where edad between 15 and 44
> > > group by sexo, ips
> > > order by ips,sexo
> > >
> > > ips sexo cantidad
> > > 0996 63
> > > 0996 F 1187
> > > 0996 M 623
> > > 1100100435 F 150
> > > 1100100435 M 32
> > > 1300101439 1
> > > 1300101439 F 3861
> > > 1300101439 M 1955
> > > 1609 F 2228
> > > 1609 M 944
> > >
> > > (10 filas afectadas)
> > >
> > > El problema esta en que toca hacer tantas consultas sean necesarias
> segun
> > > los rangos de edades, ademas de esto el informe se debe presentar en
el
> > > siguiente informe ya que es para la actualizacion de una web.
> > >
> > >
> > > IPS SEXO RANGO 1 RANGO 2 RANGO 3 RANGO 4 RANGO 5
> > >
> > >
> > >
> >
> >
>
>


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