0
我有這樣的查詢:可變標申報錯誤
declare @cols AS NVARCHAR(MAX);
declare @query AS NVARCHAR(MAX);
declare @tahun AS VARCHAR(4);
declare @pks AS VARCHAR(2);
declare @bulan AS VARCHAR(2);
set @tahun = '2016';
set @pks = '40';
set @bulan = '11';
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.asal)
FROM (
SELECT
cpo.tanggal,
dg.asal,
(((((cpo - ongkos_ms)* CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))) +((pko - ongkos_is)* CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))))-(447.6 * ((CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0)))+(CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))))))-(((((cpo - ongkos_ms)* CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))) +((pko - ongkos_is)* CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))))-(447.6 * ((CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0)))+(CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0)))))) * 0.02))
as harga_beli_tbs_bersih
FROM
PROD.dbo.[TBSP3.HargaCPOPKO] cpo
LEFT JOIN PROD.dbo.daily_GUUXX AS dg ON CONVERT (datetime, dg.tglolah, 103) = cpo.tanggal
LEFT JOIN PNL_TR_HARGA_KOMODITI AS ko ON ko.tanggal = cpo.tanggal
WHERE
YEAR (cpo.tanggal) >= @tahun and [email protected] and month(cpo.tanggal)[email protected]
) c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
set @query = 'SELECT tanggal, ' + @cols + ' from
(
SELECT
cpo.tanggal,
dg.asal,
(((((cpo - ongkos_ms)* CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))) +((pko - ongkos_is)* CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))))-(447.6 * ((CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0)))+(CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))))))-(((((cpo - ongkos_ms)* CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))) +((pko - ongkos_is)* CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0))))-(447.6 * ((CAST(NULLIF(dg.minyak_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0)))+(CAST(NULLIF(dg.inti_efektif,0) as float)/(NULLIF(dg.tbs_diolah, 0)))))) * 0.02))
as harga_beli_tbs_bersih
FROM
PROD.dbo.[TBSP3.HargaCPOPKO] cpo
LEFT JOIN PROD.dbo.daily_GUUXX AS dg ON CONVERT (datetime, dg.tglolah, 103) = cpo.tanggal
LEFT JOIN PNL_TR_HARGA_KOMODITI AS ko ON ko.tanggal = cpo.tanggal
WHERE
YEAR (cpo.tanggal) >= '[email protected]tahun +' and pks='+ @pks +' and month(cpo.tanggal)='[email protected]+'
) x
pivot
(
max(harga_beli_tbs_bersih)
for asal in (' + @cols + ')
) p ';
exec (@query);
end
當我運行它,我得到一個錯誤:
[Err] 42000 - [SQL Server] Must declare the scalar variable "@tahun"
我已經嘗試過所有類型的變量聲明,但我仍然得到那個錯誤。我仍然是SQL查詢的新手。提前致謝!