Загрузка данных


DECLARE @zak char(5), @cex char(4), @ii int

SET @zak=:n_zak
SET @cex=:cex
SET @ii=:id

declare @t1 table ( kod int, ot float, tr float)

if (@ii>0 ) and (@cex='10' or @cex='12')
begin
  insert into @t1
  select kod_order, sum(trPodrOt), sum(trPodr) from tblOrder_Podr
  where kod_order  in (
    select kod_order
      from tblOrder O
        LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
     where
      (O.N_zak =@zak) AND
      (O.Isp in ( '10', '12' )) AND
      (O.Data_PDO IS NOT NULL) AND
      (O.Tip_POD <> 16) AND
      (Z.priz_annul = N'0') AND
      (Z.priz_close = N'0')
  )
  group by kod_order
 SELECT case
      when t.kod is null then Round(O.trdo_57, 2)
      else Round(O.trdo_57-t.ot, 2)
   	end as Trdo_57,
  	case
      when t.kod is null then Round(O.trdz_57, 2)
      else Round(O.Trdz_57-t.tr, 2)
    end as Trdz_57,
   	case
      when t.kod is null then ROUND(O.Trdz_57 - O.trdo_57, 2)
      else ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2)
    end as ost,
    Round(O.Trdz_57-t.tr, 2) as Trdz_57, Round(O.trdo_57-t.ot, 2) as  trdo_57, ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2) AS Ost,
    SUBSTRING(O.N_POD, 1, 3) + '.' + SUBSTRING(O.N_POD, 4, 2) + '.' + SUBSTRING(O.N_POD, 6, 2)+ '.' + SUBSTRING(O.N_POD, 8, 1) + '.' + SUBSTRING(O.N_POD, 9, 2) + '.' + SUBSTRING(O.N_POD, 11, 3) AS Mpod,
    O.*
  FROM tblOrder O
     LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
	   LEFT OUTER JOIN @t1 T on kod=o.kod_order
  WHERE(O.N_zak =@zak) AND
    (O.Isp in ('10', '12')) AND
    (O.Data_PDO IS NOT NULL) AND
    (O.Tip_POD <> 16) AND
    (Z.priz_annul = N'0') AND
    (Z.priz_close = N'0')
  order by mpod
end

else begin -- все остальнные цеха
  insert into @t1
  select kod_order, sum(trPodrOt), sum(trPodr) from tblOrder_Podr 
  where kod_order  in (
    select kod_order
      from tblOrder O
        LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
     where
      (O.N_zak =@zak) AND
      (O.Isp =@cex) AND
      (O.Data_PDO IS NOT NULL) AND
      (O.Tip_POD <> 16) AND
      (Z.priz_annul = N'0') AND
      (Z.priz_close = N'0')
  )
  group by kod_order

  SELECT case
      when t.kod is null then Round(O.trdo_57, 2)
      else Round(O.trdo_57-t.ot, 2)
  	end as Trdo_57,
   	case
      when t.kod is null then Round(O.trdz_57, 2)
      else Round(O.Trdz_57-t.tr, 2)
    end as Trdz_57,
  	case
      when t.kod is null then ROUND(O.Trdz_57 - O.trdo_57, 2)
      else ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2)
    end as ost,
    Round(O.Trdz_57-t.tr, 2) as Trdz_57, Round(O.trdo_57-t.ot, 2) as  trdo_57, ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2) AS Ost,
    SUBSTRING(O.N_POD, 1, 3) + '.' + SUBSTRING(O.N_POD, 4, 2) + '.' + SUBSTRING(O.N_POD, 6, 2)+ '.' + SUBSTRING(O.N_POD, 8, 1) + '.' + SUBSTRING(O.N_POD, 9, 2) + '.' + SUBSTRING(O.N_POD, 11, 3) AS Mpod,
    O.*
  FROM tblOrder O
     LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
	   LEFT OUTER JOIN @t1 T on kod=o.kod_order
  WHERE(O.N_zak =@zak) AND
    (O.Isp =@cex) AND
    (O.Data_PDO IS NOT NULL) AND
    (O.Tip_POD <> 16) AND
    (Z.priz_annul = N'0') AND
    (Z.priz_close = N'0')
  order by mpod
end


ох че тут происходит объясни логику sql  запроса