webForumDet fria alternativet

Minsta skillnaden

6 svar · 260 visningar · startad av OveRRidE

OveRRidEMedlem sedan feb. 200112 078 inlägg
#1

Jag behöver välja ut minsta skillnaden mellan värdet på ett antal rader och en värde som jag skickar in i SQL:en.

Hur gör jag detta?

Värdena i tabellen kan vara t.ex. 0, 1, -1 och -2. Värdet som skickas in kan vara antingen samma summa, mer eller mindre än någon av ovan värden.

MSSQL Server 7.

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag hade provat typ så här:

SELECT fld-[b]2[/b] as diff, * FROM tabellen ORDER BY diff
OveRRidEMedlem sedan feb. 200112 078 inlägg
#3

Nja, jag vill alltså ha den rad där skillnaden är minst av de som finns.

RED. Eller funkar det så? :q Nja..

@ndersMedlem sedan juni 200032 969 inlägg
#4

Jag är rädd att jag inte förstår vad du är ute efter.

Mvh

OveRRidEMedlem sedan feb. 200112 078 inlägg
#5

Ok, förtydligande. :)

Tabell:

[b]decade | value[/b]
-2 | milliliter
-1 | centiliter
0 | deciliter
1 | liter

Jag skickar in värdet -3. Då vill jag alltså ha tillbaks -2 och milliliter. Skickar jag in värdet 3 vill jag ha tillbaks 1 och liter. Skickar jag in värdet 0 vill jag har tillbaks 0 och deciliter.

Gör detta det lättare? :D

RikardMedlem sedan dec. 199917 055 inlägg
#6

En vansinnestanke och som jag dessutom misstänker är lite prestandaseg...

SELECT TOP 1 decade, value, abs([input] - decade) AS diff 
FROM Tabell
ORDER BY diff ASC
OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

Ok, efter mycket om och men valde jag en lite annorlunda approach. :)

SELECT TOP 1 * FROM table
ORDER BY ABS(US_Decade-[input_value])

Tack för hjälpen med tänket! :D

265 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
134 ms — hämta forumlista (db)
129 ms — hämta statistik (db)
126 ms — hämta tråd, inlägg och bilagor (db)