将varchar值'“&Variable.Text&”'转换为数据类型int时转换失败

时间:2019-06-27 09:05:00

标签: sql sql-server

在使用此修订的查询时,我发现尝试将变量应用于WHERE语句时遇到了转换错误。感谢您的帮助。

我试图输入变量持有的实际值,并且查询工作正常,但是当尝试替换数字时(如我在“ AND”之后对代码段所做的操作一样,出现以下错误) 。数据本质上是年和月的组合,读取为2018011、2018012、2019001、2019002等...

Select *
 From (
        SELECT A_TABLE.BU_CODE
              ,A_TABLE.ACCNT_CODE 
              ,A_TABLE.PERIOD
              ,A_TABLE.REPORT_AMT
              ,A_TABLE.TREFERENCE
              ,A_TABLE.DESCRIPTN
              ,A_TABLE.ANAL_T0
              ,'A' MEASURE 
        FROM  A_TABLE WHERE (A_TABLE.ANAL_T0 = 'B80' AND A_TABLE.PERIOD BETWEEN 2019001 AND '"&Variable.text&"')
        UNION ALL
        SELECT B_TABLE.BU_CODE
              ,B_TABLE.ACCNT_CODE
              ,B_TABLE.PERIOD
              ,B_TABLE.REPORT_AMT
              ,B_TABLE.TREFERENCE
              ,B_TABLE.DESCRIPTN
              ,B_TABLE.ANAL_T0  
             ,'B' MEASURE 
        FROM B_TABLE WHERE (B_TABLE.ANAL_T0 = 'B80' AND B_TABLE.PERIOD BETWEEN 2019001 AND '"&Variable.text&"')
      ) src
PIVOT ( SUM(REPORT_AMT) FOR MEASURE IN ([A], [B])  ) AS PivotTable

我在执行上述操作时收到此错误消息。

  

转换varchar值时转换失败   '“&Variable.Text&”'数据类型为int。

我现在已尝试添加此内容,但进一步导致了错误。

Declare @CBal Int
Set @CBal = '"&Variable.Text&"'

该软件位于其中-在简单的SELECT FROM WHERE查询中,我可以使用上面的软件,例如这没问题

SELECT * FROM A_TABLE WHERE A_TABLE.PERIOD BETWEEN '"&Variable.Text&"' AND '"&Variable.Text&"'

1 个答案:

答案 0 :(得分:0)

首先,您应该将日期过滤器放在单个倒逗号内,即“ 2019001”。其次,“&Variable.Text&”应该是日期格式,而不是字符串。

如果要第二次传递变量,请使用正确的语法。