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
****************************************************

vaccinazioni tetano con lotto per postgres

Andare in basso

vaccinazioni tetano con lotto per postgres

Messaggio  mario shirt il Dom 15 Nov 2015 - 17:12

Chi mi puo' adattare a postgres questa query x estrazione vaccinazioni tetano con lotto prima funzionante ?

[COMMENTO]
l penultimo rigo lo devi sostituire con:
AND va_data BETWEEN '1900/01/01' AND '2012/11/01'Le date di inizio e fine le decidi tu.
[SQL]
Select Cognome+' '+Nome Nome, nascita, CAST(codice_fiscale AS CHAR (22)) , va_tipo

Tipo, va_data Data, va_scad Scadenza, va_rich Richiamo, va_code Codice, Co_Codifa

Cod_Minsan, Co_des Vaccino, va_note Note, fatto_io Posto, dose,

(substr(lotto,1,14)+'

'+(substr(lotto,19,2))+'/'+(substr(lotto,17,2))+'/'+(substr(lotto,15,2)))

Lotto_E_Scadenza, flag_reazioni_avverse
FROM pazienti p, cart_vaccini v
WHERE p.codice=v.codice
AND va_tipo like '%tetano%'
AND va_data BETWEEN '2014/06/01' AND '2015/02/01'

/*AND (va_data > Today()-3650 OR va_data is null) */


Grazie
Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 240
Punti : 2969
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Visualizza il profilo dell'utente

Tornare in alto Andare in basso

Re: vaccinazioni tetano con lotto per postgres

Messaggio  Cervino il Sab 12 Dic 2015 - 23:34

Prova eventualmente con :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16)) ,  p.sesso , 
Days( p.nascita, '2015/01/01')*24/8766  As  eta ,  Cast( p.codice_fiscale As Char(16))  As  codfisc_paz ,
Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16))   As  Influ_d ,    Max( v.va_tipo)  As  vaccino , 
( Select  Max( v.va_scad) From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Tetan%' And v.va_data Is Null And Not Exists (Select v1.codice
From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Tetan%' And (v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid>v.rowid))))  As  data_richiamo , 
Cast( Max( v.va_rich) As smallInt )  As  tipo_richiamo ,  Max( v.va_code)  As  Vacc_code , 
Case  Max( fatto_io)  WHEN   'D'   THEN   ' in Office'   WHEN   'E'   THEN   ' Domicilio'   WHEN   'F'   THEN   ' in RSA'    
 WHEN   'A'   THEN   ' Priv  in Office'   WHEN   'B'   THEN   ' Priv  Domicilio'   WHEN   'C'   THEN   ' Priv  in RSA'   ELSE   Max( fatto_io)   END  As  sede ,
Trim( Left( v.lotto ,  Position( '  ' in v.lotto)-1 )) As  num_lotto ,     Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 )  As  scadenza_lotto , 
/*  Trim( Right( v.lotto , Position( '  ' in v.lotto)-1  )) As scadenza_lotto ,     alternativa alla precedente   oppure 

Right( v.lotto , 6 ) As  scadenza_lotto   */      Max( v.va_note) As  note ,  
Max( flag_reazioni_avverse)  As reaz_avv ,   Max( v.co_codifa)  As  Cod_Minsan 
FROM   (( pazienti p   LEFT Outer JOIN   nos_002 n    ON   p.codice = n.codice )  
                                LEFT Outer JOIN   v_utenti u   On  u.userid = n.pa_medi )
                                LEFT Outer JOIN    cart_vaccini v   ON  v.codice = p.codice
WHERE     u.nome  ILike  '%'          AND     u.codice_regionale  ILike  '%'
AND    p.pa_convenzione = 'S'        AND     sesso  ILike  '%' 
AND    Days( p.nascita, '2016/01/01')*24/8766  <  105
AND    v.va_tipo   ILike   '%Tetan%'   AND   v.va_data   BETWEEN  '2015-01-01'  AND  '2015-12-31' And Not Exists (Select v1.codice From cart_vaccini v1
Where v1.codice = v.codice And v1.va_tipo ILike '%Tetan%' And (v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid>v.rowid)))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice ,  v.lotto
ORDER BY  7 desc , 3 , 4


Ti saluto ,  Sergio    Orzivecchi  ( BS )

Cervino
Membro Junior
Membro Junior

Messaggi : 219
Punti : 2847
Voti per importanza dei messaggi : 16
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Visualizza il profilo dell'utente

Tornare in alto Andare in basso

Re: vaccinazioni tetano con lotto per postgres

Messaggio  mario shirt il Dom 13 Dic 2015 - 8:19

