webForumDet fria alternativet
Logga in / Bli medlem

Minsta skillnaden

Databaser & SQL

6 svar · 260 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Trådstart#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.

Medlem sedan juni 200032 967 inlägg
#2

Jag hade provat typ så här:

SELECT fld-[b]2[/b] as diff, * FROM tabellen ORDER BY diff
Medlem 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..

Medlem sedan juni 200032 967 inlägg
#4

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

Mvh

Medlem 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

Medlem 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
Medlem 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

267 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)