Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [SQL Server 2005]Substring e somme

    Ciao a tutti,

    io ho una tabella di questo tipo

    SEDE_TECNICA------CODE-----TOT
    A/B/C/D-----------------D----------5
    A/B/C/D/E---------------E----------4
    A/B/C/D/E/F-------------E----------1

    ecco io dovrei riuscire a sommare i totali in modo da avere poi una tabella così

    SEDE_TECNICA------CODE-----TOT
    A/B/C/D-----------------D----------10


    praticamente dovrei vedere i dati aggregati al 3° livello.... come posso fare?


    ciao e grazie!

  2. #2

  3. #3
    a me serve fare le somme da tutti i terzo livello in giù..


    A/B/C/
    ------C1/
    ------C2/
    ------C3/


    PIPPO/PLUTO/PAPERINO/
    -----------------------1/
    -----------------------2/

    ecc ecc...

    per tutti i figli del 3° livello devo raggruppare e sommare i totali a livello dei padri....

    ora sto usando il substring.....

  4. #4
    ancora non ci sono riuscito....


    provo a rispiegarmi...
    io ho una tabella di questo tipo...

    SEDE----------------------CODICE--------TOTALE
    H/CL/DI/CA/MAC5----------MAC5-------------7
    H/CL/DI/CA/MAC5/XY-------XY---------------2
    H/CL/DI/CA/MAC6----------MAC6-------------8
    H/CL/DI/CA/MAC6/ZZ-------ZZ---------------1
    H/CL/DI/CA/MAC9/AA-------AA---------------5

    io devo raggruppare le somme dal 4° livello in giu..quindi tipo da H/CL/DI/CA/MAC5...

    e in questa riga....quindi per codice MAC5, il totale (7), è gia la somma dei valori trovati nei record a livello di MAC5 e i suoi figli (XY)...quindi questa riga potrei già prenderla per esempio usando
    having (len(SEDE) - len(replace(SEDE, '/', ''))) <= 4

    il mio problema è la riga tipo
    H/CL/DI/CA/MAC9/AA-----AA-------------5
    che non ha padre... (H/CL/DI/CA/MAC9 non c'è) ma che deve essere presa comunque!
    quindi conlcudeno io dovrei riuscire ad avere unatabella come questa


    SEDE----------------------CODICE--------TOTALE
    H/CL/DI/CA/MAC5----------MAC5-------------7
    H/CL/DI/CA/MAC6----------MAC6-------------8
    H/CL/DI/CA/MAC9---------MAC9-------------5

    come posso fare????

  5. #5
    la radice H/CL/DI/CA/ è comune a TUTTI i record?

  6. #6
    assolutamente si

    H/CL/DI/CA/ mac1/a
    H/CL/DI/CA/ mac2/b
    H/CL/DI/CA/ mac3/c

    il mio problema è che su ogni sotto ramo di H/CL/DI/CA/ si possono inserire dei valori..tipo

    H/CL/DI/CA/ mac1------2
    H/CL/DI/CA/ mac1/a----4
    totale 6
    H/CL/DI/CA/ mac2------9
    H/CL/DI/CA/ mac2/b----7
    totale 16
    H/CL/DI/CA/ mac3
    H/CL/DI/CA/ mac3/b----3
    totale 3 (qui per esempio il valore è solo nel ramo "b"..ed è il mio problema perchè non so come prenderlo)


    ..e io poi devo raggruppare questi valori presentandoli tutti in

    H/CL/DI/CA/mac1----6
    H/CL/DI/CA/mac2----16
    H/CL/DI/CA/mac3----3
    ...ecc...

  7. #7
    ok. visto che lavori con 2005, potrai fare una replace della radice (che è fissa) con '' (niente), in modo tale da eliminare la radice. poi eliminerai tutto ciò che segue la prima barra (in effetti leggendo SOLO quello che c'è prima della prima barra). a questo punto il gioco è fatto.

  8. #8
    si può funzionare.....ora provo..thanks!

  9. #9
    forse però avrei un problema facendo come dici...

    io nella tabella ho

    H/CL/DI/CA/ mac1------6 --> che è già il totale
    H/CL/DI/CA/ mac1/a----4

    ecc..

    se faccio così mi sa che mi ritrovo

    mac1------6
    mac1----4

    mentre alla fine dovrei avere solo

    mac1------6

    o sbaglio?

    potrei però tenere solo il record con la stessa "SEDE" e con il TOT più alto....

  10. #10
    fatti una tabella d'appoggio con una nuova colonna 'subsede' che contiene solo i vari mac1, mac2, ecc. poi GROUP BY subsede

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 © 2025 vBulletin Solutions, Inc. All rights reserved.