Cervino ha scritto:Prova eventualmente con :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16)) ,  p.sesso , 
Days( p.nascita, '2015/01/01')*24/8766  As  eta ,  Cast( p.codice_fiscale As Char(16))  As  codfisc_paz ,
Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16))   As  Influ_d ,    Max( v.va_tipo)  As  vaccino , 
( Select  Max( v.va_scad) From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Tetan%' And v.va_data Is Null And Not Exists (Select v1.codice
From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Tetan%' And (v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid>v.rowid))))  As  data_richiamo , 
Cast( Max( v.va_rich) As smallInt )  As  tipo_richiamo ,  Max( v.va_code)  As  Vacc_code , 
Case  Max( fatto_io)  WHEN   'D'   THEN   ' in Office'   WHEN   'E'   THEN   ' Domicilio'   WHEN   'F'   THEN   ' in RSA'    
 WHEN   'A'   THEN   ' Priv  in Office'   WHEN   'B'   THEN   ' Priv  Domicilio'   WHEN   'C'   THEN   ' Priv  in RSA'   ELSE   Max( fatto_io)   END  As  sede ,
Trim( Left( v.lotto ,  Position( '  ' in v.lotto)-1 )) As  num_lotto ,     Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 )  As  scadenza_lotto , 
/*  Trim( Right( v.lotto , Position( '  ' in v.lotto)-1  )) As scadenza_lotto ,     alternativa alla precedente   oppure 

Right( v.lotto , 6 ) As  scadenza_lotto   */      Max( v.va_note) As  note ,  
Max( flag_reazioni_avverse)  As reaz_avv ,   Max( v.co_codifa)  As  Cod_Minsan 
FROM   (( pazienti p   LEFT Outer JOIN   nos_002 n    ON   p.codice = n.codice )  
                                LEFT Outer JOIN   v_utenti u   On  u.userid = n.pa_medi )
                                LEFT Outer JOIN    cart_vaccini v   ON  v.codice = p.codice
WHERE     u.nome  ILike  '%'          AND     u.codice_regionale  ILike  '%'
AND    p.pa_convenzione = 'S'        AND     sesso  ILike  '%' 
AND    Days( p.nascita, '2016/01/01')*24/8766  <  105
AND    v.va_tipo   ILike   '%Tetan%'   AND   v.va_data   BETWEEN  '2015-01-01'  AND  '2015-12-31' And Not Exists (Select v1.codice From cart_vaccini v1
Where v1.codice = v.codice And v1.va_tipo ILike '%Tetan%' And (v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid>v.rowid)))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice ,  v.lotto
ORDER BY  7 desc , 3 , 4


Ti saluto ,  Sergio    Orzivecchi  ( BS )

ok funziona bene, grazie.
avevo adattato una "visivamente" piu' semplice che posto dopo

SELECT
cart_vaccini.va_data as Data_Vaccinazione,
cart_vaccini.co_des as Tipo_Vaccino_Utilizzato,
cart_vaccini.lotto as Dati_Lotto,


cart_vaccini.ora as Codice_Categoria,
pazienti.cognome as Cognome,
pazienti.nome as Nome,
pazienti.nascita as Data_Nascita,
pazienti.sesso as Sesso,
pazienti.codice_fiscale as Codice_Fiscale,
cart_vaccini.va_note as Note,
v_utenti.codice_regionale as Codice_Regionale_Medico,
CONCAT (v_utenti.cognome, ' ' ,  v_utenti.nome) AS Nome_Medico_Utente

FROM
cart_vaccini,
pazienti,
nos_002,
v_utenti


WHERE
pazienti.codice = cart_vaccini.codice AND
pazienti.codice = nos_002.codice AND
pazienti.userid = v_utenti.userid AND
cart_vaccini.va_tipo LIKE '%tetan%' AND
/* SOSTITUIRE dopo LIKE il tipo di vaccinazione da cercare */


date( cart_vaccini.va_data) > '01/02/2015' AND
/* SOSTITUIRE LA DATA DELLA RIGA PRECEDENTE IN BASE ALLA DATA D'INIZIO DELLA ricerca delle vaccinazioni */


nos_002.pa_medi = 'QWHSUYM'
/* AL POSTO DELLE XXXXXXX NELLA RIGA PRECEDENTE INSERIRE TRA GLI APICI IL PROPRIO CODICE MEDICINA DI GRUPPO DI MILLEWIN */


ORDER BY  cart_vaccini.co_des, pazienti.cognome, pazienti.nome,  pazienti.nascita ;

avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 240
Punti : 2969
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Visualizza il profilo dell'utente

Tornare in alto Andare in basso

Re: vaccinazioni tetano con lotto per postgres

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Tornare in alto Andare in basso

Tornare in alto

- Argomenti simili

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