2016-11-17 2 views
-1

우리는 작업을하고 있으며 휴일 프로젝트가 있습니다.SQL 행을 열로 변환

표 결과는 다음과 같습니다 나는 결과를 다음 원하는

  Rn TicketNo task    Assigned emp 
      1 a   Holdiay    sunday  emp_A 
      2 a   Task A completed monday  emp_A 
      1 b   Holiday    sunday  emp_B 
      2 b   Task A completed monday  emp_B 

.

  TicketNo emp  sunday monday 
      a   emp_A Holdiay Task A completed 
      b   emp_B Holiday Task A completed 

피벗을 사용하지 않고 쿼리를 시도하고 있습니다. 도움을 청합니다.

+1

MySQL 또는 Oracle을 사용하고 있습니까? 관련되지 않은 제품에 태그를 지정하지 마십시오. – jarlh

+1

SQL Server 2008을 사용하고 있습니다. – ksu

+0

표 형식을 다음과 같이 지정하십시오. –

답변

0

아래의 큐를 사용하여 행 데이터를 열로 변환 할 수 있습니다.

1.using 피벗

  select distinct TicketNo,emp,sunday,monday 
      from 
      (
       select distinct TicketNo ,task, Assigned,emp from <tbl_name> 
      ) src 
      pivot 
      (
       max(task) 
       for Assigned in (sunday, monday) 
      ) piv 

2.Using 조인 (피벗)없이 I 서브 쿼리를 사용하여 가입 다른 방법을 시도

  select a.ticketno, 
        a.emp 
        ,a.task as sunday 
        ,b.task as monday 
        from <tbl_name> a join <tbl_name> b 
        on a.assigned='sunday' and b.assigned='monday' 
        and a.ticketno=b.ticketno 
+0

명의 도움을 받으십시오. 문제 해결됨. – ksu

0

. 어쨌든 당신이 이미 답을 가지고있어서 다행입니다.

SELECT * INTO YOUR_TABLE FROM 
(   SELECT 1 AS Rn,'a' AS TicketNo,'Holiday' as task,'sunday' as Assigned,'emp_A' as emp 
      UNION ALL 
      SELECT 2,'a','Task A completed','monday','emp_A' UNION ALL 
      SELECT 1,'b','Holiday','sunday','emp_B' UNION ALL 
      SELECT 2,'b','Task A completed','monday','emp_B' 
) X 

SELECT * FROM YOUR_TABLE 


SELECT T1.TicketNo 
     ,T1.emp 
     ,T1.Sunday 
     ,T2.Monday 
FROM  
(SELECT TicketNo 
     ,emp 
     ,CASE WHEN task='Holiday' then 'Holiday' end as Sunday 
FROM YOUR_TABLE 
WHERE CASE WHEN task='Holiday' then 'Holiday' end IS NOT NULL) T1 

JOIN 

(SELECT TicketNo 
     ,emp 
     ,CASE WHEN task='Task A completed' then 'Task A completed' end as Monday 
FROM YOUR_TABLE 
WHERE CASE WHEN task='Task A completed' then 'Task A completed' end IS NOT NULL) T2 

ON T1.TicketNo = T2.TicketNo