2016-11-17 4 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

以下のquriesを使用して、行データを列に変換することができます。

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は、ジョイン:(ピボットなし)

  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

thnksにお問い合わせください。問題が解決しました。 – ksu

0

をIサブクエリを使用して別の方法でそれを試してくれます。とにかくあなたはすでに答えがあることをうれしく思います。

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 
関連する問題