1.1
select 学生号码 from 延时情况表 where 延时情况表.所属地=大连 and 延时情况表.处置<>完了
--不知道你说的是不是这个意思,延时情况表是普通的一个表吧?
1.2
select 学生号码 from 欠款情况表 where 欠款情况表.所属地 = 大连 and 欠款情况表.学生号码 in (select 学生号码 from 延时情况表 where 延时情况表.所属地=大连 and 延时情况表.处置<>完了 ) and 欠款情况表.起始年>=2000 and 欠款情况表.终止年<=2005
--如果起始年终止年是日期型的,可用year()。另:你的延时情况表.所属地跟欠款情况表.所属地是不是严格对应的?如果是的话第二句可不加欠款情况表.所属地=大连
select 学生号码 from 延时情况表 where 延时情况表.所属地=大连 and 延时情况表.处置<>完了
--不知道你说的是不是这个意思,延时情况表是普通的一个表吧?
1.2
select 学生号码 from 欠款情况表 where 欠款情况表.所属地 = 大连 and 欠款情况表.学生号码 in (select 学生号码 from 延时情况表 where 延时情况表.所属地=大连 and 延时情况表.处置<>完了 ) and 欠款情况表.起始年>=2000 and 欠款情况表.终止年<=2005
--如果起始年终止年是日期型的,可用year()。另:你的延时情况表.所属地跟欠款情况表.所属地是不是严格对应的?如果是的话第二句可不加欠款情况表.所属地=大连
select 学生号码 from 欠款情况表 inner join 延时情况表 on 延时情况表.学生号码= 欠款情况表.学生号码 where 欠款情况表.所属地 = 大连 and 延时情况表.处置<>完了 and 欠款情况表.起始年>=2000 and 欠款情况表.终止年<=2005
总的来说楼主应该可以避免用in
用inner join速度会更快一些
总共欠款 = isnull(sum(g.总共欠款)),
回收欠款 = isnull(sum(g.回收欠款)),
延期额 = isnull(sum(g.总共欠款),0)-isnull(sum(g.回收欠款),0),
借款次数 = count(g.*)
from
延时情况表 a,
欠款情况表 b,
负责者表 c,
学生姓名表 d,
事故原因 e,
借款 f,
借还款表 g
where
a.学生号码 = b.学生号码
and
b.学生号码 = c.学生号码
and
c.学生号码 = d.学生号码
and
d.学生号码 = e.学生号码
and
e.不还原因 = f.不还原因
and
e.学生号码 = g.学生号码
and
a.所属地 = '大连' and a.处置 != '完了'
and
b.起始年>=2000 and b.终止年<=2005
and
c.负责者='小王'
and
d.所属地 = '大连' and d.姓名 like %姓名% and d.标记 = '1'
and
e.所属地 = 大连