Grazie per la risposta, in effetti non sono stato molto chiaro...
In ogni caso ho completato la storedprocedure che è la seguente:
ALTER PROCEDURE dbo.PRE2_CalcolaMaterialeInUso
(
@preventivo int
)
AS
INSERT INTO TMaterialeInUso(preventivo, materiale, quantita, datauscita, datarientro, stato)
SELECT TPreventiviMateriale2.preventivo, TPreventiviMateriale2.chiaveCatalogo AS materiale,
((select (case when sum(quantita) is null then 0 else sum(quantita) end) from tddtmateriale where tddtmateriale.preventivo = @preventivo
and tddtmateriale.chiavecatalogo = TPreventiviMateriale2.chiaveCatalogo)
- (select (case when sum(quantita) is null then 0 else sum(quantita) end) from tddrmateriale where tddrmateriale.preventivo = @preventivo
and tddrmateriale.chiavecatalogo = TPreventiviMateriale2.chiaveCatalogo))
as quantita,
TPreventivi2.uscita AS datauscita,
TPreventivi2.rientro AS datarientro, 1 AS stato
FROM TPreventiviMateriale2 INNER JOIN TPreventivi2 ON TPreventiviMateriale2.preventivo = TPreventivi2.chiave
WHERE (TPreventiviMateriale2.preventivo = @preventivo) and (((select (case when sum(quantita) is null then 0 else sum(quantita) end) from tddtmateriale where tddtmateriale.preventivo = @preventivo
and tddtmateriale.chiavecatalogo = TPreventiviMateriale2.chiaveCatalogo)
- (select (case when sum(quantita) is null then 0 else sum(quantita) end) from tddrmateriale where tddrmateriale.preventivo = @preventivo
and tddrmateriale.chiavecatalogo = TPreventiviMateriale2.chiaveCatalogo))) > 0
RETURN
quello che non mi piace tanto è il fatto di dover rimettere nella clausola WHERE le select per ricalcolare la SUM del materiale, però amen non saprei come fare diversamente.
per quel che riguarda il farlo tramite codice C# l'avrei fatto lato server in ogni caso, non il server di database, ma quello IIS dove è in hosting l'applicativo, quindi sul client non ci sarebbero state operazioni onerose.
grazie mille per l'aiuto e se c'è qualche osservazione da fare sulla stored procedure è ben accetta!