Поскольку in_suppliertaxid
является строкой, вам нужно заключить ее в кавычки.
Но вместо этого вы можете установить переменную сеанса и обратиться к ней в SQL.
SET @in_suppliertaxid = in_suppliertaxid;
SET @v = concat('SELECT suppliertaxid
, sum(totalvalue)
, sum(taxablevalue)
, sum(vatvalue) INTO @suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @VATvalue
FROM ',in_tabelaefaturaaquisicoesFornecedor,'
where invoicetype in (''FT'',''FR'',''FS'',''ND'',''VD'',''TV'',''OU'')
and invoicestatus like ''REGISTADA''
and suppliertaxid= @in_suppliertaxid');
Также нет необходимости в GROUP BY
и ORDER BY
.Вы группируете по тому же столбцу, который выбираете в предложении WHERE
, поэтому будет только одна строка.
В запросе INSERT
вы пропускаете )
вконец списка VALUES
.
SET @v = concat('SELECT suppliertaxid
, sum(totalvalue)
, sum(taxablevalue)
, sum(vatvalue) INTO @suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @VATvalue
FROM ',in_tabelaefaturaaquisicoesFornecedor,'
where invoicetype in (''FT'',''FR'',''FS'',''ND'',''VD'',''TV'',''OU'')
and invoicestatus like ''REGISTADA''
and suppliertaxid=',in_suppliertaxid,'
group by suppliertaxid
order by sum(totalvalue) desc, sum(taxablevalue) desc, sum(VATvalue) desc');
PREPARE stm FROM @v;
EXECUTE stm;
DEALLOCATE PREPARE stm;
set @insert_top_suppliers = concat('insert into ',in_tabelaMaioresAquisicoesFornecedor ,'(suppliertaxid
, FT_totalvalue
, FT_taxablevalue
, FT_VATvalue
, NC_totalvalue
, NC_taxablevalue
, NC_VATvalue
, totalvalue
, taxablevalue
, VATvalue)
values
(@suppliertaxid, @FT_totalvalue, @FT_taxablevalue, @FT_VATvalue,null,null,null,null,null,null)');