SQL-вычисляемый столбец, Coallesce, два поля DateTime, индекс - PullRequest
2 голосов
/ 24 сентября 2019

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

Delivery_Date (DateTime) Delivery_Override (DateTime)

(я долженсохранить Первоначальную дату доставки для других вещей, которые я делаю)

Я создал следующий вычисляемый столбец

Delivery_Packdate формула : (coalesce(nullif([Delivery_Override],''),[Delivery_Date]))

и теперь я могу сделать выбор, подобный этому:

select * from Deliveries where Delivery_PackDate = '2019-09-24' 

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

Проблема в том, что я быМне нравится индексировать это, но SQL не допустит этого, потому что это недетерминировано.

Я полагаю, что я делаю что-то не так, как я могу решить это правильно?Любые советы?

Спасибо.

1 Ответ

1 голос
/ 24 сентября 2019

Проблема в том, что вы конвертируете в строку.Следующее работает отлично:

create table t (
    Delivery_Override datetime,
    Delivery_Date datetime
);

alter table t add dt as (coalesce(Delivery_Override, Delivery_Date)) persisted;

create index idx_t_dt on t(dt);

Здесь - это дБ <> скрипка.

Не существует такого понятия, как дата / время со значением ''.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...