数据库为sql server2005想做一个这样的查询 有两个表 一个是清单1
1 读取表1.StrList,StrList的第2个字母是B或I的话,代码是StrList的第四个字母,若是第二字母不为B或I,代码是第五个字母。
2 通过表1里查找的代码,到表2里面是匹配,每个代码对应一个名字,把不重复名字列出来。例 表1 StrList 表二 ID name
ABCDE D 日期
AIFDS M 月份
CAFAD
CAFAM按照前面的说明 StrList 的第一个值 ABCDE的第二个字母是B,所以 代号为第四个字母 D ;
第二个值 AIFDS的第二个字母是I,所以 代号也为第四个字母 D ;
第三个值 CAFAD的第二个字母是A,所以 代号为第五个字母 也是 D ;
同理的第五个值的代号是M这样 到表二里去查,的到不重复的名字显示出来 就是 日期,月份在这种情况下查询语句应为select id, name from table2 where id in(
select case
when substr(StrList,2,1) = 'B' or substr(StrList,2,1) = 'I' then substr(StrList,4,1)
else substr(StrList,5,1) end as temp from table1
)上面的语句经验证是正确的
下面想再加一个条件 在选代码ID之前还需先做一轮筛选
条件为:给出筛选代码 先选出筛选代码与给出的一样的StrList
3 :读取表1.StrList,StrList的第2个字母是B或I的话,筛选代码是StrList的第1个字母,若是第二字母不为B或I,代码是第1+2个字母。
然后再在结果中进行上面说的操作。 例如给出筛选代码 String sxID="A";根据3这个条件 那么筛选出来的strList 为ABCDE,AIFDS两个根据条件1再找出业务代码,接着前面的继续。请给出sql语句,谢谢!
1 读取表1.StrList,StrList的第2个字母是B或I的话,代码是StrList的第四个字母,若是第二字母不为B或I,代码是第五个字母。
2 通过表1里查找的代码,到表2里面是匹配,每个代码对应一个名字,把不重复名字列出来。例 表1 StrList 表二 ID name
ABCDE D 日期
AIFDS M 月份
CAFAD
CAFAM按照前面的说明 StrList 的第一个值 ABCDE的第二个字母是B,所以 代号为第四个字母 D ;
第二个值 AIFDS的第二个字母是I,所以 代号也为第四个字母 D ;
第三个值 CAFAD的第二个字母是A,所以 代号为第五个字母 也是 D ;
同理的第五个值的代号是M这样 到表二里去查,的到不重复的名字显示出来 就是 日期,月份在这种情况下查询语句应为select id, name from table2 where id in(
select case
when substr(StrList,2,1) = 'B' or substr(StrList,2,1) = 'I' then substr(StrList,4,1)
else substr(StrList,5,1) end as temp from table1
)上面的语句经验证是正确的
下面想再加一个条件 在选代码ID之前还需先做一轮筛选
条件为:给出筛选代码 先选出筛选代码与给出的一样的StrList
3 :读取表1.StrList,StrList的第2个字母是B或I的话,筛选代码是StrList的第1个字母,若是第二字母不为B或I,代码是第1+2个字母。
然后再在结果中进行上面说的操作。 例如给出筛选代码 String sxID="A";根据3这个条件 那么筛选出来的strList 为ABCDE,AIFDS两个根据条件1再找出业务代码,接着前面的继续。请给出sql语句,谢谢!
解决方案 »
- 根据班级怎么得到年级的代码
- 求一个模拟模态弹出窗口的例子(HTML 不用DIV实现)
- 帮我找个东西
- 小弟刚做的Bug管理系统JSP+Struts的,有源码和设计分析,需要的请来看,另外散分,大家捧捧场,顶者有分。谢谢!
- 从数据库提取一个变量显示,出现乱码
- maven报错,蛋疼
- struts结构下,jsp页面中除了用<html:errors>捕捉并显示错误信息外,就没有别的方法了吗?
- 因为上网,不知那个网站把我的注册表改了,我现在不能修改注册表了,说注册表被管理员禁用,这怎么办?
- 请问:rtf 文件中的中文是何种编码?
- tomcat使用war方式发布web项目,那么日志文件以及上传文件怎么处理?
- frame之间传值问题!
- 如何让远程的机器通过ip来访问指定的jsp页面
select case
when substr(StrList,2,1) = 'B' or substr(StrList,2,1) = 'I' then substr(StrList,4,1)
else substr(StrList,5,1) end as temp from table1
when substr(StrList,2,1) = 'B' or substr(StrList,2,1) = 'I' then substr(StrList,1,1)
else substr(StrList,1,2) end as temp 并且选出来的substr等于 sxID // 能用类似的方法表达吗?汉字部分怎么能用代码实现呢
)
select case
when substr(StrList,2,1) = 'B' or substr(StrList,2,1) = 'I' then substr(StrList,4,1)
else substr(StrList,5,1) end from table1 WHERE
when substr(StrList,2,1) = 'B' or substr(StrList,2,1) = 'I' then substr(StrList,1,1)
else substr(StrList,1,2) end LIKE '"+sxID+"'
) 这样只能选出一条符合条件的,不能罗列出所有该怎么改进呢