求帮忙改一句SQL

select * from dbo.活动区间ITEM where convert(varchar(10),time,120) >= '${p1}' and convert(varchar(10),time,120)<= '${p2}'

上面的sql是的没有问题的 我想新增一个条件p3 p3是sql server里面的left(,2) 比如ITEM=AA-XX-XX 

p3=AA 就是筛选出左边两个是AA的 

还有两种情况 1.如果p3是 全部 的话 就是不用筛选ITEM条件 

                     2.如果p3是 其他 的话 就是ITEM 的左边两个里面不包含AA AB AC AD AE

callie 发布于 2022-4-26 15:31
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
15922204585Lv6高级互助
发布于2022-4-26 15:37(编辑于 2022-4-26 16:05)

试试:

select * from dbo.活动区间ITEM 

where 1=1

AND convert(varchar(10),time,120) >= '${p1}' 

and convert(varchar(10),time,120)<= '${p2}'

${if(p3="全部","",if(p3="其他","and left(ITEM,2) NOT IN ('AA' ,'AB', 'AC' ,'AD','AE')","and left(ITEM,2)='"+p3+"'"))}

  • callie callie(提问者) 一般情况是left(ITEM,2)=P3 上面的只有特殊情况哦 可以帮我再改一下吗 我一开始描述的不清楚
    2022-04-26 15:59 
  • 15922204585 15922204585 回复 callie(提问者) 参考修改答案
    2022-04-26 16:05 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-4-26 15:36

item不是表么??

image.png

  • callie callie(提问者) item是数据列的名字
    2022-04-26 15:58 
  • Z4u3z1 Z4u3z1 回复 callie(提问者) ${if(p3=\"全部\",\"\",IF(p3=\"其他\",\"left(ITEM,2) NOT IN (\'AA\' ,\'AB\', \'AC\' ,\'AD\',\'AE\')\",\" AND left(ITEM,2)=\'\"+p3+\"\'\"))} 斜杠论坛自己加的
    2022-04-26 16:06 
  • callie callie(提问者) 回复 Z4u3z1 谢谢
    2022-04-26 16:13 
  • 2关注人数
  • 279浏览人数
  • 最后回答于:2022-4-26 16:05
    请选择关闭问题的原因
    确定 取消
    返回顶部