Grazie toki per la risposta!
perdonami, devo "incalzarti" perchè mi è poco chiaro come iterare su una tabella senza usare cicli (e soprattutto quando la chiave non è un intero).
se posso andrei a copiare ed incollare un esempio.
questo è l'esempio usando i cursori:
DECLARE report_crs_grn CURSOR LOCAL STATIC FOR
select grn_line.grn_num, grn_line.grn_line, qty_rec
from proj
inner join projmatl on projmatl.proj_num = proj.proj_num
inner join grn_line on grn_line.po_num = projmatl.ref_num and grn_line.po_line = projmatl.ref_line_suf
where proj.Uf_ProjClass BETWEEN @pProjClassStarting AND @pProjClassStarting
and projmatl.ref_type = 'P'
and grn_line.qty_rec > 0
OPEN report_crs_grn
WHILE 1 = 1
BEGIN
FETCH report_crs_grn INTO
@GrnNum,
@GrnLine,
@QtyRec
IF @@FETCH_STATUS = -1 BREAK
if not exists(select 1 from vch_item where vch_item.grn_num = @GrnNum and vch_item.grn_line = @GrnLine and vch_item.z380rcvd_date between @FromData and @ToData) begin
select @Baf = @Baf + isnull((@QtyRec * poitem.item_cost),0)
from grn_line
inner join poitem on poitem.po_num = grn_line.grn_num and poitem.po_line = grn_line.grn_line
end
END --WHILE 1 = 1
CLOSE report_crs_grn
DEALLOCATE report_crs_grn
------------------------------------------------------------------
abbastanza base credo.
la select iniziale posso inserirla in una tabella temporanea, per esempio, di tipo variabile.
ma poi, anche usando while, come posso girare sulla tabella ed eseguire l'if not exists, per esempio.
grazie e perdona il disturbo
V.