如何以小时为单位从oracle数据库中获取数据

时间:2016-03-02 06:42:56

标签: sql oracle

我有一个表调用CMH_VITALSIGN,此表中有一列为Time,它存储日期和时间(2016年3月2日上午11:33:17)。现在我想每小时从这张表中获取数据。我的表列是..

(
  VITAL_SIGNNO      NUMBER,
  CONSULT_NO        VARCHAR2(16 BYTE),
  REG_NO            VARCHAR2(16 BYTE),
  ADMISSION_NO      VARCHAR2(16 BYTE),
  DN_NO             VARCHAR2(16 BYTE),
  CONSULT_DT        DATE,
  TEMP_C            NUMBER(4,2),
  TEMP_F            NUMBER(5,2),
  PULSE             NUMBER(3),
  RR                NUMBER(2),
  BP_HIGHER         NUMBER(5,2),
  BP_LOWER          NUMBER(5,2),
  RESP              NUMBER(3),
  SPECIALITY_NO     VARCHAR2(16 BYTE),
  ENTERED_BY        VARCHAR2(16 BYTE),
  ENTRY_TIMESTAMP   DATE,
  UPDATED_BY        VARCHAR2(16 BYTE),
  UPDATE_TIMESTAMP  DATE,
  COMPANY_NO        VARCHAR2(10 BYTE)           DEFAULT 1,
  SL_NO             VARCHAR2(16 BYTE)
)

现在我想将数据显示为折线图每小时基数......

SELECT to_date(ENTRY_TIMESTAMP) DAY,
  DECODE(TO_CHAR(ENTRY_TIMESTAMP,'HH24'),'11',pulse, 0) "00",
  DECODE(TO_CHAR(ENTRY_TIMESTAMP,'HH24'),'12',pulse,0)"01",
  DECODE(TO_CHAR(ENTRY_TIMESTAMP,'HH24'),'13',pulse,0) "02",
  DECODE(TO_CHAR(ENTRY_TIMESTAMP,'HH24'),'14',pulse,0) "03"
FROM CMH_VITALSIGN
WHERE pulse IS NOT NULL 
--where to_date(ENTRY_TIMESTAMP) ='01_MAY-2010' 
--GROUP by to_char(ENTRY_TIMESTAMP,'YYYY-MON-DD'), to_date(ENTRY_TIMESTAMP) 
ORDER BY to_date(ENTRY_TIMESTAMP);

任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

SELECT TO_CHAR ( ENTRY_TIMESTAMP, 'HH24') AS hour_num,
       PULSE,
       TEMP_C,
       TEMP_F,
       RR,
       BP_HIGHER,
       BP_LOWER,
       RESP
  FROM cmh_vitalsign
WHERE TRUNC (ENTRY_TIMESTAMP) = TO_DATE ( '3/2/2016', 'MM/DD/YYYY')
and  ADMISSION_NO = 'A011009011297';

答案 1 :(得分:-1)

如果您想每小时计算一次数据,请尝试执行以下操作:

SELECT TO_CHAR( d, 'yyyy-mm-dd hh24') hour, COUNT(*)
FROM (SELECT SYSDATE + LEVEL / 26 / 60 d
      FROM DUAL
    CONNECT BY LEVEL < 1000)
GROUP BY TO_CHAR( d, 'yyyy-mm-dd hh24')