-- Получим остатки SELECT БИ.Субконто1 AS [Товар $Субконто], БИ.Субконто1_вид AS Товар_вид, БИ.КоличествоОстаток AS Количество FROM ( SELECT Счет ,Валюта ,Субконто1,Субконто1_вид ,SUM(КоличествоОстаток) КоличествоОстаток ,CASE WHEN SUM(КоличествоОстаток) > 0 THEN SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокДт ,CASE WHEN SUM(КоличествоОстаток) < 0 THEN -SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокКт FROM ( SELECT bkttl_vt.ACCID AS Счет ,bkttl_vt.CURRID AS Валюта ,CASE WHEN bkttl_vt.VSC0 = ' EL' THEN bkttl_vt.SC0 WHEN bkttl_vt.VSC1 = ' EL' THEN bkttl_vt.SC1 WHEN bkttl_vt.VSC2 = ' EL' THEN bkttl_vt.SC2 END Субконто1 ,' EL' Субконто1_вид ,CASE WHEN bkttl_vt.KIND = '3' THEN bkttl_vt.SD+bkttl_vt.OBDT1-bkttl_vt.OBKT1 ELSE 0 END AS КоличествоОстаток FROM __1S_BKTTL bkttl_vt INNER JOIN vt_Счета a ccfilter ON bkttl_vt.ACCID = accfilter.val WHERE (bkttl_vt.DATE = '20140701') AND (bkttl_vt.KIND = '3') AND (' EL' IN (bkttl_vt.VSC0,bkttl_vt.VSC1,bkttl_vt.VSC2)) AND (SUBSTR(CASE WHEN bkttl_vt.VSC0 = ' EL' THEN bkttl_vt.SC0 WHEN bkttl_vt.VSC1 = ' EL' THEN bkttl_vt.SC1 WHEN bkttl_vt.VSC2 = ' EL' THEN bkttl_vt.SC2 END,-9) IN (SELECT val FROM vt_ВыбТовар)) UNION ALL SELECT entry_vt.ACCDTID ,CASE WHEN entry_vt.DTFLAGS & 1 = 1 THEN entry_vt.CURRID ELSE ' 0 ' END ,CASE WHEN entry_vt.VDTSC0 = ' EL' THEN entry_vt.DTSC0 WHEN entry_vt.VDTSC1 = ' EL' THEN entry_vt.DTSC1 WHEN entry_vt.VDTSC2 = ' EL' THEN entry_vt.DTSC2 END ,' EL' ,-entry_vt.AMOUNT FROM __1S_ENTRY entry_vt WHERE (entry_vt.ACCDTID IN (SELECT val FROM vt_Счета)) AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '201407238TYJM8 1RJNЦБ ') AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20140801 0 0 ') AND (entry_vt.ACTIVE = ' ') AND (' EL' IN (entry_vt.VDTSC0,entry_vt.VDTSC1,entry_vt.VDTSC2)) AND (SUBSTR(CASE WHEN entry_vt.VDTSC0 = ' EL' THEN entry_vt.DTSC0 WHEN entry_vt.VDTSC1 = ' EL' THEN entry_vt.DTSC1 WHEN entry_vt.VDTSC2 = ' EL' THEN entry_vt.DTSC2 END,-9) IN (SELECT val FROM vt_ВыбТовар)) AND (entry_vt.PROVKIND <> 'K') UNION ALL SELECT entry_vt.ACCKTID ,CASE WHEN entry_vt.KTFLAGS & 1 = 1 THEN entry_vt.CURRID ELSE ' 0 ' END ,CASE WHEN entry_vt.VKTSC0 = ' EL' THEN entry_vt.KTSC0 WHEN entry_vt.VKTSC1 = ' EL' THEN entry_vt.KTSC1 WHEN entry_vt.VKTSC2 = ' EL' THEN entry_vt.KTSC2 END ,' EL' ,entry_vt.AMOUNT FROM __1S_ENTRY AS entry_vt WHERE (entry_vt.ACCKTID IN (SELECT val FROM vt_Счета)) AND ( entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '201407238TYJM8 1RJNЦБ ') AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20140801 0 0 ') AND (entry_vt.ACTIVE = ' ') AND (' EL' IN (entry_vt.VKTSC0,entry_vt.VKTSC1,entry_vt.VKTSC2)) AND (SUBSTR(CASE WHEN entry_vt.VKTSC0 = ' EL' THEN entry_vt.KTSC0 WHEN entry_vt.VKTSC1 = ' EL' THEN entry_vt.KTSC1 WHEN entry_vt.VKTSC2 = ' EL' THEN entry_vt.KTSC2 END,-9) IN ( SELECT val FROM vt_ВыбТовар)) AND (entry_vt.PROVKIND <> 'D') ) AS accountingbalance GROUP BY Счет,Валюта ,Субконто1,Субконто1_вид HAVING (SUM(КоличествоОстаток) <> 0) ) AS БИ create table x( [DOCID] char(9) collate _1C not null ,[NUMBER] numeric(5, 0) not null ,[CORNO] numeric(5, 0) not null ,[DATE] char(8) not null ,[TIME] char(6) collate _1C not null ,[ACCDTID] char(9) collate _1C not null ,[ACCKTID] char(9) collate _1C not null ,[SUM] numeric(14, 2) not null ,[CURRID] char(9) collate _1C not null ,[CURSUM] numeric(14, 2) not null ,[AMOUNT] numeric(14, 3) not null ,[PROVKIND] char(1) collate _1C not nul l ,[ACTIVE] char(1) collate _1C not null ,[DTFLAGS] numeric(1, 0) not null ,[KTFLAGS] numeric(1, 0) not null ,[DOCLINENO] numeric(4, 0) not null ,[SP547] char(50) collate _1C not null ,[SP548] char(2) collate _1C not null ,[SP27565] char(25) collate _1C not null ,[VDTSC0] char(4) collate _1C not null ,[DTSC0] char(13) collate _1C not null ,[ODTSC0] numeric(1, 0) not null ,[VDTSC1] char(4) collate _1C not null ,[DTSC1] char(13) collate _1C not null ,[ODTSC1] numeric(1, 0) not null ,[VDTSC2] char(4) collate _1C not null ,[DTSC2] char(13) collate _1C not null ,[ODTSC2] numeric(1, 0) not null ,[VKTSC0] char(4) collate _1C not null ,[KTSC0] char(13) collate _1C not null ,[OKTSC0] numeric(1, 0) not null ,[VKTSC1] char(4) collate _1C not null ,[KTSC1] char(13) collate _1C not null ,[OKTSC1] numeric(1, 0) not null ,[VKTSC2] char(4) collate _1C not null ,[KTSC2] char(13) c ollate _1C not null ,[OKTSC2] numeric(1, 0) not null , idx_DOCID_NUMBER_CORNO char(19) collate _1C default null , idx_DATE_TIME_DOCID_NUMBER_CORNO char(33) collate _1C default null , idx_SUM_DATE_TIME_DOCID_NUMBER_CORNO char(47) collate _1C default null , idx_SP548_DATE_TIME_DOCID_NUMBER_CORNO char(35) collate _1C default null ) create table x( [DATE] char(8) not null ,[ACCID] char(9) collate _1C not null ,[CURRID] char(9) collate _1C not null ,[KIND] char(1) collate _1C not null ,[OBDT1] char(15) collate _1C not null ,[OBKT1] char(15) collate _1C not null ,[OBDT2] char(15) collate _1C not null ,[OBKT2] char(15) collate _1C not null ,[OBDT3] char(15) collate _1C not null ,[OBKT3] char(15) collate _1C not null ,[SD] char(15) collate _1C not null ,[FLAGS] nume ric(1, 0) not null ,[VSC0] char(4) collate _1C not null ,[SC0] char(13) collate _1C not null ,[OSC0] numeric(1, 0) not null ,[VSC1] char(4) collate _1C not null ,[SC1] char(13) collate _1C not null ,[OSC1] numeric(1, 0) not null ,[VSC2] char(4) collate _1C not null ,[SC2] char(13) collate _1C not null ,[OSC2] numeric(1, 0) not null , idx_DATE_KIND_ACCID_SC0_SC1_SC2_CURRID char(66) collate _1C default null ) Подбор индекса для таблицы 1SBKTTL: Ограничения: DATE=; KIND=; ACCID=; В кэше не найдено Выбран индекс ACC1: DTOS(DATE)+KIND+ACCID+SC0+SC1+SC2+CURRID Стоимость: 56 Подбор индекса для таблицы 1SBKTTL: Ограничения: DATE=; KIND=; ACCID=; Найдено в кэше Выбран индекс ACC1: DTOS(DATE)+KIND+ACCID+SC0+SC1+SC2+CURRID Стоимость: 56 Подбор индекса для таблицы 1SENTRY: Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; В кэше не найдено Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5) Стоимость: 22 Подбор индекса для таблицы 1SENTRY: Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; Найдено в кэше Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5) Стоимость: 22 Время подготовки запроса: 26 мс, время выполнения запроса: 252 мс.