2012-11-21 2 views
0

emp_id, headcount, fte, effective_date, status, status_2와 같은 열이있는 직원 테이블이 있습니다.행의 데이터를 열 양식으로 변환하는 방법은 무엇입니까?

날짜와 종료일을 입력란으로 사용하여 보고서를 작성해야합니다. 이것은 effective_date와 비교하여 점검됩니다.

입력이 2012 년 1 월 1 일부터 2013 년 2 월 25 일까지 인 경우 결과는 아래 이미지와 같이 다음 형식으로 표시되어야합니다.

enter image description here

숫자 1,0,10,20 지정된 달의 인력의 합을 나타냅니다.

3 월에 발효 일을 가진 5 명의 직원이있는 경우 3 월에는 5 칸이 생기고 5 칸은 직원의 상태 및 상태 2 란을 기준으로 다시 분할됩니다.

그 중 5 개 중 2 개는 상태 A, 상태 2 일 수 있습니다. A1 3은 상태 A, 상태 2 일 수 있습니다. A2

결과를 얻으려면 어떻게해야합니까?

다음은 employee 테이블의 DDL입니다.

-------------------------------------------------------- 
-- DDL for Table BI_EMPLOYEE 
-------------------------------------------------------- 

CREATE TABLE "HEADCOUNT_BI"."BI_EMPLOYEE" 
( 
    "EMP_ID" NUMBER(*,0) NOT NULL ENABLE, 
    "STATUS" NUMBER(*,0), 
    "STATUS_2" NUMBER(*,0), 
    "FTE" FLOAT(126), 
    "EFFECTIVE_DATE" DATE, 
    "HEADCOUNT" NUMBER(*,0), 
    CONSTRAINT "HEADCOUNT_EMPLOYEE_BI_PK" PRIMARY KEY ("EMP_ID") ENABLE 
); 

답변

1

pivot 데이터입니다. 오라클 11 :

SELECT 
    * 
FROM 
    (select 
     status, status_2,to_char(EFFECTIVE_DATE, 'Mon''DD') as EFFECTIVE_DATE, 
     sum(HEADCOUNT) as HEADCOUNT 
    from "BI_EMPLOYEE" 
    group by status, status_2,EFFECTIVE_DATE 
    ) 
PIVOT 
    (
    sum(HEADCOUNT) 
    for EFFECTIVE_DATE in ('Jan''12', 'Feb''12') 
    ) 

피벗 필드 목록은 반드시 상수 여야합니다.

편집,이 시간에 당신이 한 달이 아니라 일으로 집계 볼 :

SELECT 
    * 
FROM 
    (select 
     status, status_2,to_char(EFFECTIVE_DATE, 'Mon''YY') as EFFECTIVE_DATE, 
     sum(HEADCOUNT) as HEADCOUNT 
    from "BI_EMPLOYEE" 
    group by status, status_2, to_char(EFFECTIVE_DATE, 'Mon''YY') 
    ) 
PIVOT 
    (
    sum(HEADCOUNT) 
    for EFFECTIVE_DATE in ('Jan''12', 'Feb''12') 
    ) 

당신은 대답하는 방법을 pivot in Oracle previus versions.

+0

감사를 배울 수 있습니다. 피벗 필드 목록이 동적 일 수있는 방법이 있습니까? 예 : 시작 날짜와 종료 날짜를 알 수 있으며이를 기반으로 피벗 필드 목록을 만들어야합니다. – ashishjmeshram

+0

직접적인 방법은 없습니다. 동적 피벗에 대한 웹 검색을 수행 할 수 있습니다. 귀하의 언어 프로그램으로 피벗 필드를 '익히십시오'라고 제안합니다. Oracle에서 데이터를 검색하는 데 사용하는 언어는 무엇입니까? – danihp

+0

java는 우리가 사용하는 언어입니다 – ashishjmeshram

관련 문제