sql >> Database teknologi >  >> RDS >> Sqlserver

Forespørgsel med mange CASE-udsagn - optimering

For mig ligner dette et fejlagtigt forsøg på at skrive under. Det er, hvad jeg tror, ​​du har nu.

Baseret på modellen skulle følgende virke:

;
with
q_00 as (
    select
         pa.Deal_Id                                                             as Deal_Id
       , coalesce(sp.BROJ_TIKETA, fw.BROJ_TIKETA, sw.tiket, ia.BROJ_TIKETA, '') as Ticket_No
       , coalesce(sp.Trans_Id, fw.Trans_Id, sw.Trans_Id, ia.Trans_Id)           as Trans_Id
    from #PotencijalniAktuelni as pa
    left join kplus_sp         as sp on sp.sp_Id = pa.Deal_Id and pa.KplusTable_Id = 1
    left join kplus_fw         as fw on fw.fw_Id = pa.Deal_Id and pa.KplusTable_Id = 2        
    left join dev_sw           as sw on sw.sw_Id = pa.Deal_Id and pa.KplusTable_Id = 3
    left join kplus_ia         as ia on ia.ia_Id = pa.Deal_Id and pa.KplusTable_Id = 4
)
select
      Deal_Id
    , max(Trans_Id) as TransId_CurrentMax
into #MaxRazlicitOdNull
from  q_00
where Ticket_No <> ''
group by Deal_Id ;

SQL Server 2005 +



  1. Matchende mønstre mellem flere kolonner

  2. Find den ældste post i en joinforbindelse mellem to tabeller

  3. Er der en databasemotor, der tillader forespørgselsfeltbegrænsninger angivet af RegEx?

  4. tsql returnerer en tabel fra en funktion eller butiksprocedure