2016-11-17 3 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. sir – ksu

+0

Отформатируйте свои таблицы так, чтобы они выглядели как ... таблицы –

ответ

0

Вы можете преобразовать данные строк в столбец, используя ниже quries.Try It.

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 Соединения: (без Pivot)

  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

Я попробовал это по-другому, используя вложенные запросы и соединения. В любом случае рад, что у вас уже есть ответ.

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 
Смежные вопросы