FORUM PER UTENTI MILLEWIN
Attenzione !
Per intervenire sul forum è necessario essere registrati e connessi.

L'Amministratore

****************************************************
“Se tu hai una mela ed io ho una mela, e ce la scambiamo, alla fine tu ed io avremo sempre una mela ciascuno.
Ma se tu hai un’idea ed io ho un’idea, e ce la scambiamo, allora avremo entrambi due idee”.

George Bernard Shaw
****************************************************

Elenco pazienti per fasce di età

Andare in basso

Elenco pazienti per fasce di età

Messaggio  madelbi il Ven 9 Dic 2011 - 16:09

Per una ricognizione a livello regionale sui pazienti diabetici mi servirebbe un'estrazione di pazienti cosìfatta



sessofascia etaanno200320062010
Fetà 0-14 aa
Fetà 15-19 aa
Fetà 20-24 aa
Fetà 25-29 aa
Fetà 30-34 aa
Fetà 35-39 aa
Fetà 40-44 aa
Fetà 45-49 aa
Fetà 50-54 aa
Fetà 55-59 aa
Fetà 60-64 aa
Fetà 65-69 aa
Fetà 70-74 aa
Fetà 75-79 aa
Fetà 80-84 aa
Fetà 85-89 aa
Fetà 90-94 aa
Fetà 95-99 aa
Fetà > 100 aa
Metà 0-14 aa
Metà 15-19 aa
Metà 20-24 aa
Metà 25-29 aa
Metà 30-34 aa
Metà 35-39 aa
Metà 40-44 aa
Metà 45-49 aa
Metà 50-54 aa
Metà 55-59 aa
Metà 60-64 aa
Metà 65-69 aa
Metà 70-74 aa
Metà 75-79 aa
Metà 80-84 aa
Metà 85-89 aa
Metà 90-94 aa
Metà 95-99 aa
Metà > 100 aa
TOTALE000
l'estrazione riguarda il totale dei pazienti, non solo i diabetici
Qualcuno degli esimi esperti di SQL mi può aiutare??

Grazie anticipatamente

_________________
Marco Delbianco - MMG Pesaro
madelbi
madelbi
Moderatore
Moderatore

Messaggi : 355
Punti : 3414
Voti per importanza dei messaggi : 68
Data d'iscrizione : 21.02.11
Località : Pesaro

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  Lucio Mignone il Ven 9 Dic 2011 - 18:14

madelbi ha scritto:Per una ricognizione a livello regionale sui pazienti diabetici mi servirebbe un'estrazione di pazienti cosìfatta

......
l'estrazione riguarda il totale dei pazienti, non solo i diabetici
Qualcuno degli esimi esperti di SQL mi può aiutare??

Grazie anticipatamente

Scusa Marco ma dovresti indicare da quale anno parte la ricognizione..
Lucio Mignone
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3744
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 55
Località : CAVRIGLIA (AR)

Visualizza il profilo http://comeva.altervista.org/

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  madelbi il Ven 9 Dic 2011 - 18:19

La ricognizione è relativa al 2003, al 2006 e al 2010

_________________
Marco Delbianco - MMG Pesaro
madelbi
madelbi
Moderatore
Moderatore

Messaggi : 355
Punti : 3414
Voti per importanza dei messaggi : 68
Data d'iscrizione : 21.02.11
Località : Pesaro

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  Cervino il Sab 10 Dic 2011 - 9:18

Il database di MW non è strutturato in maniera idonea, forse opportunamente, per estrazioni di dati di tipo burocrato-amministrativo ;
è problematico anche per software ad hoc predisposti, usati dalla Regione e dalle ASL, rispondere esaurientemente ad una simile richiesta,
per una lunga serie di motivi .
Nel mio Mille.db il campo : data di scelta del medico da parte del paziente , è assente in oltre il 50 % dei casi ;
comunque tanto per provare, si potrebbe tentare con una query del tipo :


Select Cast( ' F eta 0-14 anni ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 0 And 14 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01'))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 0 And 14 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01'))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 0 And 14 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01')
UNION
Select Cast( ' F eta 15-19 anni ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 15 And 19 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01'))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 15 And 19 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01'))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 15 And 19 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )
UNION
Select Cast( ' F eta 20-24 anni ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 20 And 24 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01'))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 20 And 24 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01'))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 20 And 24 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )

UNION
Select Cast( ' F Totale ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 0 And 120 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01' ))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 0 And 120 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01' ))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 0 And 120 And sesso = 'F' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )

