INNER/OUTER

Databaser & SQL

1 svar · 436 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Trådstart#1

Hej!

Jag ska selektera ett antal transaktioner i en värdepappersdatabas FS_Fond(SQL Server 2000). Problemet är att det inte finns kurser för samtliga värdepapper i tabellen HISTINST. INSTRUMENT innehåller värdepappersbeteckningarna.

Jag visar nedan en delmängd av SQL-satsen, där problemet ligger.

INNER JOIN (SELECT Instrument,Rate FROM FS_Fond..HISTINST H
WHERE HISTDATE=(SELECT MAX(HISTDATE) FROM FS_Fond..HISTINST WHERE INSTRUMENT=H.INSTRUMENT
AND HISTDATE<=@ToDate)) lr ON lr.Instrument=t.InstrumentId

Min önskan är att även de transaktioner där värdepappret inte har någon kurs ska listas --> Någon join borde ändras? Har försökt med LEFT/RIGHT/OUTER utan att lyckas.

Medlem sedan dec. 200012 464 inlägg
#2
left JOIN FS_Fond..HISTINST H
on  h.Instrument=t.InstrumentId
and HISTDATE = 
  (SELECT MAX(HISTDATE) 
     FROM FS_Fond..HISTINST 
    WHERE INSTRUMENT=H.INSTRUMENT
   AND HISTDATE<=@ToDate)
253 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)