2016-03-02 58 views
-1

我有一个表调用CMH_VITALSIGN,这个表中有一列作为时间,它存储日期和时间(3/2/2016 11:33:17 AM)。现在我想按小时从这张表中获取数据。我的表列是..如何从小型数据库中获取数据

(
    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); 

任何人可以帮助我在此查询。

+1

的Oracle或MySQL或两者兼而有之?你能否删除错误的标签,如果有的话?此外,您可以发布您的数据和期望结果的检查吗? – Aleksej

+0

你能不能也发布你到目前为止尝试过的东西? – Shadow

回答

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

如果你想计算每每隔一小时数据尝试实现这一点:

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')