UNION
Select Cast( ' M eta 0-14 anni ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 0 And 14 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01' ))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 0 And 14 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01' ))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 0 And 14 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )
UNION
Select Cast( ' M eta 15-19 anni ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 15 And 19 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S'))And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01' ))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 15 And 19 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S'))And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01' ))
_2006,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 15 And 19 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S'))And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )
UNION
Select Cast( ' M eta 20-24 anni ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 20 And 24 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S'))And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01' ))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 20 And 24 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01' ))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 20 And 24 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '200-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )

UNION
Select Cast( ' M Totale ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 0 And 120 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01' ))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 0 And 120 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01' ))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 0 And 120 And sesso = 'M' And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01' )
UNION
Select Cast( ' Paz Totale ' As Char(22)) As fascia_eta,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2003 - Year ( nascita ) Between 0 And 120 And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2003-12-31' Or ( pa_drevoca Between '2003-01-01'
And '2003-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2003-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2004-01-01'))
_2003_,
(Select Count ( p.codice) From pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2006 - Year ( nascita ) Between 0 And 120 And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2006-12-31' Or ( pa_drevoca Between '2006-01-01'
And '2006-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2006-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2007-01-01'))
_2006_,
Count ( p.codice) As _2010_
FROM pazienti p Inner Join nos_002 n On p.codice = n.codice
Where 2010 - Year ( nascita ) Between 0 And 120 And pa_convenzione = 'S'
And ( pa_drevoca Is Null Or pa_drevoca > '2010-12-31' Or ( pa_drevoca Between '2010-01-01'
And '2010-12-31' And motivo_revoca = 'S')) And (p.decesso Is Null Or p.decesso > '2010-12-31' )
And ( pa_dscelta Is Null Or pa_dscelta < '2011-01-01')
Order By 1


Se il set estratto dovesse risultare accettabile, dopo aver adattato la query alla propria situazione locale, basta ovviamente continuare il lavoro di copia ed incolla ( da UNION a ... UNION ) con parcellari modifiche delle clausole, per analizzare tutte le fascie d' età ( salendo con gli anni l' attendibilità dei dati dovrebbe forse migliorare ) .
Oltre una certa lunghezza, la query comunque si dovrebbe bloccare; in tal caso basta dividerla in due parti .

Un saluto da Sergio Tomasini , Orzivecchi (BS)

Cervino
Membro Junior
Membro Junior

Messaggi : 235
Punti : 3200
Voti per importanza dei messaggi : 19
Data d'iscrizione : 03.03.11
Età : 64
Località : Orzivecchi (BS)

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  draleo83 il Sab 10 Dic 2011 - 20:38

madelbi ha scritto:La ricognizione è relativa al 2003, al 2006 e al 2010

Della serie: se son facili, non le vogliamo. Caro Marco, vuoi vederci morti ?

A parte gli scherzi, credo che estrarre tutto quanto richiesto , utilizzando una sola query e solo l’SQL di Mille utilità (alquanto misero) sia così arduo da perderci la testa e il sonno per svariate notti. Comunque ne verrebbe fuori una tale schifezza informatica, che non ne vale proprio la pena. Il vero SQL avrebbe gli strumenti per evitare tali porcherie, ma purtroppo non ci è permesso usarli

Allora per non faticare troppo (ed anche per un minimo senso estetico), ecco una query che estrae tutti i dati da te richiesti (ma relativamente ad un solo anno: 2010). Per estenderla agli altri anni, dovrai semplicemente ripeterla più volte ,cambiando l’anno scritto nella prima riga della query.Ogni volta salva il relativo tabulato in un file excel.Infine, per riassumere i dati dei vari files così ottenuti in un solo report, usa il copia –incolla. In pochi minuti avrai i dati disposti nel modo da te voluto . L' età dei paz viene calcolata al 31 Dicembre dell'anno considerato

------------------------------------------------------------------------------------------------------------------------

select 2010 /* <<<<<da cambiare*/ as anno,
number(*) as Gruppo,
'Da ' + string((DATEDIFF ( year,p.nascita,CONVERT(varchar,string(anno,'/','12','/','31') , 103))/5) * 5)
+ ' a ' + string( ( ( (DATEDIFF ( year,p.nascita,CONVERT(varchar,string(anno,'/','12','/','31') , 103))/ 5) + 1 ) * 5) - 1 )
+ ' anni' as Fascia_eta,count((DATEDIFF ( year,p.nascita,CONVERT(varchar,string(anno,'/','12','/','31') , 103)) / 5)) quanti,p.sesso sesso
from pazienti p, nos_002 nos
WHERE nos.pa_medi='KGDKDC5' /* <<<<<da cambiare*/
and p.codice=nos.codice
and (nos.pa_dscelta IS null Or YEAR(nos.pa_dscelta)<=anno)
AND p.codice NOT IN
(select nos.codice FROM nos_002 nos WHERE (YEAR(nos. pa_drevoca)<=anno ))
group by p.sesso,(DATEDIFF ( year,p.nascita,CONVERT(varchar,string(anno,'/','12','/','31') , 103)) / 5), fascia_eta
order by 5,2

