EX FUMATORI
3 partecipanti
Pagina 1 di 1
EX FUMATORI
Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
grazie
Alessandro Monachino
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Re: EX FUMATORI
Forse può esserti utile la seguente:alex ha scritto:Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
Select distinct p.cognome, p.nome, p.nascita, Years(p.nascita, Today()) eta, p.sesso,a.ac_val valore_fumo,
CAST((case a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro'
END) as char(31)) Tipo_fumatore
FROM pazienti p , cart_pazpbl b, cart_accert a, nos_002 n
Where p.codice = b.codice And b.codice = a.codice And a.codice=n.codice
AND a.ac_des like 'FUMO'
AND decesso is null
AND (n.Pa_Drevoca is null OR n.Pa_Drevoca>TODAY())
AND n.Pa_medi like '%' /*INSERIRE PRIMA DEL PERCENTO UNA PARTE INIZIALE DEL CODICE MEDICO*/
Order by 6,1,2
Re: EX FUMATORI
Prima di tutto scusa ma non ho pensato che uso postgres e non so se la query va bene ugualmente. Ottengo comunque questo messaggio:Admin ha scritto:Forse può esserti utile la seguente:alex ha scritto:Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
Select distinct p.cognome, p.nome, p.nascita, Years(p.nascita, Today()) eta, p.sesso,a.ac_val valore_fumo,
CAST((case a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro'
END) as char(31)) Tipo_fumatore
FROM pazienti p , cart_pazpbl b, cart_accert a, nos_002 n
Where p.codice = b.codice And b.codice = a.codice And a.codice=n.codice
AND a.ac_des like 'FUMO'
AND decesso is null
AND (n.Pa_Drevoca is null OR n.Pa_Drevoca>TODAY())
AND n.Pa_medi like '%' /*INSERIRE PRIMA DEL PERCENTO UNA PARTE INIZIALE DEL CODICE MEDICO*/
Order by 6,1,2
errore sql,
sqlstate=42601
errore: errore di sintassi a o presso"%"
forse sbaglio a inserire "una parte iniziale del codice medico"?
grazie
Alessandro Monachino
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Re: EX FUMATORI
Se sei in postazione singola non devi inserire niente, invece in gruppo si. Ad esempio AND n.Pa_medi like '43%' Attenzione a tenere gli apici e %. Funziona anche con postgres.alex ha scritto:Prima di tutto scusa ma non ho pensato che uso postgres e non so se la query va bene ugualmente. Ottengo comunque questo messaggio:Admin ha scritto:Forse può esserti utile la seguente:alex ha scritto:Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
Select distinct p.cognome, p.nome, p.nascita, Years(p.nascita, Today()) eta, p.sesso,a.ac_val valore_fumo,
CAST((case a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro'
END) as char(31)) Tipo_fumatore
FROM pazienti p , cart_pazpbl b, cart_accert a, nos_002 n
Where p.codice = b.codice And b.codice = a.codice And a.codice=n.codice
AND a.ac_des like 'FUMO'
AND decesso is null
AND (n.Pa_Drevoca is null OR n.Pa_Drevoca>TODAY())
AND n.Pa_medi like '%' /*INSERIRE PRIMA DEL PERCENTO UNA PARTE INIZIALE DEL CODICE MEDICO*/
Order by 6,1,2
errore sql,
sqlstate=42601
errore: errore di sintassi a o presso"%"
forse sbaglio a inserire "una parte iniziale del codice medico"?
grazie
Alessandro Monachino
Re: EX FUMATORI
In PostgreSQL , bisogna utilizzare una diversa funzione x l' età :
Select distinct p.cognome , p.nome , p.nascita , Days( p.nascita , Today() )*24/8766 As eta , p.sesso , a.ac_val As valore_fumo,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM pazienti p , cart_pazpbl b , cart_accert a , nos_002 n
WHERE p.codice = b.codice AND b.codice = a.codice AND a.codice=n.codice
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today() And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
AND p.decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca>Today())
AND n.pa_medi LIKE '%'
ORDER BY 7 , 1 , 2
Saluti , Sergio , Orzivecchi BS
Select distinct p.cognome , p.nome , p.nascita , Days( p.nascita , Today() )*24/8766 As eta , p.sesso , a.ac_val As valore_fumo,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM pazienti p , cart_pazpbl b , cart_accert a , nos_002 n
WHERE p.codice = b.codice AND b.codice = a.codice AND a.codice=n.codice
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today() And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
AND p.decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca>Today())
AND n.pa_medi LIKE '%'
ORDER BY 7 , 1 , 2
Saluti , Sergio , Orzivecchi BS
Cervino- Membro Junior
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: EX FUMATORI
Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta nienteCervino ha scritto:In PostgreSQL , bisogna utilizzare una diversa funzione x l' età :
Select distinct p.cognome , p.nome , p.nascita , Days( p.nascita , Today() )*24/8766 As eta , p.sesso , a.ac_val As valore_fumo,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM pazienti p , cart_pazpbl b , cart_accert a , nos_002 n
WHERE p.codice = b.codice AND b.codice = a.codice AND a.codice=n.codice
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today() And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
AND p.decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca>Today())
AND n.pa_medi LIKE '%'
ORDER BY 7 , 1 , 2
Saluti , Sergio , Orzivecchi BS
grazie
Alessandro
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Re: EX FUMATORI
Ora da' un altro errore: 42883, la funzione years(date, date,) non esisteAdmin ha scritto:cancella tutto il rigo AND n.pa_medi LIKE '%'
e riprova
Alessandro
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Re: EX FUMATORI
Le query vanno bene ( non contengono errori di sintassi o funzioni non riconosciute , a parte YEARS ) ; l' errore sql : sqlstate 42601 indica la presenza di caratteri illegali ( non ammessi e /o accettati in pratica ) e Mi perseguita da un po' di tempo oramai : credo sia una questione di conflitto nei settaggi del set di caratteri fra W10 e vari programmi e/o Browser e/o siti web ; ad esempio : ho testato la query in MU e PgAdmin3 o 4 e funziona perfettamente , la posto sul sito web forum attivo per Utenti di MW , la riprendo dal forum di MW sullo stesso e/o un altro PC , prova a rieseguirlaalex ha scritto:Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie Alessandro
ed inesorabilmente ottengo in MW l' errore sqlstate 42601 od uno simile e cosi pure in PgAdmin .
per risolvere il problema devo aprire LibreOffice o OpenOffice Writer, incollare la query prelevata dal sito web in una pagina vuota di Writer, selezionare ad uno ad uno i vari caratteri anomali ( nel mio caso quasi sempre un rettangolino grigio ), dal menu selezionare --> edit / modifica --> Find & Replace / Trova e Sostituisci --> nel rettangolo inferiore Replace With / sostituisci con : inserisco uno spazio bianco --> premo il Pulsante Replace All / Rimpiazza Tutti e poi Close / Chiudi
( nelle query piu' complesse compare il messaggio che sono stati rimpiazzati fino a oltre mille caratteri e spesso si perde parte della formattazione per cui la query diventa poco leggibile ma per fortuna continua a funzionare ) : non resta che ricopiare la query in MU che riprende a funzionare
Riposto la query dopo aver eseguito per l' ennesima volta la procedura sopra descritta ( puo' appare complessa ma semplice in realtà anche se alquanto fastidiosa ) :
Select Distinct p.cognome , p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta , p.sesso ,
a.ac_val As valore_fumo ,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM pazienti p , nos_002 n , cart_accert a
WHERE p.codice = n.codice AND p.codice = a.codice
AND p.pa_convenzione Like 'S' AND n.pa_medi LIKE '%'
AND Year( p.nascita) Between 1900 And 2020
AND (n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or (n.pa_drevoca Between Today()-365
And Today() And motivo_revoca ='S' )) AND p.decesso Is Null
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today() And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY 7 , 1 , 2
Saluti , Sergio
PS : Suggerimenti al riquardo ? grazie
Cervino- Membro Junior
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: EX FUMATORI
Niente da fare. Ho risolto in maniera un po' rozza utilizzando la query generica di MW per accertamenti, poi filtrando per accertamento "fumo" e in seguito per risultati E or F ecc. ho ottenuto la lista dei pazienti. Mi sembra di aver capito che il problema potrebbe essere W10. Provero' appena posso su un computer con W7.Cervino ha scritto:Le query vanno bene ( non contengono errori di sintassi o funzioni non riconosciute , a parte YEARS ) ; l' errore sql : sqlstate 42601 indica la presenza di caratteri illegali ( non ammessi e /o accettati in pratica ) e Mi perseguita da un po' di tempo oramai : credo sia una questione di conflitto nei settaggi del set di caratteri fra W10 e vari programmi e/o Browser e/o siti web ; ad esempio : ho testato la query in MU e PgAdmin3 o 4 e funziona perfettamente , la posto sul sito web forum attivo per Utenti di MW , la riprendo dal forum di MW sullo stesso e/o un altro PC , prova a rieseguirlaalex ha scritto:Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie Alessandro
ed inesorabilmente ottengo in MW l' errore sqlstate 42601 od uno simile e cosi pure in PgAdmin .
per risolvere il problema devo aprire LibreOffice o OpenOffice Writer, incollare la query prelevata dal sito web in una pagina vuota di Writer, selezionare ad uno ad uno i vari caratteri anomali ( nel mio caso quasi sempre un rettangolino grigio ), dal menu selezionare --> edit / modifica --> Find & Replace / Trova e Sostituisci --> nel rettangolo inferiore Replace With / sostituisci con : inserisco uno spazio bianco --> premo il Pulsante Replace All / Rimpiazza Tutti e poi Close / Chiudi
( nelle query piu' complesse compare il messaggio che sono stati rimpiazzati fino a oltre mille caratteri e spesso si perde parte della formattazione per cui la query diventa poco leggibile ma per fortuna continua a funzionare ) : non resta che ricopiare la query in MU che riprende a funzionare
Riposto la query dopo aver eseguito per l' ennesima volta la procedura sopra descritta ( puo' appare complessa ma semplice in realtà anche se alquanto fastidiosa ) :
Select Distinct p.cognome , p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta , p.sesso ,
a.ac_val As valore_fumo ,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM pazienti p , nos_002 n , cart_accert a
WHERE p.codice = n.codice AND p.codice = a.codice
AND p.pa_convenzione Like 'S' AND n.pa_medi LIKE '%'
AND Year( p.nascita) Between 1900 And 2020
AND (n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or (n.pa_drevoca Between Today()-365
And Today() And motivo_revoca ='S' )) AND p.decesso Is Null
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today() And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY 7 , 1 , 2
Saluti , Sergio
PS : Suggerimenti al riquardo ? grazie
Alessandro
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Re: EX FUMATORI
Allora su win 7 la query di Sergio funziona, ma estrae tutti i p. del gruppo, non solo i miei, mentre quella di Giuseppe non da piu' errori ,ma estrae 0 pazienti. Credo che queste considerazioni vi possano essere utili.alex ha scritto:Niente da fare. Ho risolto in maniera un po' rozza utilizzando la query generica di MW per accertamenti, poi filtrando per accertamento "fumo" e in seguito per risultati E or F ecc. ho ottenuto la lista dei pazienti. Mi sembra di aver capito che il problema potrebbe essere W10. Provero' appena posso su un computer con W7.Cervino ha scritto:Le query vanno bene ( non contengono errori di sintassi o funzioni non riconosciute , a parte YEARS ) ; l' errore sql : sqlstate 42601 indica la presenza di caratteri illegali ( non ammessi e /o accettati in pratica ) e Mi perseguita da un po' di tempo oramai : credo sia una questione di conflitto nei settaggi del set di caratteri fra W10 e vari programmi e/o Browser e/o siti web ; ad esempio : ho testato la query in MU e PgAdmin3 o 4 e funziona perfettamente , la posto sul sito web forum attivo per Utenti di MW , la riprendo dal forum di MW sullo stesso e/o un altro PC , prova a rieseguirlaalex ha scritto:Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie Alessandro
ed inesorabilmente ottengo in MW l' errore sqlstate 42601 od uno simile e cosi pure in PgAdmin .
per risolvere il problema devo aprire LibreOffice o OpenOffice Writer, incollare la query prelevata dal sito web in una pagina vuota di Writer, selezionare ad uno ad uno i vari caratteri anomali ( nel mio caso quasi sempre un rettangolino grigio ), dal menu selezionare --> edit / modifica --> Find & Replace / Trova e Sostituisci --> nel rettangolo inferiore Replace With / sostituisci con : inserisco uno spazio bianco --> premo il Pulsante Replace All / Rimpiazza Tutti e poi Close / Chiudi
( nelle query piu' complesse compare il messaggio che sono stati rimpiazzati fino a oltre mille caratteri e spesso si perde parte della formattazione per cui la query diventa poco leggibile ma per fortuna continua a funzionare ) : non resta che ricopiare la query in MU che riprende a funzionare
Riposto la query dopo aver eseguito per l' ennesima volta la procedura sopra descritta ( puo' appare complessa ma semplice in realtà anche se alquanto fastidiosa ) :
Select Distinct p.cognome , p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta , p.sesso ,
a.ac_val As valore_fumo ,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM pazienti p , nos_002 n , cart_accert a
WHERE p.codice = n.codice AND p.codice = a.codice
AND p.pa_convenzione Like 'S' AND n.pa_medi LIKE '%'
AND Year( p.nascita) Between 1900 And 2020
AND (n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or (n.pa_drevoca Between Today()-365
And Today() And motivo_revoca ='S' )) AND p.decesso Is Null
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today() And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY 7 , 1 , 2
Saluti , Sergio
PS : Suggerimenti al riquardo ? grazie
Alessandro
saluti
Alessandro
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Re: EX FUMATORI
Risultato atteso in quanto Non hai inserito il Tuo codice Medico e/o Nome Utente (quello con cui accedi a MW ; prova con :alex ha scritto:Allora su win 7 la query di Sergio funziona, ma estrae tutti i p. del gruppo, non solo i miei, mentre quella di Giuseppe non da piu' errori ,ma estrae 0 pazienti. Credo che queste considerazioni vi possano essere utili. saluti Alessandro
Select Distinct p.cognome, p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta ,
p.sesso, a.ac_val As valore_fumo ,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice )
LEFT Outer JOIN v_utenti u ON n.pa_medi = u.userid )
LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.codice_regionale Like '%' AND u.nome Like '%'
AND p.pa_convenzione = 'S' AND Year( p.nascita) Between 1920 And 2020
AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between
Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today()
And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY 7 , 1 , 2
Saluti , Sergio
PS : ho cercato di formattare la query in modo evitare l' inserimento del Carattere ASCII DEC 160 : Non-breaking space al posto Carattere ASCII DEC 32 : space , per evitare il blocco della query ; ... avro' fortuna ?
Cervino- Membro Junior
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: EX FUMATORI
OK, ora funziona anche con win 10Cervino ha scritto:Risultato atteso in quanto Non hai inserito il Tuo codice Medico e/o Nome Utente (quello con cui accedi a MW ; prova con :alex ha scritto:Allora su win 7 la query di Sergio funziona, ma estrae tutti i p. del gruppo, non solo i miei, mentre quella di Giuseppe non da piu' errori ,ma estrae 0 pazienti. Credo che queste considerazioni vi possano essere utili. saluti Alessandro
Select Distinct p.cognome, p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta ,
p.sesso, a.ac_val As valore_fumo ,
Cast(( CASE a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore
FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice )
LEFT Outer JOIN v_utenti u ON n.pa_medi = u.userid )
LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.codice_regionale Like '%' AND u.nome Like '%'
AND p.pa_convenzione = 'S' AND Year( p.nascita) Between 1920 And 2020
AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between
Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null
AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today()
And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY 7 , 1 , 2
Saluti , Sergio
PS : ho cercato di formattare la query in modo evitare l' inserimento del Carattere ASCII DEC 160 : Non-breaking space al posto Carattere ASCII DEC 32 : space , per evitare il blocco della query ; ... avro' fortuna ?
grazie
Alessandro
alex- Membro Junior
- Messaggi : 132
Punti : 5240
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.