| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3502 人关注过本帖, 1 人收藏
标题:[出题了]2008年9月25日
只看楼主 加入收藏
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏(1)
 问题点数:0 回复次数:30 
[出题了]2008年9月25日
现在有三个表,Table1,Tabel2,Tabel3
tabel1如下:
date            num      tag
2008.2.2        34        2
2008.3.4        65        3
2008.11.2       33        4

tabel2如下:
id           num1     date               type
1             22         2008.2.4         in
2             44         2008.3.1         out
3             67         2008.9.1        in
4            22          2008.2.21      in
5            10          2008.5.3        out

tabel3如下:
id           num2     date               type

2            55         2008.3.6         in
3            44          2008.3.3        out
4            21          2008.2.5        in
5           11           2008.6.1         out
求tabel2 和tabel3中按type分组的num1 和num2的和,并分别作为tabel1中的两列.
得到如下结果:

date            num      tag    numin     numout
2008.2.2        34        2                                    (第一条没有上一条的时间,所以这两列为空)
2008.3.4        65        3       43               88       (日期在2008.2.2-2008.3.4之间的tabel2,tabel3中的num1,num2的和)
2008.11.2       33        4      122             21        (日期在2008.3.4-2008.11.2之间的tabel2,tabel3中的num1,num2的和)

一起探讨下..看谁能给出答案

初始化脚本
程序代码:
create table t1
(
    [date] datetime,
    num int,
    tag varchar(10)
);

create table t2
(
    [id] int identity(1,1) primary key not null,
    num1 int,
    [date] datetime,
    [type] char(8)
);

create table t3
(
    [id] int identity(1,1) primary key not null,
    num2 int,
    [date] datetime,
    [type] char(8)
);

insert into t1 values('2008-2-2',34,'2');
insert into t1 values('2008-3-4',65,'3');
insert into t1 values('2008-11-2',33,'4');

insert into t2 values(22,'2008-2-4','in');
insert into t2 values(44,'2008-3-1','out');
insert into t2 values(67,'2008-9-1','in');
insert into t2 values(22,'2008-2-21','in');
insert into t2 values(10,'2008-5-3','out');

insert into t3 values(55,'2008-3-6','in');
insert into t3 values(44,'2008-3-3','out');
insert into t3 values(21,'2008-2-5','in');
insert into t3 values(11,'2008-6-1','out');


[[it] 本帖最后由 师妃暄 于 2008-9-25 22:20 编辑 [/it]]
搜索更多相关主题的帖子: 出题 
2008-09-25 22:19
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
路过SQL区……

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-09-25 22:47
卜酷塔
Rank: 7Rank: 7Rank: 7
来 自:魅力青岛
等 级:禁止访问
威 望:39
帖 子:2569
专家分:0
注 册:2004-6-12
收藏
得分:0 
占个座,剪完指甲给在搞
[bo][un]球球[/un] 在 2008-9-26 13:03 的发言:[/bo]

SELECT SUM(num1) FROM
(
SELECT num1,type,date FROM t2
UNION ALL
SELECT num2,type,date FROM t3
) a WHERE type='in' AND date BETWEEN '2008-03-04' AND '2008-11-02'

122

SELECT sum(num1) FROM
 ...

这个不行?

[[it] 本帖最后由 卜酷塔 于 2008-9-26 14:09 编辑 [/it]]

觉得为时已晚的时候,恰恰是最早的时候。

2008-09-26 08:18
szy345
Rank: 4
来 自:江苏——南京
等 级:贵宾
威 望:14
帖 子:336
专家分:14
注 册:2008-8-6
收藏
得分:0 
师姐,你那个结果是对的吗,是不是我哪里没弄懂,下面这条结果的43 numin值我觉的有点问题呢

date        num  tag  numin   numout
2008.3.4    65    3    43       88   (日期在2008.2.2-2008.3.4之间的tabel2,tabel3中的num1,num2的和)

首先在2008.2.2-2008.3.4的IN值有3条记录:
id           num1     date               type
1             22         2008.2.4         in
4            22          2008.2.21        in
4            21          2008.2.5         in

3个之和的话,应该是65 呢,是不是我哪里错了?!

VFP技术交流,QQ群:20452307
欢迎您!
2008-09-26 12:19
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
43没错的

2008.2.2-2008.3.4之间为IN的  t2中num1为22 t3中num2为21

有实力才会有魅力 实力来自坚持不懈的努力
2008-09-26 12:48
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
SELECT SUM(num1) FROM
(
SELECT num1,type,date FROM t2
UNION ALL
SELECT num2,type,date FROM t3
) a WHERE type='in' AND date BETWEEN '2008-02-02' AND '2008-03-04'

65

SELECT SUM(num1) FROM
(
SELECT num1,type,date FROM t2
UNION ALL
SELECT num2,type,date FROM t3
) a WHERE type='out' AND date BETWEEN '2008-02-02' AND '2008-03-04'

88

[[it] 本帖最后由 球球 于 2008-9-26 13:00 编辑 [/it]]

好累
2008-09-26 12:57
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
SELECT SUM(num1) FROM
(
SELECT num1,type,date FROM t2
UNION ALL
SELECT num2,type,date FROM t3
) a WHERE type='in' AND date BETWEEN '2008-03-04' AND '2008-11-02'

122

SELECT sum(num1) FROM
(
SELECT * FROM t2
UNION all
SELECT * FROM t3
) a WHERE type='out' AND date BETWEEN '2008-03-04' AND '2008-11-02'

21

好累
2008-09-26 13:03
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
这样统计好象有点问题,上一天的又加到下个月去了?

好累
2008-09-26 13:06
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
球球加我QQ

有实力才会有魅力 实力来自坚持不懈的努力
2008-09-26 13:08
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
加了,没反应。我在你群里。昨晚半夜还问你问题来着。记起没

好累
2008-09-26 13:33
快速回复:[出题了]2008年9月25日
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034020 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved