程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> oracle 時間點查詢-oracle中時間點數據查詢問題

oracle 時間點查詢-oracle中時間點數據查詢問題

編輯:編程綜合問答
oracle中時間點數據查詢問題

從數據表中查詢出來0點半,1點,1點半...以此類推到24點這48個時間點的數據 如果沒有時間剛好相等的數據,則返回最接近這個時間的數據 比如0點半沒有數據,則返回0點到0點半之間,時間最接近0點半的一條數據,如果一條數據都沒有,則返回空。
數據結構如下:create table TEST
(
id NUMBER(4),
sid NUMBER(4),
time VARCHAR2(20),
value VARCHAR2(200)
)

返回如下: sid 0點半value 1點value 1點半value....
1 value1 v2 v3 ...
2 空 vv 12
....

希望大嬸們幫幫忙

最佳回答:


建表:
create table TEST
(
id NUMBER(4),
sid NUMBER(4),
time date,
value VARCHAR2(200)
)

這裡不知道你的sid,id是什麼意思.id應該是主鍵 ,sid是指時間點嗎?如果是時間點的那這問題還會更簡單。我這裡沒有用這個值。

插值:
insert into TEST (ID, SID, TIME, VALUE)
values ('1', '1', to_date('12-11-2013 05:00:00', 'dd-mm-yyyy hh24:mi:ss'), '1');

insert into TEST (ID, SID, TIME, VALUE)
values ('2', '2', to_date('12-11-2013 10:58:00', 'dd-mm-yyyy hh24:mi:ss'), '2');

insert into TEST (ID, SID, TIME, VALUE)
values ('3', '3', to_date('12-11-2013 04:02:00', 'dd-mm-yyyy hh24:mi:ss'), '3');

insert into TEST (ID, SID, TIME, VALUE)
values ('4', '4', to_date('12-11-2013 03:00:00', 'dd-mm-yyyy hh24:mi:ss'), '4');

insert into TEST (ID, SID, TIME, VALUE)
values ('5', '5', to_date('12-11-2013 04:06:00', 'dd-mm-yyyy hh24:mi:ss'), '5');

insert into TEST (ID, SID, TIME, VALUE)
values ('6', '6', to_date('12-11-2013 04:57:00', 'dd-mm-yyyy hh24:mi:ss'), '6');

查詢:
select t3.team,t2.value
from (select distinct first_value(t.value) over(partition by to_number(to_char(t.time, 'hh24')) * 2 +
ceil(to_number(to_char(t.time, 'mi')) / 30) order by abs(t.time-trunc(t.time,'hh24')) rows between 1 preceding and 1 following) value,
to_number(to_char(t.time, 'hh24')) * 2 +
ceil(to_number(to_char(t.time, 'mi')) / 30) team
from TEST t) t2
right join (select rownum team from dual connect by level < 49) t3
on t3.team = t2.team
order by t3.team

結果:
rownum team value
1 1

2 2

3 3

4 4

5 5

6 6 4
7 7

8 8

9 9 3
10 10 1
11 11

12 12

13 13

14 14

15 15

16 16

17 17

18 18

19 19

20 20

21 21

22 22 2
23 23

24 24

25 25

26 26

27 27

28 28

29 29

30 30

31 31

32 32

33 33

34 34

35 35

36 36

37 37

38 38

39 39

40 40

41 41

42 42

43 43

44 44

45 45

46 46

47 47

48 48

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved