salut, vede cineva o varianta mai simpla la selectul asta (poate asta il si optimizeaza):
select x.*,y.code CodAgent from
(
select cst.*, x.cstid IDSUP from vw_crmimportclienti cst
left join
(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti
where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti
where (acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%'
or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%'
or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')
group by acc_new_codfiscal
having count(acc_new_codfiscal) > 1)
group by acc_new_codfiscal) x
on cst.acc_new_codfiscal = x.cstafm and cst.acc_id > x.cstid
where x.cstid is not null
and cst.comid = 3
union all
select cst.*, null IDSUP from vw_crmimportclienti cst
left join
(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti
where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti
where (acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%'
or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%'
or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')
group by acc_new_codfiscal
having count(acc_new_codfiscal) > 1)
group by acc_new_codfiscal) x
on cst.acc_new_codfiscal = x.cstafm and cst.acc_id = x.cstid
where x.cstid is not null
and cst.comid = 3
union all
select *, null IDSUP from vw_crmimportclienti cst
where acc_id not in
(select acc_id from vw_crmimportclienti cst
left join
(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti
where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti
where ( acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%'
or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%'
or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')
group by acc_new_codfiscal
having count(acc_new_codfiscal) > 1)
group by acc_new_codfiscal) x
on cst.acc_new_codfiscal = x.cstafm and cst.acc_id > x.cstid
where x.cstid is not null
and cst.comid = 3
union all
select acc_id from vw_crmimportclienti cst
left join
(select min(acc_id) cstid, min(acc_new_codfiscal) cstafm from vw_crmimportclienti
where acc_new_codfiscal in (select acc_new_codfiscal from vw_crmimportclienti
where ( acc_new_codfiscal like '%1%' or acc_new_codfiscal like '%2%' or acc_new_codfiscal like '%3%'
or acc_new_codfiscal like '%4%' or acc_new_codfiscal like '%5%' or acc_new_codfiscal like '%6%'
or acc_new_codfiscal like '%7%' or acc_new_codfiscal like '%8%' or acc_new_codfiscal like '%9%' or acc_new_codfiscal like '%0%')
group by acc_new_codfiscal
having count(acc_new_codfiscal) > 1)
group by acc_new_codfiscal) x
on cst.acc_new_codfiscal = x.cstafm and cst.acc_id = x.cstid
where x.cstid is not null
and cst.comid = 3)
) x
inner join
(
select sal.Code code,ftr.cusid cusid
from (
SELECT ftr.cusid,min(ftr.id) ftrid
FROM dbo.FINTRADE ftr INNER JOIN
dbo.ITEMTRANS itt ON ftr.ID = itt.FTRID
WHERE (ftr.SOURCE = 5) AND (itt.BILLEDOUTPUT = 1)
group by cusid
) y
join fintrade ftr on ftr.id=y.ftrid
INNER JOIN Salesman sal
on ftr.COLIDSALESMAN = sal.id
) y
on x.acc_id=y.cusid
intoarce ~20 de mii de inregistrari si dureaza ~20 sec
multumesc
alex.