【发布时间】:2014-08-01 09:52:58
【问题描述】:
我正在编写一个 shell 脚本来生成记录计数报告。
示例表和数据:MED_FILE_TEST_RECORD
================================================================================
R_ID SOURCE ELEMENT FILE_STATUS FILE_CREATE_TIME FILE_NAME
================================================================================
1001 Japan ELE01 Successful 30/05/2014 15:11:23 xxxxxx1.txt
1002 Japan ELE01 Corrupt 30/05/2014 15:11:23 xxxxxx2.txt
1003 Japan ELE02 Successful 30/05/2014 17:11:23 xxxxxx3.txt
1004 Japan ELE02 Successful 30/05/2014 17:11:23 xxxxxx4.txt
1005 Japan ELE01 Corrupt 31/05/2014 15:11:23 xxxxxx5.txt
================================================================================
我使用以下 Oracle SQL 生成报告。正确生成带有计数的结果。
SELECT SOURCE, ELEMENT, FILE_STATUS, FILE_CREATE_TIME as DAY, COALESCE(COUNT(FILE_CREATE_TIME), 0) as FILE_COUNT
FROM MED_FILE_TEST_RECORD
WHERE
(SOURCE IN ('Japan')) AND
(ELEMENT IN ( 'ELE01', 'ELE02' )) AND
(FILE_STATUS IN ( 'Corrupt', 'Successful' )) AND
(FILE_CREATE_TIME BETWEEN to_date('2014-05-30 00:00:00','YYYY-MM-DD HH24:MI:SS') AND to_date('2014-06-01 23:59:59','YYYY-MM-DD HH24:MI:SS'))
GROUP BY SOURCE, ELEMENT, FILE_STATUS, FILE_CREATE_TIME
ORDER BY DAY, SOURCE, ELEMENT, FILE_STATUS desc;
计数结果:
================================================================================
SOURCE ELEMENT FILE_STATUS FILE_CREATE_TIME FILE_COUNT
================================================================================
Japan ELE01 Successful 30/05/2014 1
Japan ELE01 Corrupt 30/05/2014 1
Japan ELE02 Successful 30/05/2014 2
Japan ELE01 Corrupt 31/05/2014 1
================================================================================
是否可以生成 count = 0 的结果,如下所示?让报告读者可以清楚地知道在某个组的某个时间没有记录?谢谢!
================================================================================
SOURCE ELEMENT FILE_STATUS FILE_CREATE_TIME FILE_COUNT
================================================================================
Japan ELE01 Successful 30/05/2014 1
Japan ELE01 Corrupt 30/05/2014 1
Japan ELE02 Successful 30/05/2014 2
Japan ELE02 Corrupt 30/05/2014 0
Japan ELE01 Successful 31/05/2014 0
Japan ELE01 Corrupt 31/05/2014 1
Japan ELE02 Successful 31/05/2014 0
Japan ELE02 Corrupt 31/05/2014 0
Japan ELE01 Successful 01/06/2014 0
Japan ELE01 Corrupt 01/06/2014 0
Japan ELE02 Successful 01/06/2014 0
Japan ELE02 Corrupt 01/06/2014 0
【问题讨论】:
-
你尝试过使用Having子句吗?