A 테이블

Seq

Team

Divi

Detail

2

광학팀

Delivery

Laser

9

광학팀

Delivery

Chiller

10

광학팀

Delivery

BET

11

광학팀

Delivery

BET Mount

12

광학팀

Delivery

ATT

13

광학팀

Delivery

Wave Plate

14

광학팀

Delivery

POL

15

광학팀

Delivery

Mirror 종류

16

광학팀

Delivery

Mirror Spring

17

광학팀

Head

Shutter 위치

18

광학팀

Head

Power Meter

21

광학팀

Head

LPC

22

광학팀

Head

TC Lens

23

광학팀

Head

Lens Mounting 방법

 

B 테이블

Seq

yyyy

OrderNo

CustNm

1

2018

18A765

UXN  

2

2019

20B001

비에이치  

3

2019

20B002

비에이치  

4

2019

20B003

비에이치  

5

2019

20B004

비에이치  

6

2019

20A141

비에이치  

7

2019

20A142

비에이치  

8

2019

20B010

비에이치  

9

2019

20B011

비에이치  

 

C 테이블 (idx 컬럼 추가 - A테이블 Seq 값)

Seq

idx

Team

Divi

Detail

OrderNo

Result

1

2

광학팀

Delivery

Laser

20B001

1

2

2

광학팀

Delivery

Chiller

20B001

2

3

2

광학팀

Delivery

BET

20B001

3

4

2

광학팀

Delivery

BET Mount

20B001

4

5

2

광학팀

Delivery

ATT

20B001

5

6

2

광학팀

Delivery

Wave Plate

20B001

6

7

2

광학팀

Delivery

POL

20B001

7

8

2

광학팀

Delivery

Mirror 종류

20B001

8

9

2

광학팀

Delivery

Mirror Spring

20B001

9

10

2

광학팀

Head

Shutter 위치

20B001

10

11

2

광학팀

Head

Power Meter

20B001

11

12

2

광학팀

Head

LPC

20B001

12

13

2

광학팀

Head

TC Lens

20B001

13

14

2

광학팀

Head

Lens Mounting 방법

20B001

14

15

2

광학팀

Delivery

Laser

20B004

1

 

여기서 어떤식으로 변경해야 하나요??


Declare @Columns Varchar(max), @SQL Varchar(max), @SQL1 Varchar(max)
Set @Columns = ''

Select @Columns = @Columns + '[' + Convert(varchar(10),Seq) + '],'
    From (
        Select Seq From SPSSCOrderNo
        ) AS ods
Set @Columns = LEFT(@Columns, LEN(@Columns) - 1)
------------


Set @SQL = ''
Set @SQL1 = ''

SET @SQL = '
SELECT CASE Detail WHEN ''OrderNo'' THEN 0 ELSE 1 END seq
     , a.*
  FROM (SELECT Seq
             , CAST(OrderNo AS VARCHAR(6)) OrderNo
             , CAST(CustNm  AS VARCHAR(6)) CustNm
             , '''' Team
             , '''' Divi
          FROM SPSSCTitle
        ) a
 UNPIVOT (v FOR Detail IN (OrderNo, CustNm)) a
 PIVOT (MIN(v) FOR Seq IN (' + @Columns + ')) a
UNION
SELECT *
  FROM (SELECT c.Seq
             , c.Team
             , c.Divi
             , c.Detail
             , c.Result
             , b.Seq AS Seq_b
          FROM SPSSCTitle b
         INNER JOIN SPSSCDetailOrder c
            ON b.OrderNo = c.OrderNo
        ) a
 PIVOT (MIN(Result) FOR Seq_b IN (' + @Columns + ')) a
'
EXEC(@SQL)

 

최종 원한는 화면

      (동적)  
번호 18A765 20B001 20B002 20B003 20B004 20A141 20A142 20B010 20B011 21A001 21A002 21A003 …n
NO                          
Team Divi Detail                          
광학팀 Delivery Laser   1      1                
광학팀 Delivery Chiller   2                      
광학팀 Delivery BET   3                      
광학팀 Delivery BET Mount   4                      
광학팀 Delivery ATT   5                      
광학팀 Delivery Wave Plate   6                      
광학팀 Delivery POL   7                      
광학팀 Delivery Mirror 종류   8                      
광학팀 Delivery Mirror Spring   9                      
광학팀 Head Shutter 위치   10                      
광학팀 Head Power Meter   11                      

 

 

-- MSSQL --

WITH tab_b AS

(

SELECT 1 Seq, '2018' yyyy, '18A765' OrderNo, 'A' CustNm

UNION ALL SELECT  2, '2019', '20B001', 'A'

UNION ALL SELECT  3, '2019', '20B002', 'A'

UNION ALL SELECT  4, '2019', '20B003', 'B'

UNION ALL SELECT  5, '2019', '20B004', 'B'

UNION ALL SELECT  6, '2019', '20A141', 'B'

UNION ALL SELECT  7, '2019', '20A142', 'B'

UNION ALL SELECT  8, '2019', '20B010', 'B'

UNION ALL SELECT  9, '2019', '20B011', 'D'

UNION ALL SELECT 10, '2021', '21A001', 'D'

UNION ALL SELECT 11, '2021', '21A002', 'D'

UNION ALL SELECT 12, '2021', '21A003', 'D'

)

