Visto che mi dimentico sempre come si fa lo scrivo qui.
Per inserire un parametro in una query di Microsoft Query è necessario creare un nuovo criterio. Al posto del valore inserire una label fra parentesi quadre.
NB il nome del parametro deve essere diverso da qualsiasi campo delle tabelle coinvolte nella query.
All'apertura della query o del foglio excel collegato verrà richiesto il parametro.
venerdì 1 giugno 2012
martedì 8 maggio 2012
Ricalcolo saldi contabili ( Tasalsot )
La seguente query ricrea TASALSOT ( che quindi deve essere svuotato prima ).
La query è per SqlServer
Per gli altri db basta spostituire il funzione ISNULL con VALUE,NVL,IFNULL a seconda del db
La query è per SqlServer
Per gli altri db basta spostituire il funzione ISNULL con VALUE,NVL,IFNULL a seconda del db
INSERT INTO TASALSOT
SELECT CODICE,PIACON.SOTTOCONTO,
ISNULL(LIRE.DARE,0) DARE,
ISNULL(LIRE.AVERE,0) AVERE,
ISNULL(LIRE.DAREINIT,0) DAREINIT,
ISNULL(LIRE.AVEREINIT,0) AVEREINIT,
ISNULL(LIRE.EDARE,0) EDARE,
ISNULL(LIRE.EAVERE,0) EAVERE,
ISNULL(LIRE.EDAREINIT,0) EDAREINIT,
ISNULL(LIRE.EAVEREINIT,0) EAVEREINIT,
DATULTMOV,
NUMULTMOV
FROM PIACON INNER JOIN ESC ON 1=1
LEFT OUTER JOIN (SELECT ESECOMPET,SOTTOCONTO,
SUM(CASE WHEN SEGNO='D' THEN IMPORTO ELSE 0 END) DARE,
SUM(CASE WHEN SEGNO='A' THEN IMPORTO ELSE 0 END) AVERE,
SUM(CASE WHEN SEGNO='D' AND TIPOCAUSAL='A' THEN IMPORTO ELSE 0 END) DAREINIT,
SUM(CASE WHEN SEGNO='A' AND TIPOCAUSAL='A' THEN IMPORTO ELSE 0 END) AVEREINIT,
SUM(CASE WHEN SEGNO='D' THEN EIMPORTO ELSE 0 END) EDARE,
SUM(CASE WHEN SEGNO='A' THEN EIMPORTO ELSE 0 END) EAVERE,
SUM(CASE WHEN SEGNO='D' AND TIPOCAUSAL='A' THEN EIMPORTO ELSE 0 END) EDAREINIT,
SUM(CASE WHEN SEGNO='A' AND TIPOCAUSAL='A' THEN EIMPORTO ELSE 0 END) EAVEREINIT,
MAX(DATAREG) DATULTMOV,
MAX(NUMERO) NUMULTMOV
FROM MOVCO
WHERE SOSPESO_SN='N'
AND TEMPORA_SN='N'
AND SIMULAZ_SN='N'
AND SOLOANA_SN<>'S'
GROUP BY ESECOMPET,SOTTOCONTO) LIRE ON ESC.CODICE=LIRE.ESECOMPET AND PIACON.SOTTOCONTO=LIRE. SOTTOCONTO
ORDER BY ESC.CODICE,PIACON.SOTTOCONTO
Diritti in Oracle
Per concedere un certo diritto su una tabella ad un altro user/schema la sintassi è la seguente :
GRANT <diritto> ON <tabella> TO < user>
GRANT SELECT ON PIACON TO DITTA1
GRANT <diritto> ON <tabella> TO < user>
GRANT SELECT ON PIACON TO DITTA1
mercoledì 4 aprile 2012
Esercizi su funzioni per date di SqlServer
Qui sotto c'è un esempio di due funzioni per la manipolazione di date su SQLServer
DATEADD aggiunge un valore ad una certa data
DATEDIFF restituisce la differenza fra due date
-------------------------------------------------------
select CODICE "Articolo", DESCRIZION "Descrizione",
substring(DATACREAZI,7,2)+'/' +substring(DATACREAZI,5,2)+'/' +substring(DATACREAZI,1,4) "Dt. Creazione",
DATEADD(year, 2, DATACREAZI) "Uscita produzione",
substring(ULT_AGG,7,2)+'/'+ substring(ULT_AGG,5,2)+'/'+ substring(ULT_AGG,1,4) "Dt. Ult. Agg",
DATEDIFF(day, ULT_AGG, GETDATE()) "gg. dall'ult. aggiorn."
FROM ANAMAGA
WHERE STATO = 'S'
-------------------------------------------------------
"Uscita produzione": 2 anni successivi a DATACREAZI
"gg. dall'ult. aggiorn.": differenza in giorni dal valore del campo ULT_AGG alla data odierna.
Grazie a Gianni per la ricerca
Riferimenti su web
http://www.w3schools.com/sql/ func_dateadd.asp
http://www.sql-server-helper. com/tips/date-formats.aspx
DATEADD aggiunge un valore ad una certa data
DATEDIFF restituisce la differenza fra due date
-------------------------------------------------------
select CODICE "Articolo", DESCRIZION "Descrizione",
substring(DATACREAZI,7,2)+'/'
DATEADD(year, 2, DATACREAZI) "Uscita produzione",
substring(ULT_AGG,7,2)+'/'+
DATEDIFF(day, ULT_AGG, GETDATE()) "gg. dall'ult. aggiorn."
FROM ANAMAGA
WHERE STATO = 'S'
-------------------------------------------------------
"Uscita produzione": 2 anni successivi a DATACREAZI
"gg. dall'ult. aggiorn.": differenza in giorni dal valore del campo ULT_AGG alla data odierna.
Grazie a Gianni per la ricerca
Riferimenti su web
http://www.w3schools.com/sql/
http://www.sql-server-helper.
giovedì 29 marzo 2012
Query per dati registro cespiti di prova
La query di cui sotto restituisce gli stessi dati ( a dir la verità mi mancano le rivalutazioni/svalutazioni ) che vengono stampati durante la stampa di prova del registro cespiti
Dopo la stampa definitiva, la query deve essere rivista.
La query estrae i dati dettagliati per cespite. E' sufficiente utilizzare i subtotali di Excel per totalizzare per Categoria
PS. La query è fatta per ORACLE ( la variazioni per altri db sono semplici )
------------- Inizio Testo Query -----------------------------------------------
select
c.categoria,cat.descrizion,c. codice,c.descrizion,
substr(datainiamm,7,2)||'/'|| substr(datainiamm,5,2)||'/'|| substr(datainiamm,1,4) Data_Ini_Amm,
case
when acq.datareg is not null then
substr(acq.datareg,7,2)||'/'|| substr(acq.datareg,5,2)||'/'|| substr(acq.datareg,1,4)
end
Data_Acq,
c.numfatfor,
substr(c.datafatfor,7,2)||'/'| |substr(c.datafatfor,5,2)||'/' ||substr(c.datafatfor,1,4) data_fatt_for,
nvl(acq.eimporto,0) imp_acq,
c.evaloreini costo_sto,c.ebaseammor base_amm,
c.eresiduoam-nvl(amm.eimporto, 0) residuo_amm, c.eimpnonamm non_amm,
c.etotaleamm+nvl(amm.eimporto, 0) fondo_amm,
nvl(ali.eimporto,0) ali_anno,
nvl(amm.eimporto,0) amm_anno,
c.eplusval-c.eminusval plus_min,
c.eresiduocv-nvl(amm. eimpammciv,0) residuo_amm_civ,
c.eplusciv-c.eminusciv plus_min_civ,
c.efondociv+nvl(amm. eimpammciv,0) fondo_civ,
nvl(amm.eimpammciv,0) amm_civ_anno,
nvl(ali.etotaleamm,0) ali_anno_tot_fondo,
nvl(ali.eimpammort,0) ali_tot_costo_storico,
nvl(ali.etotammciv,0) ali_anno_tot_fondo_civ,
c.evaloreini-nvl(ali. eimpammort,0) netto_ali_costo_sto,
c.etotaleamm+nvl(amm.eimporto, 0)-nvl(ali.etotaleamm,0) netto_ali_fondo_amm,
c.efondociv+nvl(amm. eimpammciv,0)-nvl(ali. etotammciv,0) netto_ali_fondo_amm_civ,
nvl(amm.eimporto,0) importo_amm,
nvl(amm.eimpammciv,0) importo_amm_civ,
nvl(AMm.Percamm,0) pct_amm,
nvl(AMm.Perc_civ,0) pct_civ
from
( select * from cespiti
where 1=1
and codice is not null
and (
(datainiamm < '2012')
or
(exists ( select 1 from movce m1 where m1.categoria=cespiti.categoria and m1.codcespite=cespiti.codice and tipomov='A' and esereg='2011')
))
and (
(alienat_sn='N') or
( alienat_sn='S' and exists ( select 1 from movce m1 where m1.categoria=cespiti.categoria and m1.codcespite=cespiti.codice and tipomov='L' and esereg='2011')
)
)
) c
inner join siglapp.catbeni cat on c.categoria=cat.codice
left outer join (
select * from movce where esereg='2011'
and tipomov='M') amm
on c.categoria=amm.categoria
and c.codice=amm.codcespite
left outer join (
select * from movce where esereg='2011'
and tipomov='L') ali
on c.categoria=ali.categoria
and c.codice=ali.codcespite
left outer join (
select * from movce where esereg='2011'
and tipomov='A') acq
on c.categoria=acq.categoria
and c.codice=acq.codcespite
order by c.categoria,c.codice
------------- Fine Testo Query -----------------------------------------------
mercoledì 8 febbraio 2012
Sigla non supporta Mysql 5.5
Mysql 5.5 non è supportato alla data odierna ( 08/02/2012 ) da Sigla++.
In fase di creazione di una tabella su Mysql, Sigla inserisce al termine dello statement SQL, la stringa TYPE=InnoDb
In MySql 5.5 tale opzione è stata sostituita con l'opzione ENGINE=InnoDb
Quindi in fase di creazione delle tabelle, Sigla si schianta.
In fase di creazione di una tabella su Mysql, Sigla inserisce al termine dello statement SQL, la stringa TYPE=InnoDb
In MySql 5.5 tale opzione è stata sostituita con l'opzione ENGINE=InnoDb
Quindi in fase di creazione delle tabelle, Sigla si schianta.
giovedì 26 gennaio 2012
Backup Db2
La sintassi per effettuare il backup di un database di DB2 è il seguente :
BACKUP DATABASE db [USER user USING password ] TO path
esempio
BACKUP DATABASE SIGLAP USER db2 USING db2 TO C:\COPIADB2
La sintassi completa è qui
BACKUP DATABASE db
esempio
BACKUP DATABASE SIGLAP USER db2 USING db2 TO C:\COPIADB2
La sintassi completa è qui
Iscriviti a:
Post (Atom)