none
Calcolo Query RRS feed

  • Domanda

  • Ciao a tutti,vorrei eseguire una query con questo tipo di calcolo es:

    -1000 + 100 = -900

    in sql ho provato a fare così ma non so se giusto:

    SELECT CONVERT(varchar(02), MONTH(RATE_PIANO.data)) + ' ' + CONVERT(varchar(04), YEAR(RATE_PIANO.data)) AS MESECOMPLETO, sum(-RATE_PIANO.capitale_residuo + RATE_PIANO.importo_rata) AS TOTALE
                            FROM FINANZIAMENTI INNER JOIN
                            RATE_PIANO ON FINANZIAMENTI.NUM_FIN = RATE_PIANO.num_fin
                            WHERE (FINANZIAMENTI.STATUS NOT IN ('AN', 'P')) AND (RATE_PIANO.data BETWEEN '2013-01-01' AND '2014-12-31')
                            GROUP BY MONTH(RATE_PIANO.data), YEAR(RATE_PIANO.data)

    Grazie a tutti.

    Luigi.

    venerdì 12 dicembre 2014 09:38

Risposte

  • Ma i valori delle due colonne (capitale_residuo e importo_rata) sono sempre positivi?

    Paolo Pranzo

    • Contrassegnato come risposta glider77 sabato 13 dicembre 2014 14:40
    venerdì 12 dicembre 2014 15:15
  • Ciao ragazzi ho risolto il problema, data la giusta osservazione di Paolo se i numeri capitale_residuo e importo rata erano tutti positivi era la risposta alla soluzione al mio problema.

    La colonna capitale_residuo infatti sono le uscite, essendo un numero positivo non poteva mai rappresentarmi nel grafico una uscita con il segno -, modificando con una query update il campo capitale ove contiene l'intero importo finanziato con il segno - ho risolto.

    Quindi la query come accennato da Paolo doveva funzionare.

    SELECT CONVERT(varchar(02), MONTH(RATE_PIANO.data)) + ' ' + CONVERT(varchar(04), YEAR(RATE_PIANO.data)) AS MESECOMPLETO, SUM(RATE_PIANO.capitale_residuo + RATE_PIANO.importo_rata) AS TOTALE
                            FROM RATE_PIANO INNER JOIN
                            FINANZIAMENTI ON RATE_PIANO.num_fin = FINANZIAMENTI.NUM_FIN
                            WHERE (RATE_PIANO.data BETWEEN @data1 AND @data2) AND (FINANZIAMENTI.STATUS IN ('A', 'X'))  
                            GROUP BY MONTH (RATE_PIANO.data), YEAR(RATE_PIANO.data)

    ovviamente non metto nessun segno - davanti a "RATE_PIANO.capitale_residuo" in quanto già negativo nel db.

    ottenendo (- Valuta1 + Valuta2 = -Risultato) ovviamente graficamente non sempre è negativo il mese meno male! :P. 

    Grazie a tutti alla prossima.

    Luigi.


    • Contrassegnato come risposta glider77 sabato 13 dicembre 2014 14:40
    • Modificato glider77 sabato 13 dicembre 2014 14:43 Correzione query risolutiva
    sabato 13 dicembre 2014 14:40

