Как добавить два столбца в один столбец в SQL? - PullRequest
2 голосов
/ 06 ноября 2011

В моей Таблице есть две колонки, которые называются Рабочими - Техниками.В «Рабочих» у меня есть имя рабочих, а в «Технических специалистах» у меня есть имя техников, которые работают в компании.Вот как это выглядит:

Рабочие Техники

Andy                  Kevin
Conan                 Jason
Jay                   Ray
Donald                Daryl
Martin                .
Mark                  .(rows goes on)
.
.(rows goes on)       

Я хочу добавить эти строки и добавить столбецСотрудники.Вот что я хочу:

Сотрудники

Andy                  
Conan                 
Jay                   
Donald               
Martin                
Mark
Kevin
Jason
Ray
Daryl
.
.

Я не хочу создавать другую таблицу, я просто хочу добавить новый столбец.Как бы я это сделал?

Ответы [ 4 ]

8 голосов
/ 06 ноября 2011

Заявление о союзе должно сделать работу здесь. Примерно так:

 select Name from Workers-Technitians where Worker not null
 UNION 
 select Name from Workers-Technitians where Technitian not null

Имейте в виду, что оба запроса должны иметь одинаковое количество столбцов при использовании объединения

4 голосов
/ 06 ноября 2011

Предполагая, что ваш стол называется "штат", вы можете сделать что-то вроде этого.

select distinct employees from (
  select workers as employees from staff s1
  union select technicians as employees from staff s2
) as emps

Возможно, вам нужно еще раз взглянуть на свой дизайн.Добавление третьего столбца не сработает, потому что первые два столбца представляют две строки.На самом деле, кажется, что между рабочими и техниками уже существуют принудительные отношения - они, по-видимому, объединены в одной записи без особой причины.

Подумайте начать заново с таблицы Employee с одним сотрудникомза строку и отказаться от существующей таблицы.Вы можете сохранить атрибуты сотрудника в этой таблице, если требования просты, или объединить отдельную таблицу атрибутов для более сложных случаев.В любом случае нормализация ваших данных облегчит вашу жизнь, и использование объединения для объединения столбцов будет ненужным.

1 голос
/ 06 ноября 2011

Я также не совсем понимаю, что вы хотите сделать (в основном из-за этого: если, скажем, в строке есть «Энди» в Рабочие и «Кевин» в Техники , что вы положите в Сотрудники ? Энди или Кевин?), но чтобы добавить в таблицу новый столбец и затем заполнить его данными, которые необходимо:

  1. Добавьте его (при условии, что ваша таблица называется Table, и для нового столбца достаточно 100 символов):

    alter table [Table] add [Employees] nvarchar (100)null

  2. Заполните его:

    update [Таблица] set [Employees] = [Workers]

    - или:

    update [Table] set [Employees] = [Technicians]

Я считаю, что вы действительно хотите, чтобы новая таблица, Сотрудники, и изменить Рабочие и Техники в отношениях, взятых из него.Для этого см. Ссылку, которую Саймон дал вам о нормализации базы данных.

1 голос
/ 06 ноября 2011

Я не совсем понимаю ваш вопрос, но вы не хотите добавлять дополнительный столбец, это создает (более) избыточность данных и усложняет любые будущие обновления или запросы. Используйте одно из предоставленных решений для запросов SELECT и серьезно подумайте над тем, чтобы перегруппировать два существующих отдельных столбца в один столбец. Я предлагаю вам взглянуть на нормализация базы данных , если вы еще не знакомы с этой концепцией.

...