>il messaggio di errore è che il campo data non fa parte di una
>funzione di aggregazione o di group by
>se aggioungo group by data , non mi ritorna nessun record
Io ho provato ad inserire qualche record di prova e ho provato la tua query. Mi funziona, non capisco il problema.
SELECT
MAX(numero)
FROM
fatture
WHERE
year(data) = 2008
sicuro che la query che lanci non abbia altri campi non aggregati nella select?
>io ho inserito come campo cliente idcliente così la tabella fattura
>e legata al cliente, ma se per caso cambio i dati del cliente
>e richiamo una vecchia fattura i dati che mi compariranno saranno
>quelli nuovi, come mi devo comportare?
Questo è un classico problema. Se tieni la relazione semplicemente, ad ogni cambiamento del cliente tutte le fatture legate saranno coinvolte nel cambiamento e quindi perdi la storia di quanto accaduto. Di solito si tende a fare una tabella che contenga la situazione effettivamente salvata, anche denormalizzata, che però renda persistente i dati salvati al momento nel tempo. Ad esempio, se hai una Fatture_Testata ed una Fatture_Dettaglio, puoi pensare ad una Fatture_Storico in cui non salverai gli id del cliente, ma il nome o la ragione sociale. In questo modo, salvandoti anche le date ovviamente, avrai la storia delle fatture senza perdere tracciabilità.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org