2017-04-24 28 views
0

我正在使用PostgreSQL中的合同數據庫。我的數據庫中的一列是合同編號/ ID,應格式化爲,如ID/Year。我有一個開始合同日期的專欄,我應該從中選擇年份。在PostgreSQL中使用格式化的ID

現在我的身份證號碼是一個自動遞增但沒有年份的序列號。

I have 
ID  | DATE_FROM 
----------------------- 
1  | 2016-10-01 
2  | 2016-11-01 
3  | 2017-01-01 


I need 
ID  | DATE_FROM 
----------------------- 
1/2016 | 2016-10-01 
2/2016 | 2016-11-01 
1/2017 | 2017-01-01 

我是新來的Pos​​tgreSQL,我不知道該怎麼做,但我敢肯定有一個辦法只能做在PostgreSQL和我會很高興,如果有人可以幫助。

+0

儘量不要擔心格式化我數據庫。擔心數據的邏輯結構。讓應用程序在檢索數據時格式化數據。 –

回答

1

你應該改變字段名"FROM"其他明智的你會混淆關鍵字FROM

SELECT ID::text || '/' || EXTRACT(YEAR FROM "FROM"), 
     "FROM" 
FROM yourTable; 

編輯:對於重啓逐年計數器使用ROW_NUMBER()

SELECT ROW_NUMBER() OVER (PARTITION BY EXTRACT(YEAR FROM "FROM") 
          ORDER BY "ID")::text || 
     '/' || EXTRACT(YEAR FROM "FROM"), 
     "FROM" 
FROM yourTable; 

我假設ID是按時間順序,其他明智的你可以改變分區順序ORDER BY "FROM"

+0

和'concat'或'||'? –

+0

@VaoTsun你說得對,修好了。 –

+0

看來OP想要在每年重新啓動序列。 –