一个表记录了为我的应用程序中的每种报告类型生成的所有文件。我想确定每个报告的最后一次生成时间。 所有文件都命名为NUMBERS_REPORTNAME-DAY-TIME.xml。
我想根据第一个数字序列和时间戳之间的内容进行分组文件名的查询,这是一个正则表达式。
SQL / Sybase可以实现吗?
FileName GenerationDate
456879_REPORT-ONE-20150409-164652.xml 2015/04/09
789456_REPORT-TWO-20150409-131534.xml 2015/04/09
123458_REPORT-TWO-20150510-121055.xml 2015/04/10
784111_REPORT-THREE-20150510-100652.xml 2015/04/10
到
FileName GenerationDate
REPORT-ONE 2015/04/09
REPORT-TWO 2015/04/10
REPORT-THREE 2015/04/10
答案 0 :(得分:0)
试一试:
SELECT SUBSTRING(FileName, 8, 10) ReportName, MAX(GenerationDate) GenerationDate
FROM TableName
GROUP BY SUBSTRING(FileName, 8, 10)
文档:
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc01612.0500/doc/html/emc1297115087844.html
http://infocenter.sybase.com/archive/topic/com.sybase.infocenter.dc38151.1260/html/iqref/Substr.htm
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc38151.1520/html/iqrefbb/Max.htm
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc32300.1570/html/sqlug/sqlug118.htm
答案 1 :(得分:0)
SELECT REGEXP_SUBSTR( FileName , '((REPORT-)([a-zA-Z]*))' ) AS ReportName ,
GenerationDate FROM x GROUP BY ReportName;
无论ReportName将获得多长时间,这都应该有效。 //仅在Sybase中