SELECT DataTime, sum(od_qty) as Cnt, sum(om_TAmount) as Amount
FROM (
SELECT Om_Date, Substring(Om_Date from 1 for 13) DataTime, od_qty, om_TAmount
FROM lowdataview) where OM_DATE >= '2014-12-29 ' and OM_DATE <= '2014-12-30 24:00:00'
GROUP BY DataTime
ORDER BY DataTime DESC
와 같이 subString 함수로 시간별 섬값을 구하고 있습니다.
단지 원본 테이블에 특정 시간의 레코드가 없으면
아예 건너 띄워지기 때문에 원본에 레코드가 없을때 시간데이터만 만들고 값들을 0으로 채울순 없나해서 질문드립니다
DB를 파이어버드를 쓰고 있는데 기존에 mssql 의 DATEDIFF 나 DATEADD를 쓰면 쉽게해결 할수 있겠지만 이런 함수도 인자방식이 완전히 다르더군요...
그림에서 비는 레코드는 시간별로 시퀀스로 채워 넣고 값들은 0으로 채우고 싶습니다.
이런류의 문제는 제가 항상 권장하는 방식이 있습니다.
100년치 날짜를 가지고 있는 테이블 하나 만들어서 OUTER JOIN 하라는 거죠.
위 사례의 경우는 시간까지 있으니까
100년치 날짜 테이블과 01~24까지 가지고 있는 테이블을 조인하여 날짜시간 테이블을 만들고 이 테이블과 OUTER JOIN 하시면 될겁니다.