2014-09-22 51 views
-1

我有一个SQLite数据库,像这样的一个日期字段:的记录顺序编号...特定记录的ID

  • 2011/06/15

    2012/03/23

    2013/03/23

我想要做的是删除斜杠(简单,我已经做到了),但我想使用顺序编号的日期每年像这样:

    • 20110615.0001

      20110615.0002

      20120615.0001

      20120615.0002

      20120615.0003

      20130615.0001

      20130615.0002

      20140615.0001

它每年计算在一个单独的顺序的方式,我有多年的1998年至2014年与解冻成千上万的记录为每一个

为了更清楚地说明,我有大约200万条记录存储在sqlite数据库中,并且每条记录都有一个日期,希望使用该日期为每条记录提供一个独特的像上面的例子一样,日期或月份并不重要,但我想使用年份作为ID 2011 ****。0001,2011 ****。0002的基数,并从0001计算出此数字一年又一年重新开始计数......我希望我清楚

感谢 易卜拉欣

+0

什么是这些值将作为所需输出的输入数据? – 2014-09-23 06:59:51

+0

它是一个文件编号系统,它应该是这样的 – 2014-09-23 21:35:35

+0

应该生成这个输出的* specific *示例输入是什么? – 2014-09-24 07:24:03

回答

0

假定日期值已经在yyyymmdd格式,你可以指望以前用多少行同一年有:

UPDATE MyTable 
Set MyDate = MyDate || 
      printf('.%04d', (SELECT COUNT(*) 
           FROM MyTable AS T2 
           WHERE substr(T2.MyDate,  1, 4) = 
            substr(MyTable.MyDate, 1, 4) 
           AND T2.MyDate <= MyTable.MyDate)) 

如果有重复的日期,您必须使用一些其他独特的列:

UPDATE MyTable 
Set MyDate = MyDate || 
      printf('.%04d', (SELECT COUNT(*) 
           FROM MyTable AS T2 
           WHERE substr(T2.MyDate,  1, 4) = 
            substr(MyTable.MyDate, 1, 4) 
           AND T2.rowid <= MyTable.rowid)) 
+0

非常感谢......我会让你知道它是怎么回事。对延迟抱歉。 – 2014-10-02 13:54:11