-----------------------------------------------------------------------------------------------

Per quanto riguarda i totali delle varie annate non sarebbe necessario l’uso dell’SQL: infatti basta andare in mille Utilità-movimento paz e puoi averli facilmente oppure -ancora meglio- puoi utilizzare il comodo pulsante di excel “somma automatica”: lo disponi sotto i dati dei quali vuoi il totale, ed ecco i totali senza scervellarsi troppo. Se però tu fossi masochista e volessi utilizzare a tutti i costi l’SQL , beccati questa porcheria:

-----------------------------------------------------------------------------------------------------------------

SELECT 2010 /* <<<<<da cambiare*/ as anno,

count (nos.codice) as attivi from NOS_002 nos

Where nos. pa_medi= 'KGDKDC5' /* <<<<<da cambiare*/ and

(nos.pa_dscelta IS null Or YEAR(nos.pa_dscelta)<=anno)

AND nos. codice NOT IN

(select codice FROM NOS_002 WHERE (YEAR(pa_drevoca)<=anno))

UNION

SELECT 2009 /* <<<<<da cambiare*/ as anno,

count (nos.codice) as attivi from NOS_002 nos

Where nos. pa_medi= 'KGDKDC5' /* <<<<<da cambiare*/ and

(nos.pa_dscelta IS null Or YEAR(nos.pa_dscelta)<=anno)

AND nos. codice NOT IN

(select codice FROM NOS_002 WHERE (YEAR(pa_drevoca)<=anno))

UNION

SELECT 2008 /* <<<<<da cambiare*/ as anno,

count (nos.codice) as attivi from NOS_002 nos

Where nos. pa_medi= 'KGDKDC5' /* <<<<<da cambiare*/ and

(nos.pa_dscelta IS null Or YEAR(nos.pa_dscelta)<=anno)

AND nos. codice NOT IN

(select codice FROM NOS_002 WHERE (YEAR(pa_drevoca)<=anno))

UNION

SELECT 2011 /* <<<<<da cambiare*/ as anno,

count (nos.codice) as attivi from NOS_002 nos

Where nos. pa_medi= 'KGDKDC5' /* <<<<<da cambiare*/ and

(nos.pa_dscelta IS null Or YEAR(nos.pa_dscelta)<=anno)

AND nos. codice NOT IN

(select codice FROM NOS_002 WHERE (YEAR(pa_drevoca)<=anno))

order by 1



ciao

draleo

PS: Entrambi le query presuppongono che per i deceduti sia compilato anche il campo data revoca (altrimenti i conti non ritornano); Inoltre poichè io ho in archivio solo i paz del SSN non ho inserito la clausola che esclude i paz di libera professione. Ma è semplice aggiungerla , come quella che esclude i deceduti
draleo83
draleo83
Membro Junior
Membro Junior

Messaggi : 217
Punti : 3228
Voti per importanza dei messaggi : 24
Data d'iscrizione : 21.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  madelbi il Dom 11 Dic 2011 - 8:41

L'idea di fare un calcolo così assurdo non è stata mia, ovviamente, ma di una docente universitaria (e non dico di più) che richiede tali dati senza dare indicazione su come estrarli dal db. Alla mia richiesta di delucidazioni ha suggerito questa metodologia "Per prima cosa da milleutilità stampare la lista pz ed inserire l'intervallo di tempo di osservazione. Salvato il file in excel e elaborarlo inserendo una colonna 01.01.2006. Facendo la differenza tra questa colonna con la data di nascita ho ricavato l'età del pz nel momento di osservazione. Poi la divisione in fasce non è difficile"

Non trovato il procedimento convincente per cui mi sono permesso di ricorrere al forum e vi ringrazio della celere ed articolata risposta...sicuramente più performante della procedura "universitaria"

Grazie a Sergio e Leo!!!

_________________
Marco Delbianco - MMG Pesaro
madelbi
madelbi
Moderatore
Moderatore

Messaggi : 355
Punti : 3414
Voti per importanza dei messaggi : 68
Data d'iscrizione : 21.02.11
Località : Pesaro

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  draleo83 il Dom 11 Dic 2011 - 10:51

madelbi ha scritto:L'idea di fare un calcolo così assurdo non è stata mia, ovviamente, ma di una docente universitaria (e non dico di più) che richiede tali dati senza dare indicazione su come estrarli dal db. Alla mia richiesta di delucidazioni ha suggerito questa metodologia "Per prima cosa da milleutilità stampare la lista pz ed inserire l'intervallo di tempo di osservazione. Salvato il file in excel e elaborarlo inserendo una colonna 01.01.2006. Facendo la differenza tra questa colonna con la data di nascita ho ricavato l'età del pz nel momento di osservazione. Poi la divisione in fasce non è difficile"

