Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    SQL eseguire somma di valori su righe diverse

    Ciao a tutti,
    perdonatemi ma non ne vengo a capo.

    Ho un database (sul quale non posso fare modifiche) che contiene dati in questo formato.
    Nome Qty Data
    A 10 01/01/2020
    A 8 02/01/2020
    A 12 03/01/2020
    B 20 01/01/2020
    B 18 02/01/2020
    B 16 03/01/2020
    C 30 01/01/2020
    C 40 02/01/2020
    C 50 03/01/2020


    Dal quale ho bisogno di sommare le qty di A e B per ogni giorno e il totale dividerlo per il valore di C.
    Come faccio?!?

    Grazie in anticipo!
    La vita è bella perché tutto fa brodo
    Cerchi un angolo di paradiso? Vieni a Crealla!

  2. #2
    di quale sql stiamo parlando?

  3. #3
    E' un Microsfot SQL Server.
    La vita è bella perché tutto fa brodo
    Cerchi un angolo di paradiso? Vieni a Crealla!

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da silgmaris Visualizza il messaggio
    SQL eseguire somma di valori su righe diverse
    ........ sommare le qty di A e B per ogni giorno e il totale dividerlo per il valore di C. .........
    Comincia a portare i valori sulla stessa riga
    SELECT Sum( CASE WHEN Nome = 'A' THEN Qty ELSE 0 END ) , .......... FROM NomeTabella GRIOP BY Data ;


    Naturalmente se nel campo "Nome" hai altri valori oltre ad A, B, oppure C allora cambia tutto

    .
    Ultima modifica di nman; 28-02-2020 a 00:16

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    519
    Codice PHP:
    DECLARE @tbl TABLE
    (
      
    Qta          float
    Cod_Art      varchar(20)
    DDif         varchar(20)
    );

    INSERT INTO @tbl Cod_ArtQta,  DDif )
    SELECT 'A',   10,  '01/01/2020' UNION ALL
    SELECT 
    'A',   ,  '02/01/2020' UNION ALL
    SELECT 
    'A',   12,  '03/01/2020' UNION ALL
    SELECT 
    'B',   20,  '01/01/2020' UNION ALL
    SELECT 
    'B',   18,  '02/01/2020' UNION ALL
    SELECT 
    'B',   16,  '03/01/2020' UNION ALL
    SELECT 
    'C',   30,  '01/01/2020' UNION ALL
    SELECT 
    'C',   40,  '02/01/2020' UNION ALL
    SELECT 
    'C',   50,  '03/01/2020';

    SELECT DDifsum(Qta) AS Qta FROM @tbl WHERE Cod_Art 'A' OR Cod_Art 'B' GROUP BY DDif;

    SELECT DDifsum(Qta) AS Qta FROM @tbl WHERE Cod_Art 'C' GROUP BY DDif;

    SELECT DDifsum(Qta) / (
      
    SELECT sum(Qta) AS Qta FROM @tbl t2 WHERE Cod_Art 'C' AND t1.DDif t2.DDif GROUP BY DDif )
    AS 
    Qta FROM @tbl t1 WHERE Cod_Art 'A' OR Cod_Art 'B' GROUP BY DDif;

    la prima select restituisce (per controllo)
    01/01/2020 30
    02
    /01/2020 26
    03
    /01/2020 28

    la seconda select restituisce 
    (per controllo)
    01/01/2020 30
    02
    /01/2020 40
    03
    /01/2020 50

    la terza select restituisce il risultato
    01
    /01/2020 1
    02
    /01/2020 0,65
    03
    /01/2020 0,56 

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    codice:
    DECLARE @tbl TABLE
    (
      Qta          float
    , Cod_Art      varchar(20)
    , DDif         varchar(20)
    );
    
    
    INSERT INTO @tbl ( Cod_Art, Qta,  DDif )
    VALUES
    ('A',   10,  '01/01/2020'),
    ('A',   8 ,  '02/01/2020'),
    ('A',   12,  '03/01/2020'),
    ('B',   20,  '01/01/2020'),
    ('B',   18,  '02/01/2020'),
    ('B',   16,  '03/01/2020'),
    ('C',   30,  '01/01/2020'),
    ('C',   40,  '02/01/2020'),
    ('C',   50,  '03/01/2020')
    ;
    
    
    
    
    SELECT  
    DDif, 
    SUM(CASE WHEN Cod_Art = 'A' THEN Qta ELSE 0 END) AS Ax,
    SUM(CASE WHEN Cod_Art = 'B' THEN Qta ELSE 0 END) AS Bx,
    SUM(CASE WHEN Cod_Art = 'C' THEN Qta ELSE 0 END) AS Cx,
    ((SUM(CASE WHEN Cod_Art = 'A' THEN Qta ELSE 0 END)) + (SUM(CASE WHEN Cod_Art = 'B' THEN Qta ELSE 0 END))) / (SUM(CASE WHEN Cod_Art = 'C' THEN Qta ELSE 0 END)) AS Raoporto
    FROM @tbl 
    GROUP BY 
    DDif
    ;

  7. #7
    Intanto grazie, ci provo!
    La vita è bella perché tutto fa brodo
    Cerchi un angolo di paradiso? Vieni a Crealla!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.