Dette er et eksempel på hvordan man kan tilknytte de data fra en tabel, der ligger tættest på data fra en anden.

Idéen er at vi udtager oplysninger om en råvare fra en tabel. Oplysninger om færdigvaren udtager vi fra en anden tabel fra kontrolvægten, som vejer den færdige vare. Vi udtager færdigvarenummeret fra kontrolvægten så kort tid efter den tid, hvor råvaren er registreret, som muligt.

Query’et ses nedenfor – forklaring følger.

SELECT 
   lager.datotid
   lager.halvfabrikata, 
   (SELECT TOP 1 cw.fv 
      FROM checkweight cw 
      WHERE cw.datotid BETWEEN lager.datotid AND '2014-10-10' 
      ORDER BY lager.datotid DESC
   ) AS 'Færdigvare' 
FROM
   lagerforbrug lager
WHERE 
   lager.datotid BETWEEN '2014-10-01' AND '2014-10-10'

Det, der egentlig er interessant i dette query, er linje 4-8, hvor færdigvarenummeret hentes. SELECT TOP 1 betyder at vi kun ønsker det første resultat, der findes. Vi vælger at begrænse til det tidinterval, der er fra den aktuelle datotid (fra råvaren) til maksimum af det tidsinterval, vi kigger på. Dette skyldes at vi kun er interesseret i de færdigvarer, der er registreret efter råvaren er registreret. Til sidst sorterer vi efter tiden, så det første færdigvarenummer der findes, er det der er registreret kortest tid efter råvaren.

Bemærk at det oftest ikke er en god idé at bruge indirekte JOIN, fordi der vil blive lavet en ny søgning på hver række i din hovedtabel, hvilket kan være temmelig ressourcekrævende. Jeg har blot vurderet det nødvendigt i dette tilfælde, fordi vi laver en indirekte sammenligning – vi søger efter tætteste værdi.