2016-01-14 4 views
-2

это мой первый вопрос здесь. Я очень новичок в SQL Server и T-SQL.Почему эта процедура не работает?

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

Как это сделать?

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

Это должно выглядеть

Column A, ColumnB, 
Column C=select count(*) from [another table] where.... 

Не могли бы вы посоветовать?

+0

Возможный дубликат [Как создать таблицу на основе другой таблицы] (http://stackoverflow.com/questions/18254104/how-do-i-create-a-table-b ased-on-another-table) –

+3

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

ответ

0
SELECT [COLUMN A],[COLUMN B],COUNT(*) as [COLUMN C] 
INTO [destination table] FROM [another table] where... 

Вы должны использовать псевдоним

0

Вы создаете таблицу, используя синтаксис создания таблицы, так как вам нужно будет определить имена полей и размеров. Посмотрите синтаксис в Books Online. Никогда не используйте SELECT INTO, если вы не создаете промежуточную таблицу для одноразового использования или временную таблицу. Это не лучший выбор для создания новой таблицы. Кроме того, вы не говорите, откуда выходят ни один из других столбцов, кроме столбца один, поэтому может быть невозможно правильно настроить правильные размеры полей из исходной вставки. Кроме того, откровенно говоря, вы должны потратить время на размышления о том, какие столбцы вам нужны и какие типы данных они должны быть, безответственно избегать этого для таблицы, которая будет постоянно использоваться.

Чтобы заполнить, вы используете оператор Insert с помощью select вместо оператора значений. Если только в колонке C пришел из другой таблицы, то это может быть что-то вроде ":.

Insert table1 (colA, Colb, colC) 
select 'test', 10, count(*) 
from tableb 
where ... 

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

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

+0

У меня есть таблица [резервирование] с coulmns: booking_id, person_id, trip_id. И у меня есть еще одна таблица [trip] с столбцом [available_places], и я хотел бы иметь еще один столбец с [free_places], и здесь мне нужно вычислить, сколько заказов уже сделано для этой поездки (выберите count (*) из заказы, где trip_id = 1. –

+0

У меня такой вид. Но в моем проекте мне также нужен такой столбец в таблице. Я попытался использовать этот синтаксис «ALTER TABLE table_name ADD column_name datatype», но получил ошибки :-( –

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