sql语句如何查询两个值之间的差?
如已有一个数量表ID日期数量12009-1-11022009-1-21232009-1-313如何生成一个视图能实现以下查询?ID日期数量增加额12009-1-110nu...
如已有一个数量表ID 日期 数量1 2009-1-1 102 2009-1-2 123 2009-1-3 13如何生成一个视图能实现以下查询?ID 日期 数量 增加额1 2009-1-1 10 null2 2009-1-2 12 23 2009-1-3 13 1即查询每天的增加额
展开
7个回答
展开全部
1、创建表,
create table test_date(id number, v_date date, cnt number);
2、插入测试数据,
insert into test_date values(3, to_date(20190103,'yyyymmdd'), 13);
insert into test_date values(2, to_date(20190102,'yyyymmdd'), 12);
insert into test_date values(1, to_date(20190101,'yyyymmdd'), 10);
commit;
3、查询表中记录;select * from test_date ;
4、编写sql,实现所需目标;
select t.*, t.cnt - b.cnt as minus_cnt from test_date t, test_date b where t.v_date - b.v_date(+) = 1 order by t.id
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-09
展开全部
--> 测试数据:[tb]
if object_id('[tb]') is not null
drop table [tb]
go
create table [tb]([ID] int,[日期] datetime,[数量] int)
insert [tb]
select 1,'2009-1-1',10 union all
select 2,'2009-1-2',12 union all
select 3,'2009-1-3',13
go--1 测试
select a.[ID],a.[日期],a.[数量],增加额=isnull(a.[数量]-b.[数量],0) ------建议把null 替换为 0
from [tb] a
left join [tb] b
on a.id=b.id+1 /*
ID 日期 数量 增加额
----------- ----------------------- ----------- -----------
1 2009-01-01 00:00:00.000 10 0
2 2009-01-02 00:00:00.000 12 2
3 2009-01-03 00:00:00.000 13 1(3 行受影响)*/
--2 使用视图
create view v
as
select a.[ID],a.[日期],a.[数量],增加额=a.[数量]-b.[数量]
from [tb] a
left join [tb] b
on a.id=b.id+1 goselect * from v
/*
ID 日期 数量 增加额
----------- ----------------------- ----------- -----------
1 2009-01-01 00:00:00.000 10 NULL
2 2009-01-02 00:00:00.000 12 2
3 2009-01-03 00:00:00.000 13 1(3 行受影响)*/
if object_id('[tb]') is not null
drop table [tb]
go
create table [tb]([ID] int,[日期] datetime,[数量] int)
insert [tb]
select 1,'2009-1-1',10 union all
select 2,'2009-1-2',12 union all
select 3,'2009-1-3',13
go--1 测试
select a.[ID],a.[日期],a.[数量],增加额=isnull(a.[数量]-b.[数量],0) ------建议把null 替换为 0
from [tb] a
left join [tb] b
on a.id=b.id+1 /*
ID 日期 数量 增加额
----------- ----------------------- ----------- -----------
1 2009-01-01 00:00:00.000 10 0
2 2009-01-02 00:00:00.000 12 2
3 2009-01-03 00:00:00.000 13 1(3 行受影响)*/
--2 使用视图
create view v
as
select a.[ID],a.[日期],a.[数量],增加额=a.[数量]-b.[数量]
from [tb] a
left join [tb] b
on a.id=b.id+1 goselect * from v
/*
ID 日期 数量 增加额
----------- ----------------------- ----------- -----------
1 2009-01-01 00:00:00.000 10 NULL
2 2009-01-02 00:00:00.000 12 2
3 2009-01-03 00:00:00.000 13 1(3 行受影响)*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create view ViewName
as
select A.日期, (A.数量1 - B.数量1) as 增加额1 from 数量表 A,数量表 B
where A.日期= dateadd(dd,1,B.日期)
试下这个
as
select A.日期, (A.数量1 - B.数量1) as 增加额1 from 数量表 A,数量表 B
where A.日期= dateadd(dd,1,B.日期)
试下这个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询