leshik писал(а) 26. Января 2010 :: 09:35:Текст запроса с Отладка(1) в студию и план запроса в текстовом виде, пожалуйста.
SELECT ПартииТоваровОстатки.Товар [Товар $Справочник.Номенклатура]
, ПартииТоваровОстатки.Партия [Партия $Документ]
,ПартииТоваровОстатки.Склад [Склад $Справочник.МестаХранения]
, ПартииТоваровОстатки.КонтрагентПартии [КонтрагентПартии $Справочник.Контрагенты]
, ПартииТоваровОстатки.Перевертыш
, Sum(ПартииТоваровОстатки.ОстатокТовараОстаток) КонОст
, Sum(РезервыТоваровОстатки.РезервТовараОстаток) КонРез
, Sum(ПартииТоваровОстатки.СебестоимостьОстаток) КонСеб
, Sum(ПартииТоваровОстатки.ВалютнаяСебестоимостьОстаток) КонВСеб
FROM (
select
rr4268_vt.sp4270 as Товар,
rr4268_vt.sp4271 as Партия,
rr4268_vt.sp6199 as Перевертыш,
rr4268_vt.sp4273 as Склад,
rr4268_vt.sp4275 as КонтрагентПартии,
sum(rr4268_vt.sp4276) as ОстатокТовараОстаток,
sum(rr4268_vt.sp4277) as СебестоимостьОстаток,
sum(rr4268_vt.sp4279) as ВалютнаяСебестоимостьОстаток
from (
select
rg4268_vt.sp4270,
rg4268_vt.sp4271,
rg4268_vt.sp6199,
rg4268_vt.sp4273,
rg4268_vt.sp4275,
rg4268_vt.sp4276,
rg4268_vt.sp4277,
rg4268_vt.sp4279
from rg4268 as rg4268_vt (nolock)
where rg4268_vt.period={d '2009-12-01'}
and ((rg4268_vt.sp4270 IN (SELECT val FROM #ВыбТовары)) AND (rg4268_vt.sp4269 = ' 1 '))
union all
select
ra4268_vt.sp4270,
ra4268_vt.sp4271,
ra4268_vt.sp6199,
ra4268_vt.sp4273,
ra4268_vt.sp4275,
case ra4268_vt.debkred when 0 then ra4268_vt.sp4276 else -ra4268_vt.sp4276 end,
case ra4268_vt.debkred when 0 then ra4268_vt.sp4277 else -ra4268_vt.sp4277 end,
case ra4268_vt.debkred when 0 then ra4268_vt.sp4279 else -ra4268_vt.sp4279 end
from ra4268 as ra4268_vt (nolock)
where ra4268_vt.date_time_iddoc > '20100101' and ra4268_vt.date_time_iddoc < '20100125D96HXC 2IAYCB0'
and ((ra4268_vt.sp4270 IN (SELECT val FROM #ВыбТовары)) AND (ra4268_vt.sp4269 = ' 1 '))
) as rr4268_vt
group by
rr4268_vt.sp4270,
rr4268_vt.sp4271,
rr4268_vt.sp6199,
rr4268_vt.sp4273,
rr4268_vt.sp4275
having
sum(rr4268_vt.sp4276) <> 0 or
sum(rr4268_vt.sp4277) <> 0 or
sum(rr4268_vt.sp4279) <> 0
) as ПартииТоваровОстатки
LEFT OUTER JOIN (
select
rr3871_vt.sp3873 as Товар,
rr3871_vt.sp4287 as Партия,
rr3871_vt.sp3875 as Склад,
rr3871_vt.sp6429 as Перевертыш,
sum(rr3871_vt.sp3877) as РезервТовараОстаток
from (
select
rg3871_vt.sp3873,
rg3871_vt.sp4287,
rg3871_vt.sp3875,
rg3871_vt.sp6429,
rg3871_vt.sp3877
from rg3871 as rg3871_vt (nolock)
where rg3871_vt.period={d '2009-12-01'}
and ((rg3871_vt.sp3873 IN (SELECT val FROM #ВыбТовары)) AND (rg3871_vt.sp3872 = ' 1 '))
union all
select
ra3871_vt.sp3873,
ra3871_vt.sp4287,
ra3871_vt.sp3875,
ra3871_vt.sp6429,
case ra3871_vt.debkred when 0 then ra3871_vt.sp3877 else -ra3871_vt.sp3877 end
from ra3871 as ra3871_vt (nolock)
where ra3871_vt.date_time_iddoc > '20100101' and ra3871_vt.date_time_iddoc < '20100125D96HXC 2IAYCB0'
and ((ra3871_vt.sp3873 IN (SELECT val FROM #ВыбТовары)) AND (ra3871_vt.sp3872 = ' 1 '))
) as rr3871_vt
group by
rr3871_vt.sp3873,
rr3871_vt.sp4287,
rr3871_vt.sp3875,
rr3871_vt.sp6429
having
sum(rr3871_vt.sp3877) <> 0
) as РезервыТоваровОстатки
ON ПартииТоваровОстатки.Товар = РезервыТоваровОстатки.Товар
AND ПартииТоваровОстатки.Партия = РезервыТоваровОстатки.Партия
AND ПартииТоваровОстатки.Перевертыш = РезервыТоваровОстатки.Перевертыш
AND ПартииТоваровОстатки.Склад = РезервыТоваровОстатки.Склад
GROUP BY ПартииТоваровОстатки.Товар
, ПартииТоваровОстатки.Партия
, ПартииТоваровОстатки.КонтрагентПартии
, ПартииТоваровОстатки.Перевертыш
, ПартииТоваровОстатки.Склад
Вот такая вот хрень, но в этом я не бум-бум