2014-09-22 49 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