sql语句问题,请高手帮忙

luoboqingcai 2005-08-04 08:03:14
求一sql语句的拼写


1.1 从延时情况表中取出,学生号码 from 延时情况表 where 延时情况表.所属地 = 大连 and 延时情况表.处置 != 完了
--------------------------------------形成学生号码list
1.2 检索欠款表, from 欠款情况表 where 欠款情况表.所属地 = 大连 and 欠款情况表.学生号码 in (1.1形成的学生号码list) and 欠款情况表.起始年>=2000 and 欠款情况表.终止年<=2005
--------------------------------------形成学生号码list
1.3检索负责者表, from 负责者表 where 负责者表.所属地 = 大连 and 负责者表.学生号码 in(1.2形成的学生号码list)and 负责者表.负责者=小王
--------------------------------------形成学生号码list
1.4检索学生姓名表,from 学生姓名表 where 学生姓名表.所属地 = 大连 and 学生姓名表.学生号码 in (1.3形成的学生号码list) and 学生姓名表.姓名 like %姓名% and 学生姓名表.标记 = '1'
--------------------------------------形成学生号码list
1.5取得欠款原因 select 事故原因.学生号码,借款.不还原因 from 事故原因,借款 where 事故原因.所属地 = 大连 and 事故原因.学生号码 in (1.4形成的学生号码list) and 借款.不还原因 = 事故原因.不还原因
--------------------------------------形成学生号码list
1.6计算延期未还款,借款次数 select sum(总共欠款),sum(回收欠款),count(*) from 借还款表 where 借还款表.所属地 = 大连 and 借还款表.学生号码 in (1.5形成的学生号码list)


延期额=总共欠款合计-回收欠款合计
...全文
103 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷箫轻笛 2005-08-05
  • 打赏
  • 举报
回复
晕,原来楼主就想知道最后一个语句的写法啊
子陌红尘 2005-08-05
  • 打赏
  • 举报
回复
select
总共欠款 = 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.所属地 = 大连
冷箫轻笛 2005-08-05
  • 打赏
  • 举报
回复
下面的看起来都差不多,不知道我理解的有没有问题
总的来说楼主应该可以避免用in
用inner join速度会更快一些
冷箫轻笛 2005-08-05
  • 打赏
  • 举报
回复
1.2可以优化一下
select 学生号码 from 欠款情况表 inner join 延时情况表 on 延时情况表.学生号码= 欠款情况表.学生号码 where 欠款情况表.所属地 = 大连 and 延时情况表.处置<>完了 and 欠款情况表.起始年>=2000 and 欠款情况表.终止年<=2005
冷箫轻笛 2005-08-05
  • 打赏
  • 举报
回复
1.1
select 学生号码 from 延时情况表 where 延时情况表.所属地=大连 and 延时情况表.处置<>完了
--不知道你说的是不是这个意思,延时情况表是普通的一个表吧?
1.2
select 学生号码 from 欠款情况表 where 欠款情况表.所属地 = 大连 and 欠款情况表.学生号码 in (select 学生号码 from 延时情况表 where 延时情况表.所属地=大连 and 延时情况表.处置<>完了 ) and 欠款情况表.起始年>=2000 and 欠款情况表.终止年<=2005
--如果起始年终止年是日期型的,可用year()。另:你的延时情况表.所属地跟欠款情况表.所属地是不是严格对应的?如果是的话第二句可不加欠款情况表.所属地=大连
chichunhua 2005-08-04
  • 打赏
  • 举报
回复
mark

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