每天建一张表形式如下:
第一天:
名称 上次数 本次数 差值
a 1 2 1
b 3 4 1
c 5 8 3
第二天:
名称 上次数 本次数 差值
a 2 4 2
b 4 6 2
c 8 10 2
现在要在用户任意给的一个时间段内把这段时间内的所有表中的a.b.c所对应的差值求出来.
形式如下:
名称 差值和
a 3 (1+2)
b 3 (1+2)
c 5 (3+2)各位高手请多多指教,给100分.请详细一点儿,还给一封感谢信.
第一天:
名称 上次数 本次数 差值
a 1 2 1
b 3 4 1
c 5 8 3
第二天:
名称 上次数 本次数 差值
a 2 4 2
b 4 6 2
c 8 10 2
现在要在用户任意给的一个时间段内把这段时间内的所有表中的a.b.c所对应的差值求出来.
形式如下:
名称 差值和
a 3 (1+2)
b 3 (1+2)
c 5 (3+2)各位高手请多多指教,给100分.请详细一点儿,还给一封感谢信.
解决方案 »
- 如何写一个类似firefox那样界面的程序
- 连号球走势---算法问题
- 赚分...
- 如何显示数据库中一字段精确时间 再线等
- 大量数据录入界面
- Fastreport问题!50分相送!
- 怎么使任意控件处于设计状态(可拖动、改变大小)
- 大家谁对AVI的格式熟一些,能不能帮我看一下这段AVI为啥用MediaPlayer播放不了
- 如何把image中图像存入dbgrid和access
- 如何做?请高手给一个思想
- 请教关于Tlistview控件的双击事件
- 帮忙看看这个语句错在哪里?table3.filter := '供应商名称= '''+ dblookupcombobox1.Text + '''' and '名称= '''+ dblookupcombobox2.Tex
SQL:Select 名称,sum(差值) as 差值和
from
(
Select 名称,差值 from 表一
union all
Select 名称,差值 from 表二
union all
Select 名称,差值 from 表三
...
) aa
如果日期不定,则需要在程序中确定这些表的名称,并动态地生成查询的SQL语句。
表名建立规范一点,如:DB20031112,DB20031113等
日期 名称 次数如果名称只有a,b,c等固定的几类,可建成如下格式,简化运算:
日期 次数_a 次数_b 次数_c如此建表,可彻底避免冗余数据
a 3(4-1)
b 3(6-3)
c 5(10-5)Demo(SQL Server):CREATE TABLE aaa
(
dt datetime NULL,
nm varchar(20) NULL,
tm numeric(9,0) NULL
)go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/01/2000', 'a', 1 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/01/2000', 'b', 3 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/01/2000', 'c', 5 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/02/2000', 'a', 2 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/02/2000', 'b', 4 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/02/2000', 'c', 8 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/03/2000', 'a', 4 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/03/2000', 'b', 6 )
go
INSERT INTO aaa ( dt, nm, tm )
VALUES ( '05/03/2000', 'c', 10 )
goselect a.nm, sum(a.tm-b.tm) as tms from
(select nm,tm from aaa where dt='2000-5-3') as a,
(select nm,tm from aaa where dt='2000-5-1') as b
where a.nm=b.nm
group by a.nm
select 名称,(z.差值1+z.差值2+......) as 合计差值 from(
Select 名称,差值 as 差值1 from 表一 a
left join
Select 名称,差值 as 差值2 from 表二 b
on a.名称=b.名称
left join
Select 名称,差值 as 差值3 from 表二 c
on a.名称=c.名称
......)z