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

    Problema Sql server 2005 su MS SBS 2003

    Salve ragazzi

    Ho un problemino copiando dati usando il query analizer

    questa è la mia tabella "DEBITI":
    codice nome anno debito totale
    01 luca 2006 45 140
    02 sergio 2006 75 562
    03 marco 2006 50 874
    01 luca 2007 185 654
    02 sergio 2007 637 894
    03 marco 2007 924 984
    01 luca 2008
    02 sergio 2008
    03 marco 2008

    devo copiare il totale del anno 2007 sul campo debito 2008
    ho provato cosi:

    ;UPDATE DEBITI SET DEBITO = TOTALE WHERE ANNO = 2007
    ;UPDATE DEBITI SET DEBITO IN (SELECT DEBITO WHERE ANNO = 2008) = TOTALE WHERE ANNO = 2007

    ovviamente non mi funziona,, avrei bisogno di qualcosa di simile, aiutatemi!!!
    Grazie del vostro tempo

    Solidus
    -----------------
    R.I.P. Kurt Cobain

  2. #2
    volevo solo fare un po di ordine, nel messaggio di prima non si capisce l'ordine dei dati

    codice| nome deb | anno | debito | totale
    01_____ luca_____ 2006____ 45___ 140
    02_____ sergio____ 2006___ 75____ 562
    03_____ marco____ 2006___ 50____ 874
    01_____ luca______2007___ 185___ 654
    02_____ sergio____ 2007___ 637___ 894
    03_____ marco____ 2007___ 924___ 984
    01_____ luca_____ 2008____ X
    02_____ sergio____ 2008____ X
    03_____ marco____ 2008____ X
    -----------------
    R.I.P. Kurt Cobain

  3. #3
    prova questo

    UPDATE prova AS p1, prova AS p2 SET p1.debito = p2.totale
    WHERE p2.codice=p1.codice And p2.anno=2007 And p1.anno=2008

  4. #4
    Grazie, provo subito e ti faccio sapere!
    -----------------
    R.I.P. Kurt Cobain

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da solidus.it
    volevo solo fare un po di ordine, nel messaggio di prima non si capisce l'ordine dei dati

    codice| nome deb | anno | debito | totale
    01_____ luca_____ 2006____ 45___ 140
    02_____ sergio____ 2006___ 75____ 562
    03_____ marco____ 2006___ 50____ 874
    01_____ luca______2007___ 185___ 654
    02_____ sergio____ 2007___ 637___ 894
    03_____ marco____ 2007___ 924___ 984
    01_____ luca_____ 2008____ X
    02_____ sergio____ 2008____ X
    03_____ marco____ 2008____ X
    Per questo esistono i tag [code] e [/code] (pulsantino # quando scrivi i messaggi). Per mantenere il carattere monospaced e tutti gli spazi. Qui sotto puoi vedere la differenza:

    codice:
    codice   nome     anno   debito   totale
    ----------------------------------------
    01       luca     2006       45      140
    02       sergio   2006       75      562
    03       marco    2006       50      874
    01       luca     2007      185      654
    02       sergio   2007      637      894
    03       marco    2007      924      984
    01       luca     2008      ...      ...
    02       sergio   2008      ...      ...
    03       marco    2008      ...      ...
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    molto utile, grazie
    -----------------
    R.I.P. Kurt Cobain

  7. #7
    ciao passatore, ho provato, ma come sospettavo mi da errore:

    ;UPDATE prova AS p1, prova AS p2 SET p1.debito = p2.totale
    WHERE p2.codice=p1.codice And p2.anno=2007 And p1.anno=2008

    Sintassi non corretta in prossimità della parola chiave 'AS'

    qualche consiglio?
    -----------------
    R.I.P. Kurt Cobain

  8. #8
    ho provato lo stesso codice su mysql e funziona, ma come posso fare per farlo funzionare su ms sql server?

    update prova as p1, prova as p2 set p1.debito=p2.totale where p1.anno=2008 and p2.anno=2007 and p1.codice=p2.codice

    Aiutatemi!!!
    -----------------
    R.I.P. Kurt Cobain

  9. #9
    per SQL Server 2005 (ho provato direttamente)

    UPDATE debiti
    SET debiti.debito = d2.totale
    FROM debiti, debiti AS d2
    WHERE d2.codice = debiti.codice
    AND debiti.anno = 2008 AND d2.anno = 2007

    oppure

    UPDATE debiti
    SET debiti.debito = d2.totale
    FROM debiti INNER JOIN debiti AS d2
    ON d2.codice = debiti.codice
    WHERE debiti.anno = 2008 AND d2.anno = 2007

    che sono la stessa cosa con il join scritto in maniera diversa

  10. #10
    sei un grande passatore
    funziona, grazie davvero
    ti devo un favore, se hai bisogno di qualcosa, io lavoro con photoshop e frontpage

    Ciaooo
    -----------------
    R.I.P. Kurt Cobain

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.