데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.


아래 사진을 참고하세요.


아래 정보를 웹에서 조회할 수 있게 관리하려고 합니다.


파란색 상자는 상황에 따라 동적으로 증가되기도 하고 감소하기도 합니다.


테이블 구조는


직원 테이블

구분 아이디     이름     입사일자

신입 1111111  홍길동 2015-10-01

...


단계 테이블

아이디    단계  단계이름   교육일자    교육시간  배점

1111111   1       A교육   2015-10-01     30분     8점

1111111   1       A교육   2015-10-01     30분     8점

1111111   1       A교육   2015-10-01     30분     8점

1111111   1       A교육   2015-10-01     30분     8점

1111111   1       A교육   2015-10-01     30분     8점

1111111   1       A교육   2015-10-01     30분     8점

1111111   1       A교육   2015-10-01     30분     8점

2222222   2       B교육   2015-10-01     30분     10점

...

이런식으로 설계할 예정이었습니다. ( 단계가 추가되면 insert 되어 관리될 수 있도록 )



쿼리는


직원 테이블을 기준으로 직원 테이블의 컬럼 사이에 단계테이블을 조인하여 중간에 삽입하고 싶습니다...



어떤 방법으로 접근해야할지 모르겠네요.




ps. 단계 테이블을 피벗하여 직원 테이블과 조인하여 쿼리를 접근하려고 했으나 방법이 틀린 것 같아서... 





조언 또는 쿼리 조언 부탁드립니다.


감사합니다.



que.png










DECLARE @COLUMNS_MINUTE NVARCHAR(MAX)

DECLARE @SQL_MINUTE NVARCHAR(MAX)



SET @COLUMNS_MINUTE = N'';


SELECT @COLUMNS_MINUTE += N', p.' + QUOTENAME(EDU_LEV)

FROM (

SELECT ER.EDU_LEV

FROM UTB_EDUCATION_RESULT ER

GROUP BY ER.EDU_LEV ) A


PRINT @COLUMNS_MINUTE


SET @SQL_MINUTE = N'

SELECT EMP_ID "EMP_ID", ' + STUFF(@COLUMNS_MINUTE, 1, 2, '') + ' 

INTO PIVOT_MINUTE

FROM (

SELECT EMP_ID

,EDU_LEV

,EDU_MINUTE

FROM UTB_EDUCATION_RESULT ER

) A

PIVOT (

SUM(EDU_MINUTE) FOR EDU_LEV IN ('

+ STUFF(REPLACE(@COLUMNS_MINUTE, ', p.[', ',['), 1, 1, '')

+ ')

) AS p'

PRINT @SQL_MINUTE

EXEC SP_EXECUTESQL @SQL_MINUTE




DECLARE @COLUMNS_SCORE NVARCHAR(MAX)

DECLARE @SQL_SCORE NVARCHAR(MAX)



SET @COLUMNS_SCORE = N'';


SELECT @COLUMNS_SCORE += N', p.' + QUOTENAME(EDU_LEV)

FROM (

SELECT ER.EDU_LEV

FROM UTB_EDUCATION_RESULT ER

GROUP BY ER.EDU_LEV ) A


PRINT @COLUMNS_SCORE


SET @SQL_SCORE = N'

SELECT EMP_ID "EMP_ID", ' + STUFF(@COLUMNS_SCORE, 1, 2, '') + ' "SCORE "

INTO PIVOT_SCORE

FROM (

SELECT EMP_ID

,EDU_LEV

,EDU_SCORE

FROM UTB_EDUCATION_RESULT ER

) A

PIVOT (

SUM(EDU_SCORE) FOR EDU_LEV IN ('

+ STUFF(REPLACE(@COLUMNS_SCORE, ', p.[', ',['), 1, 1, '')

+ ')

) AS p'

PRINT @SQL_SCORE

EXEC SP_EXECUTESQL @SQL_SCORE








SELECT *

FROM UTB_EDUCATION (NOLOCK) ER

INNER JOIN PIVOT_MINUTE (NOLOCK) PM

ON ER.EMP_ID = PM.EMP_ID

INNER JOIN PIVOT_SCORE (NOLOCK) PS

ON ER.EMP_ID = PS.EMP_ID





qw2.png











No. Subject Author Date Views
9011 쿼리문 질문 하겠습니다. [4] 백마탄나 2015.11.11 2468
9010 substring 리턴값 관련하여 질문 올립니다.ㅠ [8] msakstp 2015.11.10 3478
9009 퀴리문 질문입니다. [2] 희망나라 2015.11.10 3294
9008 select 트랜잭션 일관성 [3] 쵸보 2015.11.10 2891
9007 미러링 수동 장애조치와 자동 장애조치에 대해서 [1] dontcryme 2015.11.09 2532
9006 쿼리 비용 관련 [4] 냥냥 2015.11.09 2788
9005 쿼리 질문 드립니다. [4] 뇽이 2015.11.05 2495
9004 테이터 타입 질문입니다. [3] 희망나라 2015.11.05 2407
9003 쿼리질문드립니다. [2] Lynn 2015.11.04 2350
9002 3704 개체가 닫혀있다..? [2] 마힐링 2015.11.04 3717
9001 sql 컬럼 2개를 동시에 부정문으로 하고 싶은데... [6] 개발좋아 2015.11.02 6692
9000 백업 또는 미러링에 대한 문의입니다. [7] Gusto 2015.10.30 2736
8999 유지 관리 계획에 대해 질문드립니다. [1] 나는짱이야 2015.10.30 2573
8998 필드 타입 변경 문의 드립니다. [2] 죠리퐁 2015.10.29 2303
8997 날짜와 날짜 사이의 포함된 일수를 구하고 싶습니다. [2] 이시우_301202 2015.10.29 2712
8996 mssql 메모리 문제로 문의 드립니다. [4] 홍훈아 2015.10.29 4533
» 동적으로 데이터가 생성됨에 따라 조회 쿼리 (피벗) [2] 상남자 2015.10.28 2622
8994 월합계를 구하고자 하는데 어떻게 해야 하는지요? [4] 슈토파이터 2015.10.28 2215
8993 쿼리질문입니다. [3] 희망나라 2015.10.28 2223
8992 데이터 조회시 오류 ( 70만 x 5 = 350만 ) [1] HSQL 2015.10.27 2179





XE Login