2016-10-21 2 views
0

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

Пожалуйста, смотрите ниже случай

col1 col2 
A 1 
A 2 
B 1 
B 2 
B 3 

Мне нужно создать новый столбец «COL3», которая находит максимальное из col2 сгруппированных по col1. Таким образом, результат я хочу

col1 col2 col3 
A 1 2 
A 2 2 
B 1 3 
B 2 3 
B 3 3 

Я хотел бы знать, если запрос может быть что-то вдоль линий ниже

ALTER TABLE table1 ADD col3 AS (SELECT max(col2) GROUPBY col1) 
+2

Используете ли вы MySQL или MS SQL Server? Ответ зависит от продукта. – jarlh

+1

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

+0

@RiggsFolly. Если они рассчитаны, они не хранятся внутри базы данных, а вычисляются при запросе, если не используется «PERSISTED». И тогда они должны обычно пересчитывать себя. Тем не менее, я не уверен, как «PERSISTED» будет выполнять в этой ситуации, поскольку я считаю, что столбцы «PERSISTED» пересчитываются только тогда, когда обновляются поля, указанные в их собственной записи. – Jens

ответ

2

Вам не нужно ALTER заявления и может получить дополнительный столбец ваш SELECT запрос, например

select col1, col2, max(col2) as col3 
from tbl1 
group by col1 
+1

Должно было ждать вашего ответа и сэкономить на комментировании. :) UV Полностью согласен – RiggsFolly

+0

Он выкинет ошибку агрегатной функции –

+1

@SandipPatel, да, если она использует «SQL Server», то нет. – Rahul

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