日期:2014-05-18  浏览次数:20403 次

一个超难的sql查询.100分求解答
问题是这样的,有两张表,分别是A,B
A中某一字段a记录的是表B中的编号,一个字段可能记录很多个编号,表B中编号为主码,

表A                   a
.....                 1312/3123/                       .....
.....                     (空)                               .....    
.....                 2313/                                 .....
.....                 8977/3120/4214/             .....
表B
1234         .....
1421         .....
4124         .....
4126         .....
6654         .....
5464         .....


现在要做一个查询
(count(字段a中所有符合编号,该编号在表B中符合条件1)   group   by   A.C)+(count(表B中编号符合条件2的记录)   group   by   B.C)   where   A.C=*B.C

------解决方案--------------------
如果单纯从匹配 表A.a 与表B的编号而言,可以这样:

select * from A,B where charindex( '/ '+rtrim(B.编号)+ '/ ' , '/ '+A.a+ '/ ')> 0
------解决方案--------------------
那要把 判断的条件给出来,再exists或者in一下,应该就可以了吧
楼主看看吧
------解决方案--------------------
太复杂了,接分
------解决方案--------------------
不知道你要干哈
给个实例及要求结果
------解决方案--------------------
create table #A(日期 datetime,姓名 varchar(20),工作量 int,是否通过 varchar(20),出现的问题 varchar(1000))

create table #B(日期 datetime,姓名 varchar(20),问题编号 varchar(20),遗留标志 varchar(20),是否需要处理 varchar(20),严重程度 varchar(20))
select *
into #T
from #A a
full join #B b
on charindex( '/ '+rtrim(b.编号)+ '/ ' , '/ '+a.出现的问题+ '/ ')> 0

你描述的问题不是很明白,完整的实例又没有对应数据,搞得晕头转向,
像上面这样把两张表根据问题编号合并成了一张表:#T,相信这样将会方便你取对应的数据
------解决方案--------------------
表A a
..... 1312/3123/ .....
..... (空) .....
..... 2313/ .....
..... 8977/3120/4214/ .....
表B
a
1234 .....
1421 .....
4124 .....
4126 .....
6654 .....
5464 .....


select a.*,b.* from a,b where charindex(b.a,a.a) > 0
select (a,b之间的某些计算) from a,b where charindex(b.a,a.a) > 0