Query calcolo costi in valuta

di il
5 risposte

Query calcolo costi in valuta

Buonasera a tutti
sto cercando di calcolare i costi come costo orario x ore lavorate di una macchina:
SELECT Lotti.codice_lotto, Lotti.data_lotto, Lotti.quantità_lotto, Articoli.codice_art, Macchine.cod_macchina, Costo_macch.costo_orario, Cdate(lavorazioni.al - lavorazioni.dal) as ore_lavorate, Format(Costo_macch.costo_orario * cdate(lavorazioni.al - lavorazioni.dal), "currency") as costo_macchina
FROM (Macchine INNER JOIN Costo_macch ON Macchine.PK_Macchina = Costo_macch.FK_macch) INNER JOIN ((Articoli INNER JOIN Lotti ON Articoli.PK_Articolo = Lotti.FK_articolo) INNER JOIN Lavorazioni ON Lotti.PK_Lotto = Lavorazioni.FK_lotto) ON Macchine.PK_Macchina = Lavorazioni.FK_macchina
WHERE Lavorazioni.dal>=[costo_macch].[dal] AND Lavorazioni.al<=[costo_macch].[al]
sembra che funzioni ma il risultato non è corretto. Per esempio, la macchina 1A lavora 2 ore al costo di 10€/ora quindi il costo dovrebbe essere 20€, ma il risultato che ottengo è diverso:
cod_macchina costo_orario ore_lavorate costo_macchina
1A 10,00 € 02:00:00 0,83 €

Dove sbaglio? grazie

5 Risposte

  • Re: Query calcolo costi in valuta

    Ho in parte risolto usando la funzione hour:
    SELECT Lotti.codice_lotto, Lotti.data_lotto, Lotti.quantità_lotto, Articoli.codice_art, Macchine.cod_macchina, Costo_macch.costo_orario, Cdate(lavorazioni.al - lavorazioni.dal) AS ore_lavorate, Format(Costo_macch.costo_orario*hour(lavorazioni.al-lavorazioni.dal),"currency") AS costo_macchina
    FROM (Macchine INNER JOIN Costo_macch ON Macchine.PK_Macchina = Costo_macch.FK_macch) INNER JOIN ((Articoli INNER JOIN Lotti ON Articoli.PK_Articolo = Lotti.FK_articolo) INNER JOIN Lavorazioni ON Lotti.PK_Lotto = Lavorazioni.FK_lotto) ON Macchine.PK_Macchina = Lavorazioni.FK_macchina
    WHERE Lavorazioni.dal>=costo_macch.dal And Lavorazioni.al<=costo_macch.al;
    
    l'unico problema sono le frazioni di ora. Se la macchina lavora 2:30 il risultato resta 20€.
    Suggerimenti? grazie
  • Re: Query calcolo costi in valuta

    Non sottrarre direttamente le date. Usa la .
  • Re: Query calcolo costi in valuta

    Sgrubak ha scritto:


    Non sottrarre direttamente le date. Usa la .
    Non cambia nulla (come è noto). Tra l'altro, la differenza viene benissimo. E' la moltiplicazione che non viene, perchè sembra considerare solo gli interi (ore, non i minuti), per cui 10 x 2 ore = 20 euro ma anche 10 x 2 ore 30 min = 20 euro.
  • Re: Query calcolo costi in valuta

    Scusami, son stato troppo sbrigativo.
    Faccio prima a lasciarti un esempio di quel che intendevo... [CODE]SELECT #11-03-2022 12:20# AS D1, #11-03-2022 13:30# AS d2, [D1]-[D2] As Differenza, DATEDIFF("s",[D1],[d2])/3600 * 20, HOUR([Differenza]) * 20 Se usi DataDiff e ti fai restituire i secondi, allora ottieni il risultato corretto. Hour ...
  • Re: Query calcolo costi in valuta

    Sgrubak ha scritto:


    Scusami, son stato troppo sbrigativo.
    Faccio prima a lasciarti un esempio di quel che intendevo... [CODE]SELECT #11-03-2022 12:20# AS D1, #11-03-2022 13:30# AS d2, [D1]-[D2] As Differenza, DATEDIFF("s",[D1],[d2])/3600 * 20, HOUR([Differenza]) * 20 Se usi DataDiff e ti fai restituire i secondi, allora ottieni il risultato corretto. Hour ...
    Funziona! Grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte