아래 사진을 참고하세요.


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


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


테이블 구조는


직원 테이블

구분 아이디     이름     입사일자

신입 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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 23439
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12418
9000 백업 또는 미러링에 대한 문의입니다. [7] Gusto 2015.10.30 2769
8999 유지 관리 계획에 대해 질문드립니다. [1] 나는짱이야 2015.10.30 2600
8998 필드 타입 변경 문의 드립니다. [2] 죠리퐁 2015.10.29 2335
8997 날짜와 날짜 사이의 포함된 일수를 구하고 싶습니다. [2] 이시우_301202 2015.10.29 2749
8996 mssql 메모리 문제로 문의 드립니다. [4] 홍훈아 2015.10.29 4623
» 동적으로 데이터가 생성됨에 따라 조회 쿼리 (피벗) [2] 상남자 2015.10.28 2647
8994 월합계를 구하고자 하는데 어떻게 해야 하는지요? [4] 슈토파이터 2015.10.28 2252
8993 쿼리질문입니다. [3] 희망나라 2015.10.28 2256
8992 데이터 조회시 오류 ( 70만 x 5 = 350만 ) [1] HSQL 2015.10.27 2224
8991 일자별로 합계집계를 하고자 합니다. [4] 슈토파이터 2015.10.26 3086
8990 데이터가 갑자기 삭제.. [2] 냥냥 2015.10.26 2494
8989 트랜잭션 로그 파일 용량에 대해 궁금한 것이 있습니다. [2] 죄민수 2015.10.24 2636
8988 계층형 쿼리에 대해 문의 드립니다. [1] 나는짱이야 2015.10.23 2498
8987 이런 형태가 가능한지 모르겠습니다. [2] 민성 2015.10.23 2094
8986 한달은 4개 구간으로 나눌수 있을까요? [10] DOOLLY 2015.10.23 3565
8985 identity 값 질문입니다~ [4] 카르페디엠 2015.10.20 2655
8984 기본 함수 질문 드립니다. [5] 아수라발발타 2015.10.20 2623
8983 2008 R2에서 미러링했을 경우 미러서버에서 스케쥴 질문드립니다. [1] 양털목도리 2015.10.20 2446
8982 테이블 합치기 [4] Gusto 2015.10.19 2796
8981 쿼리 질문 있습니다. [2] 솜이불 2015.10.19 2233





XE Login