【发布时间】:2021-04-22 13:03:40
【问题描述】:
我正在尝试在 LIKE 语句中使用数值变量,但我不知道如何将数据更改为数值。
在我们开始之前,我很抱歉,因为我无法复制表结构,因为我正在使用不允许我看到它的“SQL 环境”,所以我会尽力解释它。
我有两张桌子:
- 示例表
桌子上的代码:
SELECT sample_number,project,status,template,parent_aliquot,C_DUE_DATE_2
FROM SAMPLE
ORDER BY SAMPLE_NUMBER DESC
- KPS_SMP_DUE_DATE_WEEK_PIVOT_VW
桌子上的代码:
select *
from KPS_SMP_DUE_DATE_WEEK_PIVOT_VW
where project = 'S/180308/01'
此表中的重要字段是“PROJECT”、“PRODUCT”和“YEAR”。表格右侧的字段并不重要。
我有这个代码:
SELECT vw.project,vw.year,(SELECT COUNT(s.sample_number)
FROM SAMPLE s
WHERE s.PROJECT = vw.PROJECT AND s.STATUS IN ('I', 'U', 'P') and s.TEMPLATE = 'KPS_DEFAULT' AND s.PARENT_ALIQUOT > 0
and s.C_DUE_DATE_2 < {ts '2021-01-20 00:00:00'} and s.C_DUE_DATE_2 LIKE '%'vw.year'%')
FROM KPS_SMP_DUE_DATE_WEEK_PIVOT_VW vw
where vw.project = 'S/180308/01' and vw.department = 'QC'
如前所述,“KPS_SMP_DUE_DATE_WEEK_PIVOT_VW”具有按“年份”字段分类的条目,因此我尝试使用以下代码获取每年过期的样本总数:
SELECT COUNT(s.sample_number)
FROM SAMPLE s
WHERE s.PROJECT = vw.PROJECT AND s.STATUS IN ('I', 'U', 'P') and s.TEMPLATE = 'KPS_DEFAULT' AND s.PARENT_ALIQUOT > 0
and s.C_DUE_DATE_2 < {ts '2021-01-20 00:00:00'} and s.C_DUE_DATE_2 LIKE '%'vw.year'%'
我希望 '%'vw.year'%' 可以工作,并且预期的结果会是这样的:
谢谢
【问题讨论】:
标签: sql sql-server count sql-like