我在SQL上并不聪明,并且创建具有2个列表的SP时遇到问题,我想通过此列表过滤表: 例如输入到SP lstNames:阿里;约翰 lstSubjs:A;甲
我的SP的初始脚本:\
Select Score from ScoreTable \
where Name in SplitStringToTable(lstNames ) and Subject in SplitStringToTable(lstSubjs)
SplitStringToTable我的函数:将值拆分为;成为表
根据我的查询,结果将是:80,70 结果应为:0,70 这是错误的,因为学生=阿里& subject = A socre不存在,但我的查询返回80,因为它将搜索所有可用值。
我相信解决方案应该将第一个条件与第二个条件绑定,就好像我搜索名称= Ahmed我应该在包含Ahmed的同一记录中搜索主题(只有主题= B)不搜索所有主题。
请建议。
答案 0 :(得分:0)
你必须改变它,但这会给你一些想法。另请查看this.
select score
from scoreTable st
Left JOIN dbo.SplitStringToTable(lstNames) name
ON st.name = name.name
LEft jOin dbo.splitStringToTable(lstSubject) sub
oN st.Subject = sub.subject