SELECT * FROM (select Валюта ,Счет ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид ,sum(СуммаНачальныйОстаток) СуммаНачальныйОстаток ,sum(СуммаНачальныйОстатокДт) СуммаНачальныйОстатокДт ,sum(СуммаНачальныйОстатокКт) СуммаНачальныйОстатокКт ,sum(СуммаОборот) СуммаОборот ,sum(СуммаОборотДт) СуммаОборотДт ,sum(СуммаОборотКт) СуммаОборотКт ,sum(СуммаНачальныйОстаток) + sum(СуммаОборот) СуммаКонечныйОстаток ,case when (sum(СуммаНачальныйОстаток) + sum(СуммаОборот)) > 0 then (sum(СуммаНачальныйОстаток) + sum(СуммаОборот)) else 0 end СуммаКонечныйОстатокДт ,case when (sum(СуммаНачальныйОстаток) + sum(СуммаОборот)) < 0 then -(sum(СуммаНачальныйОстаток) + sum(СуммаОборот)) else 0 end СуммаКонечныйОстатокКт ,sum(КоличествоНачальныйОстаток) КоличествоНачальныйОстаток ,sum(КоличествоНачальныйОстатокДт) КоличествоНачальныйОстатокДт ,sum(КоличествоНачальныйОстатокКт) КоличествоНачальныйОстатокКт ,sum(КоличествоОборот) КоличествоОборот ,sum(КоличествоОборотДт) КоличествоОборотДт ,sum(КоличествоОборотКт) КоличествоОборотКт ,sum(КоличествоНачальныйОстаток) + sum(КоличествоОборот) КоличествоКонечныйОстаток ,case when (sum(КоличествоНачальныйОстаток) + sum(КоличествоОборот)) > 0 then (sum(КоличествоНачальныйОстаток) + sum(КоличествоОборот)) else 0 end КоличествоКонечныйОстатокДт ,case when (sum(КоличествоНачальныйОстаток) + sum(КоличествоОборот)) < 0 then -(sum(КоличествоНачальныйОстаток) + sum(КоличествоОборот)) else 0 end КоличествоКонечныйОстатокКт from ( select Валюта ,Счет ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид ,СуммаОстаток СуммаНачальныйОстаток ,СуммаОстатокДт СуммаНачальныйОстатокДт ,СуммаОстатокКт СуммаНачальныйОстатокКт ,0 СуммаОборот,0 СуммаОборотДт,0 СуммаОборотКт ,КоличествоОстаток КоличествоНачальныйОстаток ,КоличествоОстатокДт КоличествоНачальныйОстатокДт ,КоличествоОстатокКт КоличествоНачальныйОстатокКт ,0 КоличествоОборот,0 КоличествоОборотДт,0 КоличествоОборотКт from ( SELECT Счет ,Валюта ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид ,SUM(СуммаОстаток) СуммаОстаток ,CASE WHEN SUM(СуммаОстаток) > 0 THEN SUM(СуммаОстаток) ELSE 0 END СуммаОстатокДт ,CASE WHEN SUM(СуммаОстаток) < 0 THEN -SUM(СуммаОстаток) ELSE 0 END СуммаОстатокКт ,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 Валюта ,bkttl_vt.SC0 Субконто1 ,bkttl_vt.VSC0 Субконто1_вид ,bkttl_vt.SC1 Субконто2 ,bkttl_vt.VSC1 Субконто2_вид ,CASE WHEN bkttl_vt.KIND = '1' THEN bkttl_vt.SD+bkttl_vt.OBDT1-bkttl_vt.OBKT1 ELSE 0 END AS СуммаОстаток ,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_Счет217 accfilter ON bkttl_vt.ACCID = accfilter.val WHERE (bkttl_vt.DATE = '20120701') AND (bkttl_vt.KIND IN ('1','3')) AND ((bkttl_vt.SC0 =' 28IDIR') AND (bkttl_vt.SC1 =' V ')) UNION ALL SELECT entry_vt.ACCDTID ,CASE WHEN entry_vt.DTFLAGS & 1 = 1 THEN entry_vt.CURRID ELSE ' 0 ' END ,entry_vt.DTSC0 ,entry_vt.VDTSC0 ,entry_vt.DTSC1 ,entry_vt.VDTSC1 ,-entry_vt.SUM ,-entry_vt.AMOUNT FROM __1S_ENTRY entry_vt WHERE (entry_vt.ACCDTID IN (SELECT val FROM vt_Счет217)) AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '20120717 0 0 ') AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20120801 0 0 ') AND (entry_vt.ACTIVE = ' ') AND ((entry_vt.DTSC0 =' 28IDIR') AND (entry_vt.DTSC1 =' V ')) 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 ,entry_vt.KTSC0 ,entry_vt.VKTSC0 ,entry_vt.KTSC1 ,entry_vt.VKTSC1 ,entry_vt.SUM ,entry_vt.AMOUNT FROM __1S_ENTRY AS entry_vt WHERE (entry_vt.ACCKTID IN (SELECT val FROM vt_Счет217)) AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '20120717 0 0 ') AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20120801 0 0 ') AND (entry_vt.ACTIVE = ' ') AND ((entry_vt.KTSC0 =' 28IDIR') AND (entry_vt.KTSC1 =' V ')) AND (entry_vt.PROVKIND <> 'D') ) AS accountingbalance GROUP BY Счет,Валюта ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид HAVING (SUM(СуммаОстаток) <> 0) OR (SUM(КоличествоОстаток) <> 0) ) vt_balance union all select Валюта ,Счет ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид ,0 СуммаНачальныйОстаток,0 СуммаНачальныйОстатокДт,0 СуммаНачальныйОстатокКт ,СуммаОборот,СуммаОборотДт,СуммаОборотКт ,0 КоличествоНачальныйОстаток,0 КоличествоНачальныйОстатокДт,0 КоличествоНачальныйОстатокКт ,КоличествоОборот,КоличествоОборотДт,КоличествоОборотКт from ( SELECT Валюта ,Счет ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид ,SUM(СуммаОборотДт) - SUM(СуммаОборотКт) СуммаОборот ,SUM(СуммаОборотДт) СуммаОборотДт ,SUM(СуммаОборотКт) СуммаОборотКт ,SUM(КоличествоОборотДт) - SUM(КоличествоОборотКт) КоличествоОборот ,SUM(КоличествоОборотДт) КоличествоОборотДт ,SUM(КоличествоОборотКт) КоличествоОборотКт FROM ( SELECT entry_vt.CURRID Валюта ,entry_vt.ACCDTID Счет ,entry_vt.DTSC0 Субконто1 ,entry_vt.VDTSC0 Субконто1_вид ,entry_vt.DTSC1 Субконто2 ,entry_vt.VDTSC1 Субконто2_вид ,entry_vt.SUM СуммаОборотДт ,0 СуммаОборотКт ,entry_vt.AMOUNT КоличествоОборотДт ,0 КоличествоОборотКт FROM vt_Счет217 accfilter LEFT JOIN __1S_ENTRY entry_vt ON entry_vt.ACCDTID = accfilter.val WHERE (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '20120717 0 0 ') AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20140101 0 0 ') AND (entry_vt.ACTIVE = ' ') AND (entry_vt.ACCDTID <> ' 0 ') AND (entry_vt.PROVKIND <> 'K') AND ((entry_vt.DTSC0 =' 28IDIR') AND (entry_vt.DTSC1 =' V ')) UNION ALL SELECT entry_vt.CURRID Валюта ,entry_vt.ACCKTID Счет ,entry_vt.KTSC0 Субконто1 ,entry_vt.VKTSC0 Субконто1_вид ,entry_vt.KTSC1 Субконто2 ,entry_vt.VKTSC1 Субконто2_вид ,0 ,entry_vt.SUM ,0 ,entry_vt.AMOUNT FROM vt_Счет217 accfilter LEFT JOIN __1S_ENTRY entry_vt ON entry_vt.ACCKTID = accfilter.val WHERE (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '20120717 0 0 ') AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20140101 0 0 ') AND (entry_vt.ACTIVE = ' ') AND (entry_vt.ACCKTID <> ' 0 ') AND (entry_vt.PROVKIND <> 'D') AND ((entry_vt.KTSC0 =' 28IDIR') AND (entry_vt.KTSC1 =' V ')) ) accturnover GROUP BY Валюта ,Счет ,Субконто1,Субконто1_вид ,Субконто2,Субконто2_вид HAVING (SUM(СуммаОборотДт) <> 0) OR (SUM(СуммаОборотКт) <> 0) OR (SUM(КоличествоОборотДт) <> 0) OR (SUM(КоличествоОборотКт) <> 0)) vt_turnover ) vt_totalacc_19836699 group by vt_totalacc_19836699.Валюта,vt_totalacc_19836699.Счет,vt_totalacc_19836699.Субконто1,vt_totalacc_19836699.Субконто1_вид,vt_totalacc_19836699.Субконто2,vt_totalacc_19836699.Субконто2_вид HAVING sum(СуммаНачальныйОстаток)<>0 OR sum(СуммаНачальныйОстатокДт) <> 0 OR sum(СуммаНачальныйОстатокКт) <> 0 OR sum(СуммаОборот) <> 0 OR sum(СуммаОборотДт) <> 0 OR sum(СуммаОборотКт) <> 0 OR sum(КоличествоНачальныйОстаток)<>0 OR sum(КоличествоНачальныйОстатокДт) <> 0 OR sum(КоличествоНачальныйОстатокКт) <> 0 OR sum(КоличествоОборот) <> 0 OR sum(КоличествоОборотДт) <> 0 OR sum(КоличествоОборотКт) <> 0 ) AS ООО Подбор индекса для таблицы 1SBKTTL: Ограничения: DATE=; SC0=; SC1=; ACCID=; Найдено в кэше Выбран индекс ACC1: DTOS(DATE)+KIND+ACCID+SC0+SC1+CURRID Стоимость: 96 Подбор индекса для таблицы 1SBKTTL: Ограничения: DATE=; SC0=; SC1=; ACCID=; Найдено в кэше Выбран индекс ACC1: DTOS(DATE)+KIND+ACCID+SC0+SC1+CURRID Стоимость: 96 Подбор индекса для таблицы 1SENTRY: Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; DTSC0=; DTSC1=; Найдено в кэше Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5) Стоимость: 18 Подбор индекса для таблицы 1SENTRY: Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; KTSC0=; KTSC1=; Найдено в кэше Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5) Стоимость: 18 Подбор индекса для таблицы 1SENTRY: Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; DTSC0=; DTSC1=; ACCDTID=; Найдено в кэше Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5) Стоимость: 18 Подбор индекса для таблицы 1SENTRY: Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; KTSC0=; KTSC1=; ACCKTID=; Найдено в кэше Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5) Стоимость: 18 Время подготовки запроса: 32 мс, время выполнения запроса: 272 мс.