请问怎样创建这样的视图?(50分)

  • 主题发起人 主题发起人 imacih
  • 开始时间 开始时间
I

imacih

Unregistered / Unconfirmed
GUEST, unregistred user!
表如下:
电表号 度数 月份
1    100  7
2    111  7
3    125  7
1    155  8
2    158  8
3    755  6
请问怎样根据上表实现如下的视图?
电表号 本月度数(这里8月) 上月度数(这里7月) 用电量(两月度数之差)
1       155          100      55
2       158          111      47
3       755          125      630

谢谢!!
 
好像一句sql无法解决吧,最好还是分三步走:
1.把7月的数据写入
2.把8月的数据写入
3.update表,把差额写入
 
呵呵,如果谁能一个语句搞定我也想要啊,最近也碰到这样的问题,不过我就是
用上面的方法去实现的。
 
你说的方法应该可行,能不能说具体点?不过最好就是能够建立视图(不一定只用一个SQL语句)
建立视图主要是因为原数据表经常更新,数据表更新后,数据库也会同步更新视图,这样就不用在程序中再对这进行更新的了。
 
select distinct 电表号,
(select sum(度数) from 表 where 电表号=AAA.电表号 and 月份=8) as 本月度数,
(select sum(度数) from 表 where 电表号=AAA.电表号 and 月份=7) as 上月度数,
本月度数-上月度数 as 用电量
from 表 AAA
 
呵呵,我的数据表是每个月初更新一次,然后在程序中进行处理,我不建视图的。
当然数据表更新,以及差额表更新都写成后台程序自动运行。
 
首先谢谢大家。
用了QuickSilver的方法,但出现以下错误:
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name '本月度数'.
Server: Msg 207, Level 16, State 1, Line 1
Invalid column name '上月度数'.

这应该怎样解决呢?
 
冥思苦想中,终于想到用自连接,这样应该没什么问题的,多想拿分啊[:D][:D][:D]
(唯一的缺陷是假如有一个电表其中一个月由于没有用根本没数据那就查不到了,所以
数据表里要绝对保证每个电表都有数据,至少有个0表示一下都行)

select a.id "电表号", a.amount "本月度数", b.amount "上月度数",
a.amount-b.amount "用电量"
from table1 a, table1 b
where a.month=8 and b.month=7 and a.id=b.id;
 
好的,等一会我另加分给你。
CSDN上有回复了。。。
select a.电表号,a.度数 '上月度数',b.度数 '本月度数',(b.度数 -a.度数 ) '用电量' from
(select 电表号,度数 from 表 where 月份=7)a ,
(select 电表号,度数 from 表 where 月份=8)b
where a.电表号=b.电表号
 
呵呵,分数不是问题。主要是受到启发,也为自己开辟了新思路。
我想我的办法可能标准一点,像你说的还有quicksilver的方法在一些
数据库系统上是不支持的(比如oracle),但是问题一分为二,当数据量
比较大的时候还是要考虑一下效率问题,哪个效率高就采用哪个了。
 
好的,谢谢大家,在这里感觉到了网络的“温暖”!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
793
DelphiTeacher的专栏
D
D
回复
0
查看
737
DelphiTeacher的专栏
D
D
回复
0
查看
687
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部