2015-08-04 4 views
1

Я использую SSMS 2012. Рассмотрим таблицу A со столбцами A, B, C. Я бы хотел динамически добавить новый столбец D в эту таблицу на основе условия в один из существующих столбцов. Как это можно достичь?Добавить столбцы динамически на основе условия в SQL

запрос выглядит следующим образом, выберите col1, col2 из #temptbl

Для этого #temptbl, я хотел бы добавить столбец, COL3 и значение в col3 основано на состоянии на col2.

+0

Вы пробовали что-нибудь с хранимыми процедурами. если количество coulmns одинаково для каждой таблицы, это можно сделать – HashSu

+2

Вы имеете в виду добавление столбца только в записи, которые соответствуют этому условию? В этом случае это невозможно. Вам нужно будет добавить столбец для всей таблицы. Было бы лучше добавить столбец в любом случае и установить значение для столбца на основе условия (возможно, вычисленного поля) – Tom

+0

@Tom: Да, это то, что я имел в виду. Добавьте столбец и возвращайте значения в этом столбце на основе условия. Как это может быть сделано? – Raja

ответ

0

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

+0

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

+0

запроса выглядит следующим образом, выберите col1, col2 из #temptbl Для этого #temptbl, я хотел бы добавьте столбец, col3, а значение в col3 основано на условии на col2. – Raja

+0

Как Том сказал: «Было бы лучше добавить столбец в любом случае и установить значение для столбца на основе условия« –

0

После вашего редактирования все еще невероятно туманно, что вы хотите сделать, но, возможно, это близко ??? Не знаю, каково должно быть условие или результат, но когда условие не выполняется, вывод этого будет NULL.

select col1 
    , col2 
    , case when SomeCondition then SomeValue end as Col3 
from #temptbl 
1

Чтобы добавить столбец, вам нужно ALTER за столом

Предположим, вы хотите добавить целое число для COL3

ALTER TABLE #temptbl 
ADD col3 INTEGER 

и обновить значение в col3 на основе условия на col2, вам необходимо сделать UPDATE и использовать инструкцию CASE для проверки состояния:

Предположим, вы хотите установленное значение 3 в COL3 если COL2 равно 2

UPDATE #temptbl 
SET col3 = CASE WHEN col2 = 2 THEN 3 ELSE null END 
Смежные вопросы