declare @BC_Tzdno varchar(20) set @BC_Tzdno=ltrim(rtrim(cast('面碗' as varchar(20)))) select BC_Tzdno,prd_cname,Device_No,pc_name,BCSL,tast_date,process_no into #t from Tasts order by BC_Tzdno,process_no,Device_No,tast_date,prd_cname,pc_name if @BC_Tzdno='面碗' select BC_Tzdno,prd_cname,Device_No,pc_name,BCSL,tast_date,process_no from #t where tast_date >='2023-06-07 00:00:00.000' and tast_date<='2023-06-07 00:00:00.000' and process_no='01' and BC_Tzdno=@BC_Tzdno else if @BC_Tzdno like '%消餐%' select BC_Tzdno,prd_cname,Device_No,pc_name,BCSL,tast_date,process_no from #t where tast_date >='2023-06-07 00:00:00.000' and tast_date<='2023-06-07 00:00:00.000' and process_no='01' --and BC_Tzdno=@BC_Tzdno end drop table #t你好,以上代码是否有错误,帮我修改以下
时间: 2024-03-24 22:41:15 浏览: 96
你好,我看了一下你的代码,有以下几个需要修改的地方:
1. 在第一行代码中,将 '面碗' 改成 @BC_Tzdno,这样才能使用变量来动态指定条件。
2. 在第8行代码中,将 BC_Tzdno=@BC_Tzdno 的注释去掉,否则无法根据变量进行筛选。
3. 在第9行代码中,应该使用 ELSE IF 而不是 else if。
修改后的代码如下:
```
declare @BC_Tzdno varchar(20)
set @BC_Tzdno = ltrim(rtrim(cast(@BC_Tzdno as varchar(20))))
select BC_Tzdno,prd_cname,Device_No,pc_name,BCSL,tast_date,process_no into #t from Tasts
order by BC_Tzdno,process_no,Device_No,tast_date,prd_cname,pc_name
if @BC_Tzdno = '面碗'
select BC_Tzdno,prd_cname,Device_No,pc_name,BCSL,tast_date,process_no from #t
where tast_date >= '2023-06-07 00:00:00.000' and tast_date <= '2023-06-07 00:00:00.000'
and process_no = '01' and BC_Tzdno = @BC_Tzdno
else if @BC_Tzdno like '%消餐%'
select BC_Tzdno,prd_cname,Device_No,pc_name,BCSL,tast_date,process_no from #t
where tast_date >= '2023-06-07 00:00:00.000' and tast_date <= '2023-06-07 00:00:00.000'
and process_no = '01' and BC_Tzdno = @BC_Tzdno
drop table #t
```
这个修改后的代码应该可以正常运行了。
阅读全文