!!!江湖救急!!!帮我写一个SQL查询语句(200分)(200分)

  • 主题发起人 主题发起人 雪狐狸
  • 开始时间 开始时间

雪狐狸

Unregistered / Unconfirmed
GUEST, unregistred user!
帮我设计一下这个查询:

表1

楼层 编号 姓名 抵押金标准 床费标准
 3  123 张三  1000.00  500.00
 4  123 李四  1500.00  600.00
表2

楼层 编号  日 期   交抵押金  交床费
 3  123 2006-04-05  500.00   300.00
 3  123 2006-04-09  500.00   100.00
 4  123 2006-04-05  1000.00 400.00
4 123 2006-04-10 500.00 200.00   
查询结果:

楼层 编号 月份 抵押金标准 实收抵押金 床费标准 实收床费 累计交款 累计欠款
3 123 4 1000.00 1000.00 500.00 400.00 1400.00 100.00
4 123 4 1500.00 1500.00 600.00 600.00 2100.00 0.00
注:顶一下也算帮我 :)
 
select 表1.楼层,表1.编号,表22.月份,表1.抵押金标准,表22.实收抵押金,表1.床费标准,表22.实收床费,(表22.实收抵押金+表22.实收床费) as 累计交款,(表1.抵押金标准+表1.床费标准-表22.实收抵押金-表22.实收床费) as 累计欠款 from 表1,
(select 楼层,编号,max(月份) as 月份,sum(交抵押金) as 实收抵押金,sum(交床费) as 实收床费 from 表2 group by 楼层,编号) as 表22
where 表1.楼层 = 表22.楼层 and 表1.编号 = 表22.编号

大概就是这个意思,应该没问题
 
select 表1.楼层,表1.编号,表22.月份,表1.抵押金标准,表22.实收抵押金,表1.床费标准,表22.实收床费,(表22.实收抵押金+表22.实收床费) as 累计交款,(表1.抵押金标准+表1.床费标准,表22.实收抵押金-表22.实收床费) as 累计欠款 from 表1,
(select 楼层,编号,max(月份) as 月份,sum(交抵押金) as 实收抵押金,sum(交床费) as 实收床费 from 表2 group by 楼层,编号) as 表22
 
skyccf,不要抄我的,刚才是错的,我刚修改了
 
呵呵,我说怎么通不过呢
 
感谢weichao9999,其实我要做的那个查询要比上面的那个复杂
但是你让我学会了一种查询的方法。谢谢你!
skyccf,谢谢你帮我顶了一下。
 
虽然揭帖了,还是贴出来把,楼主的表设计的不太合理,表一肯定要楼层&编号一起做主键,为为什么不用一个呢,把楼层和编号联起来,比如3123这样的形式.

create table t1 (楼层 int,编号 int,姓名 varchar(50),抵押金标准 numeric(8,2),床费标准 numeric(8,2))
insert into t1 select 3,123,'张三',1000.00,500.00
union all select 4,123,'李四',1500.00,600.00

go

create table t2 (楼层 int,编号 int,日期 datetime,交抵押金 numeric(8,2),交床费 numeric(8,2))
insert into t2 select 3,123,'2006-04-05',500.00,300.00
union all select 3,123,'2006-04-09',500.00,100.00
union all select 4,123,'2006-04-05',1000.00,400.00
union all select 4,123,'2006-04-10',500.00,200.00

go

select 楼层=A.楼层,编号=A.编号,月份=B.月份,抵押金标准=A.抵押金标准,实收抵押金=B.合计抵押金,床费标准=A.床费标准,实收床费=B.合计床费,累计交款=B.合计床费+B.合计抵押金,累计欠款=A.抵押金标准+A.床费标准-B.合计床费-B.合计抵押金 from t1 A
inner join (select 楼层,编号,月份=datepart(month,max(日期)),合计抵押金=sum(交抵押金),合计床费=sum(交床费) from t2 group by 楼层,编号) B on (A.楼层=B.楼层 and A.编号=B.编号)
order by A.楼层,A.编号

drop table t1
drop table t2
 
谢谢hityou,我也曾这么想过,但是有时的查询是要分楼层查询的,如果合在一起的话,有时还得把楼层单独分离出来,这样就又多了一个环节。:)
 
多了一个字段还是浪费啊,即使分楼层查询,顶多在where里面加判断了,也不麻烦
 
后退
顶部