|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Dmitry Shykhman 2:468/13.32 02 Mar 2001 20:31:15 To : Vladimir Ivanov Subject : Hевозможно (select) -> join ? -------------------------------------------------------------------------------- 17 Feb 01 13:52, you wrote to Andrew Evdokimov: VI> предложите вариант для следующего примера (остатки по дебету на счете VI> @Account на дату @DateIdx в разрезе аналитики первого уровня VI> An1): VI> select An1, sum(debet) VI> from Saldo S VI> where Account=@Account VI> and DateIdx in ( VI> select max (DateIdx) VI> from Saldo VI> where DateIdx<@ToIdx VI> and Account=S.Account VI> and AnPacket=S.AnPacket VI> ) VI> group by An1 так читабельнее будет кстати, подзапрос возвращает 1 значение, нафига in? ну а по существу - похожий вопрос не так давно обсуждался, вроде бы и здесь. добавляешь в таблицу Saldo поле EndIdx, назначаешь ему что-нибудь большое по дефолту, и делаешь триггеры на его обновление в предыдущей записи при вставке. Вставка записей чуть замедляется, зато: select An1, sum(debet) from Saldo where Account = @Account and DateIdx < @ToIdx and EndIdx >= @ToIdx group by An1 ни подзапросов, ни джойнов подойдёт? Dmitry --- GoldED+/W32 1.1.4.4 * Origin: Lasciate ogni speranza (2:468/13.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/27613a9fdf39.html, оценка из 5, голосов 10
|