Tutte le risposte

  • Ciao Luigi, 
    se ti riferisci a TOTALE è giusto, va bene!

    Paolo Pranzo

    venerdì 12 dicembre 2014 13:48
  • Ciao Paolo, ok per il totale, ti spiego stò creando un grafico per un portafoglio di prestiti a rate costanti quindi entrate e uscite, implementando la query nel grafico, è molto strano che i valori siano sempre in più.

    Ad esempio marzo e aprile quando è partito il primo finanziamento ed il secondo, le colonnine dovrebbero essere con un valore sotto lo zero in quanto hanno sborsato il totale del finanziamento.

    Nella mia tabella delle rate_finanziamento è così composta:

    USE [TEST]
    GO
    
    /****** Object:  Table [dbo].[RATE_PIANO]    Script Date: 12/12/2014 15:07:11 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[RATE_PIANO](
    	[pk_id] [int] IDENTITY(1,1) NOT NULL,
    	[num_fin] [int] NOT NULL,
    	[num_rata] [int] NOT NULL,
    	[data] [date] NOT NULL,
    	[importo_rata] [money] NOT NULL,
    	[capitale_residuo] [money] NOT NULL,
    	[statorata] [bit] NULL CONSTRAINT [DF_RATE_PIANO_statorata]  DEFAULT ((0)),
    	[datavaluta] [date] NULL,
     CONSTRAINT [PK_RATE_PIANO] PRIMARY KEY CLUSTERED 
    (
    	[pk_id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO

    la rata n. 0 è memorizzato il totale finanziato e poi 10 rate a scalare.

    Spero di essere stato abbastanza chiaro.

    grazie 1000.

    Luigi.

     
    venerdì 12 dicembre 2014 14:09
  • Ciao Luigi,
    in occasione del thread sul grafico sull'altro forum ho nel mio pc parte del tuo database.
    Adesso ho aggiunto 2 record per fare una prova popolando con i seguenti valori:
    capitale_residuo importo_rata
    125,0000 25,0000
    100,0000 25,0000

    Con la tua query ottengo come TOTALE giustamente -175,0000

    A questo punto non saprei come aiutarti, la query funziona correttamente.

    Ciao


    Paolo Pranzo

    venerdì 12 dicembre 2014 14:30
  • Ho dimenticato un pezzo tutti i miei valori sono con il meno nel grafico. nel senso che se imposto così

    sum(-RATE_PIANO.capitale_residuo + RATE_PIANO.importo_rata) AS TOTALE tutti con il "-" se imposto così

    sum(+RATE_PIANO.capitale_residuo - RATE_PIANO.importo_rata) AS TOTALE tutti con il "+".

    Luigi.

    venerdì 12 dicembre 2014 14:40
  • La funzione sum effettua la somma algebrica,
    quindi devi solo controllare i valori dei due campi che la query restituisce.

    Nel mio esempio è come se facessi:
    (- 125,000 + 25,0000) + (- 100,0000 +25,000) 

    Paolo Pranzo

    venerdì 12 dicembre 2014 14:54
  • Altrimenti proverei così date queste 2 query con totale1 e totale2 dove totale1 stà per l'entrate quindi le rate e totale2 stà per le uscite quindi come posso impostare il risultato di queste 2 query ottenendo questa operazione:

    -TOTALE2 + TOTALE1 AS TOTALEDEFINITIVO?

    SELECT        CONVERT(varchar(02), MONTH(RATE_PIANO.data)) + ' ' + CONVERT(varchar(04), YEAR(RATE_PIANO.data)) AS MESECOMPLETO, SUM(RATE_PIANO.importo_rata) AS TOTALE1
    FROM          RATE_PIANO INNER JOIN
                  FINANZIAMENTI ON RATE_PIANO.num_fin = FINANZIAMENTI.NUM_FIN
    WHERE         (RATE_PIANO.data BETWEEN '2013-01-01' AND '2014-12-31') AND (FINANZIAMENTI.STATUS NOT IN ('AN', 'P')) 
    GROUP BY MONTH (RATE_PIANO.data), YEAR(RATE_PIANO.data)
    
    SELECT        CONVERT(varchar(02), MONTH(RATE_PIANO.data)) + ' ' + CONVERT(varchar(04), YEAR(RATE_PIANO.data)) AS MESECOMPLETO, SUM(RATE_PIANO.capitale_residuo) AS TOTALE2
    FROM          RATE_PIANO INNER JOIN
                  FINANZIAMENTI ON RATE_PIANO.num_fin = FINANZIAMENTI.NUM_FIN
    WHERE         (RATE_PIANO.data BETWEEN '2013-01-01' AND '2014-12-31') AND (FINANZIAMENTI.STATUS NOT IN ('AN', 'P')) AND (RATE_PIANO.num_rata = '0')
    GROUP BY MONTH (RATE_PIANO.data), YEAR(RATE_PIANO.data)

    venerdì 12 dicembre 2014 15:09
  • Ma i valori delle due colonne (capitale_residuo e importo_rata) sono sempre positivi?

    Paolo Pranzo

    • Contrassegnato come risposta glider77 sabato 13 dicembre 2014 14:40
    venerdì 12 dicembre 2014 15:15
  • Si in tabella sono sempre positivi.
    • Contrassegnato come risposta glider77 sabato 13 dicembre 2014 14:40
    • Contrassegno come risposta annullato glider77 sabato 13 dicembre 2014 14:40
    venerdì 12 dicembre 2014 15:38
  • Ciao ragazzi ho risolto il problema, data la giusta osservazione di Paolo se i numeri capitale_residuo e importo rata erano tutti positivi era la risposta alla soluzione al mio problema.

    La colonna capitale_residuo infatti sono le uscite, essendo un numero positivo non poteva mai rappresentarmi nel grafico una uscita con il segno -, modificando con una query update il campo capitale ove contiene l'intero importo finanziato con il segno - ho risolto.

    Quindi la query come accennato da Paolo doveva funzionare.

    SELECT CONVERT(varchar(02), MONTH(RATE_PIANO.data)) + ' ' + CONVERT(varchar(04), YEAR(RATE_PIANO.data)) AS MESECOMPLETO, SUM(RATE_PIANO.capitale_residuo + RATE_PIANO.importo_rata) AS TOTALE
                            FROM RATE_PIANO INNER JOIN
                            FINANZIAMENTI ON RATE_PIANO.num_fin = FINANZIAMENTI.NUM_FIN
                            WHERE (RATE_PIANO.data BETWEEN @data1 AND @data2) AND (FINANZIAMENTI.STATUS IN ('A', 'X'))  
                            GROUP BY MONTH (RATE_PIANO.data), YEAR(RATE_PIANO.data)

    ovviamente non metto nessun segno - davanti a "RATE_PIANO.capitale_residuo" in quanto già negativo nel db.

    ottenendo (- Valuta1 + Valuta2 = -Risultato) ovviamente graficamente non sempre è negativo il mese meno male! :P. 

    Grazie a tutti alla prossima.

    Luigi.


    • Contrassegnato come risposta glider77 sabato 13 dicembre 2014 14:40
    • Modificato glider77 sabato 13 dicembre 2014 14:43 Correzione query risolutiva
    sabato 13 dicembre 2014 14:40