Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11

    [T-SQL] UPDATE di una tabella

    Ciao ragazzi!

    Mi servirebbe gestire in una Stored procedure T-SQL l’UPDATE di una tabella:
    in particolare vorrei creare una tabella che viene popolata con dei dati di ordini degli ultimi 3 mesi.
    Io prelevo i dati da una tabella dove ho già un campo del tipo M1 per il mese “M-1”, M2 per il campo “M-2”, ecc…
    La tabella ora funziona, ed aggiorna i dati ogni mese con i 3 mesi precedenti, ma mi servirebbe EVITARE il mese di Agosto: se ad esempio sono ad ottobre, a me servirebbe utilizzare solo SETTEMBRE-LUGLIO-GIUGNO (quindi M1, M2,M4), stessa cosa per novembre, in cui mi servirà usare dinamicamente OTTOBRE-SETTEMBRE-LUGLIO (che a novembre saranno M1, M2,M4), idem per i mesi successivi..

    Ora utilizzo un’istruzione del tipo:

    SELECT Clienti.User_ID, Sum([Orders].Ordini, [Orders].PERIODO
    INTO #DW_TREND_OM
    FROM Cleinti LEFT OUTER JOIN
    [Orders] ON Clienti.User_ID = [Orders].[ID]
    WHERE PERIODO='M1'
    GROUP BY lienti.User_ID, [Orders].PERIODO;

    idem per il mese successivo con: WHERE PERIODO='M2' e per il terzo mese, con lo stesso codice ma con WHERE PERIODO='M3'

    Avete qualche suggerimento??
    Va bene usare una IF dentro la WHERE?? Io non ci sono riuscito...
    Ringrazio fin d’ora per il vostro aiuto!
    Se servono altre, info, screenshot di tabelle, fatemi sapere
    Un caro saluto

    Marco

  2. #2

    Re: [T-SQL] UPDATE di una tabella

    Originariamente inviato da marco789
    .....
    Va bene usare una IF dentro la WHERE?? Io non ci sono riuscito...
    .......
    se parli di t-sql è sql server giusto ?
    se è cosi puoi usare "case" (vedi la guida per il funzionamento)

    HTH

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11

    Re: [T-SQL] UPDATE di una tabella


    SELECT Clienti.User_ID, Sum([Orders].Ordini, [Orders].PERIODO
    INTO #DW_TREND_OM
    FROM Cleinti LEFT OUTER JOIN
    [Orders] ON Clienti.User_ID = [Orders].[ID]
    WHERE PERIODO='M1'
    GROUP BY lienti.User_ID, [Orders].PERIODO;
    le tabella di origine sono queste in allegato:
    Immagini allegate Immagini allegate

  4. #4

    Re: Re: [T-SQL] UPDATE di una tabella

    Originariamente inviato da marco789
    le tabella di origine sono queste in allegato:
    mostra come la scriveresti tu usando la IF

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11
    SELECT Clienti.User_ID, Sum([Orders].Ordini, [Orders].PERIODO
    INTO #DW_TREND_OM
    FROM Cleinti LEFT OUTER JOIN
    [Orders] ON Clienti.User_ID = [Orders].[ID]
    WHERE
    (
    IF (Orders.[month]<>'8')
    B.PERIODO='M1'
    ELSE IF ([Orders].[month]='8')
    B.PERIODO='M2'
    )
    GROUP BY Clienti.User_ID, [Orders].PERIODO;

    Lo stesso problema si presenta per le colonne successive, in cui selezionerò i mesi M2 e M3, per cui mi servirebbe anche "tener traccia dei mesi che ho già utilizzato", per non usarli 2 volte..
    Grazie!

  6. #6
    Originariamente inviato da marco789
    ...
    WHERE
    (
    IF (Orders.[month]<>'8')
    B.PERIODO='M1'
    ELSE IF ([Orders].[month]='8')
    B.PERIODO='M2'
    )

    Lo stesso problema si presenta per le colonne successive, in cui selezionerò i mesi M2 e M3, per cui mi servirebbe anche "tener traccia dei mesi che ho già utilizzato", per non usarli 2 volte..
    la where si traduce così :
    codice:
    WHERE 
    B.Periodo= case when Orders.[month]<>'8'
                          then 'M1' 
                         else case when [Orders].[month]='8'
                                      then 'M2' end
                  end 
    from dbo.tbM2Status
    ...il resto non l'ho capito

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.