, tab_c AS

(

SELECT 2 Seq, '광학팀' Team, 'Delivery' Divi, 'Laser' Detail, '20B001' OrderNo, null Result

UNION ALL SELECT  9, '광학팀', 'Delivery', 'Chiller'      , '20B001', null

UNION ALL SELECT 10, '광학팀', 'Delivery', 'BET'          , '20B001', 'O'

UNION ALL SELECT 11, '광학팀', 'Delivery', 'BET Mount'    , '20B001', 'O'

UNION ALL SELECT 12, '광학팀', 'Delivery', 'ATT'          , '20B001', 'X'

UNION ALL SELECT 13, '광학팀', 'Delivery', 'Wave Plate'   , '20B001', null

UNION ALL SELECT 14, '광학팀', 'Delivery', 'POL'          , '20B001', null

UNION ALL SELECT 15, '광학팀', 'Delivery', 'Mirror 종류'  , '20B001', null

UNION ALL SELECT 16, '광학팀', 'Delivery', 'Mirror Spring', '20B001', null

UNION ALL SELECT 17, '광학팀', 'Head'    , 'Shutter 위치' , '20B001', null

UNION ALL SELECT 18, '광학팀', 'Head'    , 'Power Meter'  , '20B001', null

UNION ALL SELECT 19, '광학팀', 'Delivery', 'BET'          , '20B004', 'O'

)

SELECT CASE Detail WHEN 'OrderNo' THEN 0 ELSE 1 END seq

     , a.*

  FROM (SELECT Seq

             , CAST(OrderNo AS VARCHAR(6)) OrderNo

             , CAST(CustNm  AS VARCHAR(6)) CustNm

             , '' Team

             , '' Divi

          FROM tab_b

        ) a

 UNPIVOT (v FOR Detail IN (OrderNo, CustNm)) a

 PIVOT (MIN(v) FOR Seq IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) a

 UNION

SELECT *

  FROM (SELECT c.Seq

             , c.Team

             , c.Divi

             , c.Detail

             , c.Result

             , b.Seq Seq_b

          FROM tab_b b

         INNER JOIN tab_c c

            ON b.OrderNo = c.OrderNo

        ) a

 PIVOT (MIN(Result) FOR Seq_b IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) a

;

 

현재이렇게 출력됨

0.jpg

 

원하는 출력형태

2.jpg

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21509
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12229
10860 초보 쿼리 질문드립니다. [2] phh**** 2022.11.09 88
10859 초보, 쿼리 질문 드립니다. [1] 계자 2022.11.07 76
10858 MSSQL 쿼리 질문 [3] One이 2022.10.24 143
10857 OPENROWSET 실행 중 상태 [1] 나당앙 2022.10.21 86
10856 MSSQL(VER 2014) RTRIM, LTRIM 공백제거 문의 [1] 산소녀 2022.10.18 119
10855 쿼리시 이름이 받침이 있는 경와 없는 경우 구별 [4] m**** 2022.10.13 168
10854 MYSQL 주간반복 일정 카운트 방법문의 [1] 오정석1555 2022.10.12 125
» MSSQL PIVOT 쿼리 질문드립니다. [2] file One이 2022.10.11 124
10852 MSSQL 질문있습니다. [1] 오리0341 2022.10.07 80
10851 조건에 없는 경우 대체 할 수 있는 행 [1] 설마이클 2022.10.04 97
10850 근태 관리 SQL 쿼리 질문 있습니다 [3] nattienattie 2022.09.28 513
10849 쿼리 질문 드립니다. [2] SONG78 2022.09.26 140
10848 BEGIN 오류 도움을 주실 수 있는 분이 계실까요...! [3] file 곰회무침 2022.09.21 159
10847 퀴리 질문 드립니다. [1] 곰돌이짱 2022.09.08 121
10846 쿼리 질문드립니다. [3] cheezelove 2022.09.05 122
10845 MSSQL 테이블에 삽입된 데이터 질문이요...ㅠㅠ [1] P0247X 2022.08.30 122
10844 Azure SQL Database에서 SQL Server로 이관 [1] 윤군놀자5935 2022.08.29 110
10843 ms-sql에서 update시 특정 필드에 순서 update [2] m**** 2022.08.24 160
10842 mssql 에서 mysql 로 마이그레이션시 프로시저 질문입니다 [1] 쭈우니 2022.08.24 313
10841 2개의 테이블 조인 후 통계(?) 비슷한 결과를 뽑고자 합니다. [2] file 류제경 2022.08.19 196





XE Login