Non trovato il procedimento convincente per cui mi sono permesso di ricorrere al forum e vi ringrazio della celere ed articolata risposta...sicuramente più performante della procedura "universitaria"

Grazie a Sergio e Leo!!!

Comunque l'idea del "docente universitario" non è proprio da scartare (anzi...ad averci pensato prima, si potevano evitare tutte queste menate. Comunque saranno almeno servite come utili... esercizi sull'SQL)

E' proprio vero il principio scientifico del Rasoio di ....(qualche scienziato di cui non ricordo il nome):

"A parità di condizioni, la soluzione più semplice è quella che ha più probabilità di essere giusta"

Leonardo
draleo83
draleo83
Membro Junior
Membro Junior

Messaggi : 217
Punti : 3228
Voti per importanza dei messaggi : 24
Data d'iscrizione : 21.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  madelbi il Dom 11 Dic 2011 - 16:26

Il Rasoio era quello di OCCAM (Novacula Occami)« A parità di fattori la spiegazione più semplice è da preferire »
(Guglielmo di Occam) ripreso da Duns Scoto (filosofia Scolastica medievale)
« Entia non sunt multiplicanda praeter necessitatem. »
« Pluralitas non est ponenda sine necessitate. »

« Frustra fit per plura quod fieri potest per pauciora. »

Ottimo, Leo il riferimento alla scienza del passato che nonostante l'attuale ubriacatura di tecnologia non è affatto rimasta obsoleta...di cultori giammai è orba!!

_________________
Marco Delbianco - MMG Pesaro
madelbi
madelbi
Moderatore
Moderatore

Messaggi : 355
Punti : 3414
Voti per importanza dei messaggi : 68
Data d'iscrizione : 21.02.11
Località : Pesaro

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  draleo83 il Dom 11 Dic 2011 - 20:12

madelbi ha scritto:
Il Rasoio era quello di OCCAM (Novacula Occami)« A parità di fattori la spiegazione più semplice è da preferire »
(Guglielmo di Occam) ripreso da Duns Scoto (filosofia Scolastica medievale)
« Entia non sunt multiplicanda praeter necessitatem. »
« Pluralitas non est ponenda sine necessitate. »

« Frustra fit per plura quod fieri potest per pauciora. »

Ottimo, Leo il riferimento alla scienza del passato che nonostante l'attuale ubriacatura di tecnologia non è affatto rimasta obsoleta...di cultori giammai è orba!!

Come è erudito Lei!

Ricordavo tale citazione , ma ero convinto che si trattasse di un vero principio scientifico, non filosofico

Comunque è sempre attuale: le soluzioni semplici (che è diverso da semplicistiche), spesso, sono anche le più efficaci

Bisognerebbe sempre pensarci

ciao

leonardo
draleo83
draleo83
Membro Junior
Membro Junior

Messaggi : 217
Punti : 3228
Voti per importanza dei messaggi : 24
Data d'iscrizione : 21.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  draleo83 il Sab 31 Dic 2011 - 11:26

draleo83 ha scritto:

Per quanto riguarda i totali delle varie annate non sarebbe necessario l’uso dell’SQL: infatti basta andare in mille Utilità-movimento paz e puoi averli facilmente oppure -ancora meglio- puoi utilizzare il comodo pulsante di excel “somma automatica”: lo disponi sotto i dati dei quali vuoi il totale, ed ecco i totali senza scervellarsi troppo. Se però tu fossi masochista e volessi utilizzare a tutti i costi l’SQL , beccati questa porcheria:

ecc ecc ecc





Rimedio alla precedente schifezza informatica scritta dal sottoscritto.La seguente estrae il num dei paz attivi, anno per anno, dal 2000 in avanti. Quindi ottiene gli stessi risultati della precedente, ma ,è molto più compatta e, stavolta, sembra una decente query sql; al contrario della precedente che era una vera porcheria (anche se otteneva gli stessi risultati)

Select distinct Year (data_open) anno,
(SELECT count (nos.codice) as attivi
from NOS_002 nos
where
nos. pa_medi= 'XXXXXXX' /* <<<<<da cambiare*/
AND (nos.pa_dscelta IS null Or YEAR(nos.pa_dscelta)<=anno)
AND nos. codice NOT IN
(select codice FROM NOS_002 WHERE (YEAR(pa_drevoca)<=anno)))
from NOS_002
Where anno >= 2000
Group by data_open
order by 1
draleo83
draleo83
Membro Junior
Membro Junior

Messaggi : 217
Punti : 3228
Voti per importanza dei messaggi : 24
Data d'iscrizione : 21.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Elenco pazienti per fasce di età

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum