Уважаемые, подскажите, как реализовать следующую задачку, по хранимой процедуре. Есть запрос, в который нужно подставлять значения из другого запроса, как подставить? Необходимо брать данные из столбца Norm_1_2 первого запроса | Код | select kol_1_2.Norm_1_2, kol_1_2.kol_vag, kol_3_4.sr_sutki, kol_3_4.sutki, temp2.kol_vag_low_pol_sroka, temp3.kol_vag_pol_sroka, temp4.kol_vag_fast_time
from
--Выборка первых двух колонок для справки (select Probeg_Norm Norm_1_2, (count (*)) kol_vag -- sum(case when DLINA<16000 then 1 else 0 end) as 'F40', from nvVagPrivat left join VagPrivatRem on nvVagPrivat.Nom_Vag=VagPrivatRem.Nom_Vag where VagPrivatRem.Probeg_Norm>0 group by Probeg_Norm ) kol_1_2
left outer join
--Выборка колонок 3 и 4 для справки (select Probeg_Norm Norm_3_4, (count(*)) sutki, (sum(Probeg_Sut)/count(*)) sr_sutki from #NormProbeg where (Probeg_Tek>3000 or datediff(day, StartProbeg, EndProbeg)>15) group by Probeg_Norm ) kol_3_4
on kol_1_2.Norm_1_2=kol_3_4.Norm_3_4
left outer join
(select #NormProbeg.Probeg_Norm Norm_low_pol_sroka, (count(*)) kol_vag_low_pol_sroka from #NormProbeg join dbo.VagPrivatRem on dbo.VagPrivatRem.Nom_Vag = #NormProbeg.Nom_Vag where (#NormProbeg.Probeg_Tek>3000 or datediff(day, StartProbeg, EndProbeg)>15) and datediff(day, StartProbeg, PlanRem_dt)*Probeg_Sut<#NormProbeg.Probeg_Norm*1000/2 --and DLINA>16000 --and DLINA>20000 group by #NormProbeg.Probeg_Norm) temp2
on kol_1_2.Norm_1_2=temp2.Norm_low_pol_sroka
left outer join
(select #NormProbeg.Probeg_Norm Norma_pol_sroka, (count(*)) kol_vag_pol_sroka from #NormProbeg join dbo.VagPrivatRem on dbo.VagPrivatRem.Nom_Vag = #NormProbeg.Nom_Vag where (#NormProbeg.Probeg_Tek>3000 or datediff(day, StartProbeg, EndProbeg)>15) and datediff(day, StartProbeg, PlanRem_dt)*Probeg_Sut>#NormProbeg.Probeg_Norm*1000*2 --and DLINA>16000 --and DLINA>20000 group by #NormProbeg.Probeg_Norm) temp3
on kol_1_2.Norm_1_2=temp3.Norma_pol_sroka
left outer join
(select #NormProbeg.Probeg_Norm Norm_fast_time, (count(*)) kol_vag_fast_time from #NormProbeg join dbo.VagPrivatRem on dbo.VagPrivatRem.Nom_Vag = #NormProbeg.Nom_Vag where (#NormProbeg.Probeg_Tek>3000 or datediff(day, StartProbeg, EndProbeg)>15) and datediff(day, StartProbeg, PlanRem_dt)*Probeg_Sut>#NormProbeg.Probeg_Norm*1000 --and DLINA>16000 --and DLINA>20000 group by #NormProbeg.Probeg_Norm) temp4
on kol_1_2.Norm_1_2=temp4.Norm_fast_time
order by Norm_1_2
|
и использовать их в подстановке второго запроса | Код | ---------максмум и минимум - выполняется дважды для каждого значения нормы: --выбирается граница (верхняя и нижняя) для крайних 10 select top 10 * , datediff(day, StartProbeg, EndProbeg) from #NormProbeg where Probeg_Norm=XXX and (Probeg_Tek>3000 or datediff(day, StartProbeg, EndProbeg)>15)
order by Probeg_Sut --desc
--и по крайним считаем среднее значение : select sum(Probeg_Sut)/count(*), count(*) from #NormProbeg where Probeg_Norm=XXX and Probeg_Sut<222 and (Probeg_Tek>3000 or EndProbeg-StartProbeg>15)
|
переменной Probeg_Norm=XXX, на выходе сформировать одну общую табличку.
|