2015-07-15 4 views
1

У меня есть случай заявление, но хотел бы добавить новый столбец «UNIT_TYPE» к столу ...SQL Добавление столбца в таблицу, с сазом

Unit_type =(case [INSP_UNIT_TYPE_ID] 
    when '9' then 'Semi Trailer' 
    when '7' then 'Pole Trailer' 
    when '6' then 'Other' 
    when '5' then 'Motor Carrier' 
    when '3' then 'Full Trailer' 
    when '2' then 'Dolly Converter' 
    when '14' then 'Intermodal Chassis' 
    when '12' then 'Van' 
    when '11' then 'Truck Tractor' 
    when '10' then 'Straight Truck' 
    else 'Invalid' 
     end) from [dbo].[Insp_Unit_Pub_01012015_05282015]; 
+1

В чем проблема, с которой вы сталкиваетесь? – HaveNoDisplayName

+0

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

+0

Вы хотите создать новую таблицу из существующей таблицы? – Ouney

ответ

1

не делаем этого и используйте вид.

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

Ваше невыразимое требование выглядит как какая-то визуализация таблицы с удобочитаемыми данными человека, и это то, к чему подходят взгляды.

создать представление, добавляя требуемое присоединяется или в том числе отчет CASE, вы пытаетесь поставить в таблице (проверьте синтаксис ^^):

CREATE VIEW [name of the view here] 
AS 
SELECT field1, 
     field2, 
     field3, 
     Unit_type = CASE [INSP_UNIT_TYPE_ID] 
     WHEN '9' THEN 'Semi Trailer' 
     WHEN '7' THEN 'Pole Trailer' 
     WHEN '6' THEN 'Other' 
     WHEN '5' THEN 'Motor Carrier' 
     WHEN '3' THEN 'Full Trailer' 
     WHEN '2' THEN 'Dolly Converter' 
     WHEN '14' THEN 'Intermodal Chassis' 
     WHEN '12' THEN 'Van' 
     WHEN '11' THEN 'Truck Tractor' 
     WHEN '10' THEN 'Straight Truck' 
     ELSE 'Invalid' 
     END 
FROM [dbo].[Insp_Unit_Pub_01012015_05282015]; 

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

+0

Спасибо, я буду иметь это в виду, если использовать представление будет достаточно. В этом конкретном случае я хочу это поле и/или редактировать поле, на котором оно основано. Конечным результатом будет использование обновленной таблицы для загрузки в другой инструмент. –

4

Вы, кажется, использует SQL Server. Просто добавьте вычисленную колонку:

alter table Insp_Unit_Pub_01012015_05282015 
    add Unit_Type as (case [INSP_UNIT_TYPE_ID] 
         when '9' then 'Semi Trailer' 
         when '7' then 'Pole Trailer' 
         when '6' then 'Other' 
         when '5' then 'Motor Carrier' 
         when '3' then 'Full Trailer' 
         when '2' then 'Dolly Converter' 
         when '14' then 'Intermodal Chassis' 
         when '12' then 'Van' 
         when '11' then 'Truck Tractor' 
         when '10' then 'Straight Truck' 
         else 'Invalid' 
        end); 

Это делает расчет при получении значения. Преимущество заключается в том, что вам не нужно писать триггер для изменения значения при изменении INSP_UNIT_TYPE_ID.

Кстати, этот вопрос предполагает, что вам нужен справочный стол для INSP_UNIT_TYPE, с INSP_UNIT_TYPE_ID в качестве первичного ключа. A JOIN на самом деле лучший способ получить значение (хотя использование вычисленного столбца с JOIN довольно громоздко).

+0

Подход таблицы ссылок должен быть лучшим, поскольку все, что требуется, это новая запись, если новый тип добавлен и не требуется изменение кода. – HLGEM

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