А когда таковых больше одного - получаем multiple rows in singleton select?


А как оно там больше одного получится при условии, что диапазоны дат для каждой версии записи не пересекаются?

   Чуть ниже.

И чем битвин лучше фирста по индексу?


Select D.Num, C.Address
from Doc D
Inner Join Clients C on D.IdClient = C.IdClient and D.Dat between C.StartDt
and C.EndDt

А с фирстом еще и подзапрос рисовать придется...

  Ды ну?

Select D.Num, C.Address
 from Doc D
 Inner Join Clients C on D.IdClient = C.IdClient_Generation


А, ну да, для твоей схемы оно конешно, у меня-то моя перед глазами стоит... :)))

Ну а все-таки поведай, как ты поступаешь, когда меняется дата актуальности какой-то версии записи в справочнике? Шерстишь все документы и подменяешь где надо IdClient_Generation?

Ай, Глебушка, не надо ля-ля :) Там подвижки/сжатия/растяжения массы периодов нужны по результатам редактирования одного, какие там статьи про блокировки...

Не знаю, я просто блокирую все "версии" одной записи. Мне как бы большего не требуется.

Ты подумай как-нить на досуге например о календарном планировании загрузки оборудования деталями, требующими разной продолжительности обработки на разных единицах. Хотя бы в количестве трёх штук одного и двух другого. Только крышу заранее подвяжи чем-нить, чтоб не съехала незаметно ;)

Ну ты загнул. :) Не буду. Я честно говоря с такими задачами не сталкивался. Но, имхо, это не про переодические реквизиты. Или какой-то их эксклюзивный вариант...

With b/r. Gleb.

Ответить