SQL语句高手请进来。 (30分)

  • 主题发起人 主题发起人 lixx
  • 开始时间 开始时间
L

lixx

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一Access数据库,其中有一表是如下结构:
表中日期字段是时间日期型,其余的A B C ...Z全是数字,是为了便于说明问题才改为字母

表 table1
日期 1点 2点 3点
2001-11-01 A B C
2001-11-02 D E F
2001-11-03 G H I
. . . .
. . . .
. . . .
2001-11-30 W X Y
2001-12-01 Z .. ..
. . . .
要得到如下结果:
日期 1点 2点 3点
2001-11-01 A B C-D
2001-11-02 D E F-G
2001-11-03 G H I-J
. . . .
. . . .
. . . .
2001-11-30 W X Y-Z
2001-12-01 Z .. ..
. . . .


即每天的3点的值是第二天的1点减去原来3点时的值.
这个用SQL语句怎么实现.
 
select a.1点, a.2点, a.3点-b.1点 from tablename as a, tablename as b
where a.日期 = b.日期-1(如果是sql server 的数据库,此处可用dateadd函数,access
的数据库我不熟,估计没有类似的函数,你只能在程序中实现)
 
Update Table1
Set Table1.C = Table1.C - T.A
From
Table1 Join Table1 T On Table1.日期 = T.日期 - 1
^^别名
在SQL Server测试通过
 
在SQL中实现这样的功能估计很难,或者写个存储过程,
再有就是在程序代码中实现应该不难!
 
把你的表导到EXCEL里,在EXCEL里新建一列,在该列插入公式(二天的1点减去原来3点时的值.
 
我可不想加上Excel!
尽量在Delphi内解决!
 
我觉得rookie_ron最可行,也最干净利索!
应该是用类似下面语句
select a.1点, a.2点, a.3点-b.1点 from tablename as a, tablename as b
where datevalue(a.日期) = datevalue(b.日期)-1
以上语句不行,我想如果能把日期转换为整型或其它可以进行加减运算的类型就可以了。
可是我不知道如何转换...
 
access里好像也有dateadd函数,我不是很熟,你自己试试看。
 
非常感谢rookie_ron的提醒,问题已经解决!
 
后退
顶部