大家好
我有个数据库的问题想请教大家一下
有一个表Tab1
结构如下
TagName Date Value
AA 2015/8/29 100
BB 2015/8/30 101
CC 2015/8/31 102
AA 2015/9/1 103
AA 2015/9/2 104
CC 2015/9/3 105
CC 2015/9/4 106
BB 2015/9/5 107
AA 2015/9/6 108现在想创建一个视图在这个表的基础上再加一列 如下TagName Date Value OldValue
AA 2015/8/29 100 NULL
BB 2015/8/30 101 NULL
CC 2015/8/31 102 NULL
AA 2015/9/1 103 100
AA 2015/9/2 104 103
CC 2015/9/3 105 102
CC 2015/9/4 106 105
BB 2015/9/5 107 101
AA 2015/9/6 108 104其中OldValue的值是当前Tagname上一次的Value的值
如果上一次的值没有则为NULL!
请大家帮忙看看怎么创建这个试图!谢谢!
我有个数据库的问题想请教大家一下
有一个表Tab1
结构如下
TagName Date Value
AA 2015/8/29 100
BB 2015/8/30 101
CC 2015/8/31 102
AA 2015/9/1 103
AA 2015/9/2 104
CC 2015/9/3 105
CC 2015/9/4 106
BB 2015/9/5 107
AA 2015/9/6 108现在想创建一个视图在这个表的基础上再加一列 如下TagName Date Value OldValue
AA 2015/8/29 100 NULL
BB 2015/8/30 101 NULL
CC 2015/8/31 102 NULL
AA 2015/9/1 103 100
AA 2015/9/2 104 103
CC 2015/9/3 105 102
CC 2015/9/4 106 105
BB 2015/9/5 107 101
AA 2015/9/6 108 104其中OldValue的值是当前Tagname上一次的Value的值
如果上一次的值没有则为NULL!
请大家帮忙看看怎么创建这个试图!谢谢!
go
insert into test values
('AA', '2015/8/29' ,100),
('BB', '2015/8/30' ,101),
('CC', '2015/8/31' ,102),
('AA', '2015/9/1' ,103),
('AA', '2015/9/2' ,104),
('CC', '2015/9/3' ,105),
('CC', '2015/9/4' ,106),
('BB', '2015/9/5' ,107),
('AA', '2015/9/6' ,108)
go
select * from test
go
create view test_view
as
select * ,
(select top 1 value from test where tag = t.tag and t.cdate > cdate order by cdate desc) oldvalue
from test t
go
select * from test_view
go
drop table test
go
drop view test_view
go
(9 行受影响)
tag cdate value
----- ----------------------- -----------
AA 2015-08-29 00:00:00.000 100
BB 2015-08-30 00:00:00.000 101
CC 2015-08-31 00:00:00.000 102
AA 2015-09-01 00:00:00.000 103
AA 2015-09-02 00:00:00.000 104
CC 2015-09-03 00:00:00.000 105
CC 2015-09-04 00:00:00.000 106
BB 2015-09-05 00:00:00.000 107
AA 2015-09-06 00:00:00.000 108(9 行受影响)tag cdate value oldvalue
----- ----------------------- ----------- -----------
AA 2015-08-29 00:00:00.000 100 NULL
BB 2015-08-30 00:00:00.000 101 NULL
CC 2015-08-31 00:00:00.000 102 NULL
AA 2015-09-01 00:00:00.000 103 100
AA 2015-09-02 00:00:00.000 104 103
CC 2015-09-03 00:00:00.000 105 102
CC 2015-09-04 00:00:00.000 106 105
BB 2015-09-05 00:00:00.000 107 101
AA 2015-09-06 00:00:00.000 108 104(9 行受影响)
as
select * ,(select max(value) from Tab1 where tag=t.tag and t.cdate>cdate) from Tab1 t
go