第一个表
日期 购入
2007-07-02 1000
2007-07-04 2000
2007-07-06 3000
2007-07-08 5000
2007-07-10 8000
第二个表
日期 充值
2007-07-01 1000
2007-07-03 2000
2007-07-05 3000
2007-07-09 5000
2007-07-11 8000
第三个表
日期 联通
2007-07-01 1000
2007-07-02 2000
2007-07-03 3000
2007-07-04 5000
2007-07-05 8000
第四个表
日期 移动
2007-07-01 1000
2007-07-02 2000
2007-07-03 3000
2007-07-04 5000
2007-07-05 8000
第五个表
日期 电信
2007-07-02 1000
2007-07-04 2000
2007-07-06 3000
2007-07-08 5000
2007-07-09 8000合并成一个SELECT 查询 日期没有记录为0
日期 购入 充值 联通 移动 电信
2007-07-01 0 1000 1000 1000 0
2007-07-02 1000 0 2000 2000 1000
日期 购入
2007-07-02 1000
2007-07-04 2000
2007-07-06 3000
2007-07-08 5000
2007-07-10 8000
第二个表
日期 充值
2007-07-01 1000
2007-07-03 2000
2007-07-05 3000
2007-07-09 5000
2007-07-11 8000
第三个表
日期 联通
2007-07-01 1000
2007-07-02 2000
2007-07-03 3000
2007-07-04 5000
2007-07-05 8000
第四个表
日期 移动
2007-07-01 1000
2007-07-02 2000
2007-07-03 3000
2007-07-04 5000
2007-07-05 8000
第五个表
日期 电信
2007-07-02 1000
2007-07-04 2000
2007-07-06 3000
2007-07-08 5000
2007-07-09 8000合并成一个SELECT 查询 日期没有记录为0
日期 购入 充值 联通 移动 电信
2007-07-01 0 1000 1000 1000 0
2007-07-02 1000 0 2000 2000 1000
解决方案 »
- sqlserver 2000 如何自动结束正在阻塞的事务?
- 求一条sql语句?
- try catch 与线程
- sql server 数据库执行增,删,改执行问题
- 有没有办法查询出评论分书的数量,包括不存在的评论分书的数量,具体的看帖子
- exists
- 请问一下,在SQL中这样字符串可以截取吗,如:test1/test5/test2/78657457576.jpg
- 春风化雨等高手曾解答过如何将SQL SERVER 7.0的数据库移植到ORACLE8i 的问题,可是...
- 怎么判断日期的先后?
- 一个简单的问题
- 请帮忙....一张表中有2个主键时,如何使插入的数据有序排列??
- 求各位前辈,关于把竖向的结果转换成横向显示??
from 第一个表 a full join 第二个表 b on a.日期=b.日期
full join 第三个表 c on a.日期=c.日期
full join 第四个表 d on a.日期=d.日期
full join 第五个表 e on a.日期=e.日期
min(Case When 购入 is not null Then value else 0 End) As 购入,
min(Case When 充值 is not null Then value else 0 End) As 充值,
min(Case When 联通 is not null Then value else 0 End) As 联通,
min(Case When 移动 is not null Then value else 0 End) As 移动,
min(Case When 电信 is not null Then value else 0 End) As 电信
from
第一个表 inner join 第二个表 on 日期=日期
inner join 第三个表 on 日期=日期
inner join 第四个表 on 日期=日期
inner join 第五个表 on 日期=日期
from 第一个表 a
inner join 第二个表 b
on a.日期=b.日期
inner join 第三个表 c
on a.日期=c.日期
inner join 第四个表 d
on a.日期=d.日期
inner join 第五个表 e
on a.日期=e.日期
where a.购入 is not null and b.充值 is not null
buxiangwei(一点一点进步)
zy_andrew()a.日期=c.日期
如果日期不一样的 记录就不显示
insert 第一个表
select '2007-07-02',1000
union select '2007-07-04', 2000
union select '2007-07-06', 3000
union select '2007-07-08', 5000
union select '2007-07-10', 8000
create table 第二个表(日期 datetime,充值 int)
insert 第二个表
select '2007-07-01', 1000
union select '2007-07-03', 2000
union select '2007-07-05', 3000
union select '2007-07-09', 5000
union select '2007-07-11', 8000
create table 第三个表(日期 datetime,联通 int)
insert 第三个表
select '2007-07-01', 1000
union select '2007-07-02', 2000
union select '2007-07-03', 3000
union select '2007-07-04', 5000
union select '2007-07-05', 8000
create table 第四个表(日期 datetime,移动 int)
insert 第四个表
select '2007-07-01', 1000
union select '2007-07-02', 2000
union select '2007-07-03', 3000
union select '2007-07-04', 5000
union select '2007-07-05', 8000
create table 第五个表(日期 datetime,电信 int)
insert 第五个表
select '2007-07-02', 1000
union select '2007-07-04', 2000
union select '2007-07-06', 3000
union select '2007-07-08', 5000
union select '2007-07-09', 8000select 日期=isnull(isnull(isnull(isnull(a.日期,b.日期),c.日期),d.日期),e.日期),
购入=isnull(max(a.购入),0),
充值=isnull(max(b.充值),0),
联通=isnull(max(c.联通),0),
移动=isnull(max(d.移动),0),
电信=isnull(max(e.电信),0)
from 第一个表 a full join 第二个表 b on a.日期=b.日期
full join 第三个表 c on a.日期=c.日期
full join 第四个表 d on a.日期=d.日期
full join 第五个表 e on a.日期=e.日期
group by isnull(isnull(isnull(isnull(a.日期,b.日期),c.日期),d.日期),e.日期)
order by 日期drop table 第一个表,第二个表,第三个表,第四个表,第五个表