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.
Visualizzazione post con etichetta Query. Mostra tutti i post
Visualizzazione post con etichetta Query. Mostra tutti i post
venerdì 1 giugno 2012
mercoledì 1 settembre 2010
Vista per prezzo listino attuale
Sigla gestisce la data di inizio validità sui listini.
Per reperire velocemente l'ultimo prezzo di un articolo, ho creato una vista :
CREATE VIEW VLISTINO AS
SELECT TABRILIS.* FROM
TABRILIS,
( SELECT CODICE,ARTICOLO,MAX(DATAINVALI) DATAINVALI from TABRILIS
GROUP BY CODICE,ARTICOLO ) LIST
WHERE TABRILIS.CODICE=LIST.CODICE
AND TABRILIS.ARTICOLO=LIST.ARTICOLO
AND TABRILIS.DATAINVALI=LIST.DATAINVALI
Per interrogarla basta fare :
SELECT PREZZO FROM VLISTINO
WHERE ARTICOLO=''
AND CODICE='
Per reperire velocemente l'ultimo prezzo di un articolo, ho creato una vista :
CREATE VIEW VLISTINO AS
SELECT TABRILIS.* FROM
TABRILIS,
( SELECT CODICE,ARTICOLO,MAX(DATAINVALI) DATAINVALI from TABRILIS
GROUP BY CODICE,ARTICOLO ) LIST
WHERE TABRILIS.CODICE=LIST.CODICE
AND TABRILIS.ARTICOLO=LIST.ARTICOLO
AND TABRILIS.DATAINVALI=LIST.DATAINVALI
Per interrogarla basta fare :
SELECT PREZZO FROM VLISTINO
WHERE ARTICOLO='
AND CODICE='
giovedì 5 agosto 2010
Query per contare i record nelle tabelle
Queste due query servono per estrarre un elenco delle tabelle e dei record in esse contenute.
1) QUERY SCRIPT PER GENERAZIONE QUERY DI CONTA:
x SQL Server;
select '( SELECT ''', sys.tables.name ,'''AS TABELLA, COUNT(*) AS TROVATI FROM ', sys.tables.name,') UNION '
from sys.tables
order by sys.tables.name
1) QUERY SCRIPT PER GENERAZIONE QUERY DI CONTA:
x SQL Server;
select '( SELECT ''', sys.tables.name ,'''AS TABELLA, COUNT(*) AS TROVATI FROM ', sys.tables.name,') UNION '
from sys.tables
order by sys.tables.name
x Oracle;
Lanciare la query sopra con l'estrazione in formato testo (CTRL+T x formato
testo, CTRL+E per eseguire dal Query Analizer )
2) QUERY GENERATA:
(SELECT 'AGENTI ' AS TABELLA, COUNT(*) AS TROVATI FROM AGENTI ) UNION
(SELECT 'AGGRART ' AS TABELLA, COUNT(*) AS TROVATI FROM AGGRART ) UNION
.
.
(SELECT 'VERINPS ' AS TABELLA, COUNT(*) AS TROVATI FROM VERINPS ) UNION
(SELECT 'VETTORI ' AS TABELLA, COUNT(*) AS TROVATI FROM VETTORI )
Togliere come sopra l'ultima UNION;
Copiare la seconda query così generata e lanciarla al posto della prima:
ogni volta che si lancia restituisce il recordcount di ogni tabella.
Thanks Gianni
select '( SELECT '''|| table_name ||''' AS TABELLA, COUNT(*) AS TROVATI FROM '|| table_name||') UNION '
from sys.all_tables
WHERE OWNER='DITTA1'
order by table_name
NB. per Oracle è sufficiente interrogare la vista sys.table_name, anche se il campo NUM_ROWS non mi sembra aggiornato in tempo reale
SELECT table_name,num_rows
FROM sys.all_tables
WHERE owner='DITTA1'
ORDER BY num_rows DESC
Lanciare la query sopra con l'estrazione in formato testo (CTRL+T x formato
testo, CTRL+E per eseguire dal Query Analizer )
2) QUERY GENERATA:
(SELECT 'AGENTI ' AS TABELLA, COUNT(*) AS TROVATI FROM AGENTI ) UNION
(SELECT 'AGGRART ' AS TABELLA, COUNT(*) AS TROVATI FROM AGGRART ) UNION
.
.
(SELECT 'VERINPS ' AS TABELLA, COUNT(*) AS TROVATI FROM VERINPS ) UNION
(SELECT 'VETTORI ' AS TABELLA, COUNT(*) AS TROVATI FROM VETTORI )
Togliere come sopra l'ultima UNION;
Copiare la seconda query così generata e lanciarla al posto della prima:
ogni volta che si lancia restituisce il recordcount di ogni tabella.
Thanks Gianni
Etichette:
Lo sapevi che,
Oracle,
Query,
sql,
Sql Server
giovedì 8 aprile 2010
Vista per giacenze
La seguente vista permette di reperire la giacenza attuale su un magazzino o su tutti (MAGAZZINO IS NULL)
versione 2014 aggiornata più corretta
CREATE VIEW VGIACENZA AS
SELECT MAGAZZINO,ARTICOLO,
SUM(INVENTARIQ +CARICOQ+ALTRICARIQ-SCARICOQ- ALTRISCARQ) GIACENZA
FROM GIACESE,
( SELECT MAX(CODICE) CODICE FROM ESC WHERE DPF1='S'
UNION
SELECT MAX(CODICE) CODICE FROM ESC WHERE DPF2='N'
) ESC1
WHERE ESERCIZIO=CODICE
GROUP BY MAGAZZINO,ARTICOLO
vecchia versione
CREATE VIEW VGIACENZA AS
SELECT MAGAZZINO,ARTICOLO,
SUM(INVENTARIQ +CARICOQ+ALTRICARIQ-SCARICOQ- ALTRISCARQ) GIACENZA
FROM GIACESE,ESC
WHERE ESERCIZIO=CODICE
AND DPF2='N'
GROUP BY MAGAZZINO,ARTICOLO
versione 2014 aggiornata più corretta
CREATE VIEW VGIACENZA AS
SELECT MAGAZZINO,ARTICOLO,
SUM(INVENTARIQ +CARICOQ+ALTRICARIQ-SCARICOQ- ALTRISCARQ) GIACENZA
FROM GIACESE,
( SELECT MAX(CODICE) CODICE FROM ESC WHERE DPF1='S'
UNION
SELECT MAX(CODICE) CODICE FROM ESC WHERE DPF2='N'
) ESC1
WHERE ESERCIZIO=CODICE
GROUP BY MAGAZZINO,ARTICOLO
vecchia versione
CREATE VIEW VGIACENZA AS
SELECT MAGAZZINO,ARTICOLO,
SUM(INVENTARIQ +CARICOQ+ALTRICARIQ-SCARICOQ- ALTRISCARQ) GIACENZA
FROM GIACESE,ESC
WHERE ESERCIZIO=CODICE
AND DPF2='N'
GROUP BY MAGAZZINO,ARTICOLO
sabato 9 gennaio 2010
Query Riepilogo Cespiti
-- Riepilogo cespiti con base ammortizzabile, ammortizzato nell'anno, residuo
````||CESPITI.CODICE CODICE,DESCRIZION,ALIENAT_SN ALIEN,
INTAMM_SN INT_AMM,
CASE
WHEN DATA_ALI IS NULL THEN ``
ELSE
SUBSTR(DATA_ALI,1,4)||`/`||
END DATA_ALI,
SUBSTR(CESPITI.DATAFATFOR,1,4)
cespiti.NUMNSFATT NUM_FATT,
EVALOREINI VALORE_INI,
CESPITI.ETOTALEAMM TOT_AMM,
CESPITI.ERESIDUOAM RESIDUO,
MOVCE.EIMPORTO AMM_+[Esercizio],
CESPITI.ERESIDUOAM-MOVCE.
from CESPITI LEFT OUTER JOIN MOVCE ON CESPITI.CATEGORIA=MOVCE.
LEFT OUTER JOIN (
select CATEGORIA,CODCESPITE,DATAREG DATA_ALI from MOVCE WHERE TIPOMOV=`L`
) ALIENATI ON CESPITI.CATEGORIA=ALIENATI.
ORDER BY CESPITI.CATEGORIA,CESPITI.
Query chiusura ordine
-- Query per chiudere le testate degli ordini che hanno tutte le righe evase
UPDATE TESDOCUM
SET EVASO_SN='S'
WHERE NUMERO IN (
select TESDOCUM.NUMERO from TESDOCUM
WHERE ESERPROTOC >='2008'
AND TIPOPROTOC='OC'
AND EVASO_SN='N'
AND NOT EXISTS ( SELECT 1 FROM MOVIMAG M
WHERE TESDOCUM.NUMERO=M.NUMERO
AND EVASION_SN='N'
)
)
SET EVASO_SN='S'
WHERE NUMERO IN (
select TESDOCUM.NUMERO from TESDOCUM
WHERE ESERPROTOC >='2008'
AND TIPOPROTOC='OC'
AND EVASO_SN='N'
AND NOT EXISTS ( SELECT 1 FROM MOVIMAG M
WHERE TESDOCUM.NUMERO=M.NUMERO
AND EVASION_SN='N'
)
)
Query chiusura righe ordine
-- Chiusura di righe ordine aperte con articolo '.' e ordine aperto solo per quella riga
UPDATE MOVIMAG
SET EVASION_SN='S'
WHERE NUMERO IN
(select TESDOCUM.NUMERO from MOVIMAG,TESDOCUM
WHERE ESERCIZIO >='2008'
AND ARTICOLO='.'
AND TIPOPROT='OC'
AND EVASION_SN='N'
AND EVASO_SN='N'
AND TESDOCUM.NUMERO=MOVIMAG.NUMERO
AND NOT EXISTS ( SELECT 1 FROM MOVIMAG M
WHERE M.NUMERO=MOVIMAG.NUMERO
AND EVASION_SN='N'
AND ARTICOLO<>'.' )
)
AND ARTICOLO='.'
UPDATE MOVIMAG
SET EVASION_SN='S'
WHERE NUMERO IN
(select TESDOCUM.NUMERO from MOVIMAG,TESDOCUM
WHERE ESERCIZIO >='2008'
AND ARTICOLO='.'
AND TIPOPROT='OC'
AND EVASION_SN='N'
AND EVASO_SN='N'
AND TESDOCUM.NUMERO=MOVIMAG.NUMERO
AND NOT EXISTS ( SELECT 1 FROM MOVIMAG M
WHERE M.NUMERO=MOVIMAG.NUMERO
AND EVASION_SN='N'
AND ARTICOLO<>'.' )
)
AND ARTICOLO='.'
Iscriviti a:
Post (Atom)