2017-04-24 1 views
0

저는 PostgreSQL의 계약 데이터베이스를 만들고 있습니다. 내 데이터베이스의 한 열은 계약 번호/ID이며 ID 번호/연도처럼 으로 형식화해야합니다. 계약 날짜가 시작되는 기둥이있어 그로부터 올해를 시작해야합니다.PostgreSQL에서 연도 형식의 ID

지금은 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 

나는 PostgreSQL의 새로운 그리고 난 그것을 할하지만 난 단지 PostgreSQL을에 그것을 할 수있는 방법이 확신하는 방법을 모르고 난 아무도 도울 수 있다면 기쁠 것입니다. 다시 시작 연도 별 카운터가 당신에 내가 ID를 가정 ROW_NUMBER()

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

를 사용

+0

형식화에 대해 걱정하지 마십시오. n DB. 데이터의 논리적 구조에 대해 걱정합니다. 응용 프로그램이 데이터를 검색 할 때 형식을 지정하게하십시오. –

답변

1

당신은 FROM

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

편집 "FROM" 다른 현명한 당신이 혼동 할 키워드를 필드 이름을 변경해야합니다 연대순, 다른 현명한 파티션 순서를 변경할 수 있습니다 ORDER BY "FROM"

+0

과'concat' 또는'||'? .. –

+0

@ VaoTsun 당신이 맞습니다. –

+0

매년 OP를 다시 시작하려고합니다. –