Oracle查询根据另一个查询的输出获取不同记录的计数

时间:2017-04-12 17:32:35

标签: sql oracle oracle11g

我有一个Oracle表(FILE_RECS),其中包含以下格式的数据:

file_name              record      time                       issue
C:/work/file.csv       234RCV      2017-04-10 02.50.35        RCM0001
D:/new/file.csv        235RCV      2017-04-09 07.20.59        RCM0002
D:/new1/file1.csv      235RCV      2017-03-08 09.28.19        RCM0002
D:/new/file1.csv       236RCV      2017-04-09 03.32.54        RCM0002
C:/new/file.csv        237RCV      2017-04-09 23.24.18        RCM0002

文件名相同但路径不同。我需要获取每个文件中不同记录的数量。 我的最终输出应该是这样的:

FILE_NAME              Number of records
file.csv               3
file1.csv              2    

我能够使用查询解析文件名:

SELECT DISTINCT substr(S,instr(file_name,'\',-1)+1,length(file_name)-instr(file_name,'\',-1)) AS FILE_NAME FROM (select DISTINCT file_name from FILE_RECS); 

不确定如何处理原始请求。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你快到了。只需group by提取的file_name。

SELECT substr(file_name,instr(file_name,'/',-1)+1,length(file_name)-instr(file_name,'/',-1)) AS FILE_NAME
,COUNT(*) as number_of_records
FROM FILE_RECS
GROUP BY substr(S,instr(file_name,'/',-1)+1,length(file_name)-instr(file_name,'/',-1))