【发布时间】:2021-06-23 17:17:54
【问题描述】:
我正在尝试基于参数引用表列。我的 where 子句的最后一行是
'GRAD_' +LEFT(@REPORTING_DATE-20000,4) LIKE '%' + @PROGRAM + '%'
我希望我的代码看起来像 GRAD_2018 LIKE '%BIOL%',但是当我运行代码时,我在结果集中得到一个“0”,我知道我应该得到 18。
下面是我的示例代码
DECLARE
@REPORTING_DATE INT,
@PROGRAM VARCHAR(4)
SET @REPORTING_DATE = '20201101'
SET @PROGRAM = 'BIOL'
SELECT COUNT(ID)
FROM PROGRAM_DATA
WHERE PROGRAM LIKE '%' + @PROGRAM + '%' AND REPORT_DATE IN (@REPORTING_DATE-60000) AND
'GRAD_' +LEFT(@REPORTING_DATE-20000,4) LIKE '%' + @PROGRAM + '%'
我正在使用 MSSQL 和 SSRS。
【问题讨论】:
-
需要这样做表明您的数据模型存在缺陷。您将值存储在应位于单独行中的列中。
-
你不是也想把@PROGRAM 当作一列吗?如果不是,那么
@PROGRAM LIKE '%' + @PROGRAM + '%'毫无意义,因为(用文字替换变量)'BIOL' 总是像'%BIOL%'。您对IN的使用也会误导读者,因为您过滤了一个特定值 - 可以很容易地用相等替换 (REPORT_DATE = ...) -
我拥有的数据表的格式不正确,无法满足我的要求,因此我对其进行了修改,以便能够运行正确的脚本。
标签: sql sql-server reporting-services parameters where-clause