SQLite:选择并计算字符串部分(年份)低于......的案例?

时间:2017-10-24 09:17:55

标签: sqlite

我已经在过去的答案中搜索了近两天,但没有找到解决办法。我有一个表格,其中包含列'项目',列'国家/地区'和一列时间表'。我想计算按国家分组的项目数量,这些项目确实在2017年之前开始。数据看起来像

ProjectID   CountryID   Time 
  5             3       Enero/2011 - Diciembre/2020
  6             3       June 2017 - December 2020 
  7             3       June 2017 - December 2030 
  8             5       NULL 
  9             11      July 2017 - December 2020 
  10            11      7/2017 - 12/2020 
  11            5       2017 June - 2020 January

问题是时间的格式,但由于它是一个大型数据集,我无法手动更改格式。我尽力做像

这样的事情
SELECT *, COUNT (*)
WHERE (Time LIKE '%XX% - %' AND XX < 2018);

但我找不到在查询中包含参数XX的正确方法。如果不手动重写所有数据,有没有办法完成这项工作?

非常感谢!

1 个答案:

答案 0 :(得分:1)

谢谢Tripehound - 子串确实有帮助!对于开始年份

SELECT ID, substr(TimeFrame, instr((TimeFrame),'20'),4) AS ProjectStart
    , Count(*) AS NumberProjects
    FROM Timeframe
    WHERE ProjectStart>"2017"; 

确实做到了;结束的一年是

SELECT substr(TimeFrame, instr(TimeFrame,'-')-1+instr(substr(TimeFrame, instr(TimeFrame,'-')), '20'), 4) AS ProjectEnd, 
Count(*) AS ProjectsNumber
FROM Timeframe
WHERE ProjectEnd<"2030";

完成!