2015-02-03 3 views
1

У меня есть столбец varchar с 3 типами значений. Я хочу разбить его на 3 базы столбцов на типы значений. Например моя колонка, FactoryName значенийКак разбить столбец на разные столбцы

  1. Ананта
  2. Ананта
  3. АТЛ
  4. ESBL
  5. АТЛ
  6. АТЛ

Я хочу 3 колонки с именем Factory1, Factory2, Factory3, когда значением FactoryName является «ANANTA», «ATL» & "ESBL" respectively.The результат должен быть как

  • Factory1
  • Ананта
  • Ананта
  • NULL
  • NULL
  • NULL
  • NULL

  • Factory2

  • NULL
  • NULL
  • АТЛ
  • NULL
  • АТЛ
  • АТЛ

    Могу ли я сделать это, используя случай или что-то еще? Как?

ответ

2

Использование Pivot перенести данные

CREATE TABLE #comp 
    (
    name VARCHAR(50) 
) 

INSERT #comp 
VALUES ('ANANTA'),('ANANTA'),('ATL'), 
     ('ESBL'),('ATL'),('ATL') 

SELECT [ANANTA] AS factory1, 
     [ATL] AS factory2, 
     [ESBL] AS factory3 
FROM #comp 
     PIVOT (Max(name) 
      FOR name IN ([ANANTA], 
          [ATL], 
          [ESBL])) piv 

или conditional Aggregate

select max(case when name = 'ANANTA' then name end) factory1, 
     max(case when name = 'ATL' then name end) factory2, 
     max(case when name = 'ESBL' then name end) factory3 
from #comp 

Update: Если вы не хотите показывать результат в виде одной строки, то удалить max агрегат

SELECT CASE WHEN name = 'ANANTA' THEN name END factory1, 
     CASE WHEN name = 'ATL' THEN name END factory2, 
     CASE WHEN name = 'ESBL' THEN name END factory3 
FROM #comp 
+0

Но это только показывает 1 строку. Я хочу, чтобы все значения 1-го столбца были в 3 столбца. – Mimi

+0

@Mimi Тогда как вы хотите отформатировать результат? вы можете отредактировать вопрос с ожидаемым выходом в формате таблицы –

Смежные вопросы