麻烦大家帮忙解决这个问题

stephenlai 2003-07-08 03:07:21
有一个表,里面有如下几个字段

用户名 负债额 是否付还 付还日期

现希望查询得到如下结果

用户名 历史负债总额 本月已付还额

我的初步想法是
1、查询用户本月的负债总额生成新表1
insert into 新表1 select 用户名,sum(负债额) as T1 from 表 where 是否付还=false group by 用户名

2、查询用户本月已付还金额生成新表2
insert into 新表2 select 用户名,sum(负债额) as T2 from 表 where 是否付还=true and (付还日期 between 日期1 and 日期2) group by 用户名

3、查询用户名生成新表3(新表3已预先创建,包含最终结果的三个字段)
insert into 新表3(用户名) select distinct 用户名 from 表

4、把新表1的内容加入新表3
insert into 新表3 select T1 from 新表1 where 新表1.用户名=新表3.用户名

5、把新表2的内容也加入新表3
insert into 新表3 select T2 from 新表2 where 新表2.用户名=新表3.用户名

最终得出结果。但似乎太复杂了,能不能通过一句SQL语句得出最终结果呢?请各位大虾指教!!!
...全文
46 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiubolecn 2003-07-08
  • 打赏
  • 举报
回复
不知道ACCESS支持不支持CASE WHEN,
因为你是重复对‘原表’进行查询,所以感觉可以用CASE WHEN来操作。


insert into 新表(用户名,负债,本月已付还额)

select temp.a,

(select sum(case when 用户名 =temp.a and 是否付还= false then 负债额 else 0 end),
sum(case when 用户名 =temp.a and 是否付还=True and
(finishdate Between 日期1 And 日期2) then 负债额 else 0 end)
from 原表)

from (select distinct 用户名 as a from 原表) as temp

stephenlai 2003-07-08
  • 打赏
  • 举报
回复
以下语句小弟已经在ACCESS中通过,请大家指正并提出宝贵意见

insert into 新表(用户名,负债,本月已付还额)

select temp.a,

(SELECT sum(负债额) FROM 原表 WHERE 用户名 =temp.a and 是否付还= false),

(SELECT sum(负债额) FROM 原表 WHERE 用户名 =temp.a and 是否付还=True and
(finishdate Between 日期1 And 日期2))

from (select distinct 用户名 as a from 原表) as temp
RobinHZ 2003-07-08
  • 打赏
  • 举报
回复
一句SQL不可能,至少要两步,先选出各用户每月负债额放在临时表里,然后再选一次,取各用户的总和和最后一个月的负债额。

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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