Продажи, Дата первая, Дата вторая
У меня есть три поля во временной таблице, из которых мне нужно создать вычисляемый столбец, равный (Дата один - Дата два) в точных десятичных годах или днях Я запускаю код ниже, чтобы найти первый вычисляемый столбец; однако я получаю сообщение об ошибке, упомянутое внизу
ALTER TABLE #temptable
ADD [TimeDif_Day] AS (SELECT *, DATEDIFF (DAY, Date_one, Date_two))
Подзапросы в этом контексте запрещены. Допускаются только скалярные выражения.
Пожалуйста, объясните, почему подзапросы не разрешены.
Обратите внимание, что таблицы имеют столбцы, а не поля.
Я полагаю, вам нужно удалить ложные вещи из того, что у вас есть:
ALTER TABLE #temptable ADD [TimeDif_Day] AS DATEDIFF (DAY, Date_one, Date_two)
Стандарт имеет
СОЗДАТЬ ЛОКАЛЬНУЮ ВРЕМЕННУЮ ТАБЛИЦУ... ( Продажи ... , Дата1 ..., Дата2 ... , TimeDif_Day ВСЕГДА СОЗДАЕТСЯ КАК <выражение вычисления> )
<выражение вычисления> не может ссылаться ни на что, кроме трех других столбцов.
Если ваша СУБД не поддерживает эту конкретную функцию стандарта, найдите способ просто оставить таблицу как есть и просто использовать SELECT в том месте, где вы ее используете. В противном случае, возможно, в вашей СУБД возможно создать вторую «временную» таблицу в качестве представления («временное представление», если такое существует) в первой, но это, похоже, не санкционировано стандартом.
Какие СУБД вы используете?