ciao a tutti! devo inserire in una tabella dei dati divisi per trimestre ed il totale annuo... l'unica soluzione mi sembra fare 5 query, una per periodo... ma la cosa mi sembra pesante... come posso fare? vi ringrazio! ciao
ciao a tutti! devo inserire in una tabella dei dati divisi per trimestre ed il totale annuo... l'unica soluzione mi sembra fare 5 query, una per periodo... ma la cosa mi sembra pesante... come posso fare? vi ringrazio! ciao
ciao
ad occhio mi sembra non ci siano elementi suffiecienti per poterti rispondere....
prova almeno a postare la struttura della tabella in cui sono memorizzati i dati
le tabelle sono varie... sostanzialmente io con un select mi trovo la lista degli importi (ma penso che la natura del dato non sia rilevante, una lista di numeri) filtrati per anno, ad esempio: 12000 - 12/05/1999 ecc.... le condizioni di filtro nel where sono obbligatoriamente su tutti i campi del select oppure si può distinguere?
si, si puo' distinguere.
posta la query... hai provato con group by?
SELECT DISTINCT sum(rows.importo) AS importo, aziende.name AS azienda
FROM ricezioni AS ric JOIN ricezioni_rows
AS rows on ric.id = rows.parent_id JOIN accounts AS aziende on aziende.id = ric.account_id
WHERE aziende.account_gx >= 270210231 AND aziende.account_gx <= 270210231 AND ric.data_ricez >= '2000-01-01'
AND ric.data_ricez <= '2000-12-31' GROUP BY aziende.name
in questo caso, come si vede, ho diviso per totale anno...
allora.... io 'proverei' utilizzando il comando CASE,
devi aggiustare il controllo del mese della data.....codice:SELECT DISTINCT sum(rows.importo) AS importo, aziende.name AS azienda, CASE ric.data_ricez WHEN mese<=3 THEN 1 WHEN mese<=6 THEN 2 WHEN mese<=9 THEN 3 WHEN mese<=12 THEN 4 ELSE 5 END Trimestre FROM ricezioni AS ric ...
se ti riesce credo che con questa tecnioca potresti avere i dati gia' divisi per trimestre
ti ringrazio tanto. ora provo subito!
ma come posso fare per vedere le casistiche in output?
ora come ora la query è:
SELECT DISTINCT sum(rows.acq_qta_fatt) AS fatturato, aziende.name AS nome, ric.data_ricez=
CASE
WHEN ric.data_ricez < '2000-03-31' THEN 1
ELSE 2
END
FROM ricezioni AS ric JOIN ricezioni_rows
AS rows on ric.id = rows.parent_id JOIN accounts AS aziende on aziende.id = ric.account_id
LEFT JOIN obbiettivi_acquisto AS obiettivi ON obiettivi.s_conto_for = aziende.account_gx
WHERE aziende.account_gx >= 270210231 AND aziende.account_gx <= 270210231 AND ric.data_ricez >= '2000-01-01'
AND ric.data_ricez <= '2000-12-31' GROUP BY aziende.name, ric.data_ricez
devo inserire i casi 1 e 2 da qualche parte?
mi spieghi cosa significa questo:
aziende.account_gx >= 270210231 AND aziende.account_gx <= 270210231
???
codice:SELECT DISTINCT sum(rows.acq_qta_fatt) AS fatturato, aziende.name AS nome, CASE WHEN ric.data_ricez < '2000-03-31' THEN 1 WHEN ric.data_ricez < '2000-06-30' THEN 2 WHEN ric.data_ricez < '2000-09-30' THEN 3 WHEN ric.data_ricez < '2000-12-31' THEN 4 ELSE 5 END as trimestre FROM ricezioni AS ric LEFT JOIN ricezioni_rows AS rows on ric.id = rows.parent_id LEFT JOIN accounts AS aziende on aziende.id = ric.account_id LEFT JOIN obbiettivi_acquisto AS obiettivi ON obiettivi.s_conto_for = aziende.account_gx WHERE aziende.account_gx >= 270210231 AND aziende.account_gx <= 270210231 AND ric.data_ricez >= '2000-01-01' AND ric.data_ricez <= '2000-12-31' GROUP BY aziende.name, ric.data_ricez, trimestre