webForumDet fria alternativet

Vända från negativt till positivt

Databaser & SQL

3 svar · 523 visningar · startad av KrpSvedberg

Medlem sedan okt. 200558 inlägg
Frågan#1

Hello!

Jag har en liten nöt att knäcka;

Jag använder mig av sql-server 2000 och min ungefärliga tabell ser ut så här:
Kolumn: ID
Kolumn: Value

Jag vill nu hämta tex 3 värden och summera dom, minus 2 summerade värden, delat på 2 summerade värden, gånger 100;
((X-Y) / Z) * 100

SELECT ((
(SELECT ISNULL(value), 0) WHERE id = x OR id = y) - 
(SELECT ISNULL(value), 0) WHERE id = x AND id = y)) / 
(SELECT ISNULL(value), 0) WHERE id = x)) * 100

Resultatet från första frågan (SELECT ISNULL(value), 0) WHERE id = x OR id = y), som är en siffra, kan vara ett negativt tal. Om så är fallet vill jag "vända" på talet, från negativt till positivt. Är detta genomförbart? Min första tanke var en if-sats som kollar om resultat < 0 och i så fall fixa det. Finns det något bättre sätt? Motsvarande ISNULL fast typ ISNEGATIVE? :)

Tack på förhand!

Medlem sedan juni 20019 519 inlägg
#2

Tvärtom menar du att positiva också kan bli negativt eller du vill alltid ha ett positivt svar?

ABS() retunera alltid ett positivt:

-3 = 3
3 = 3
osv

Medlem sedan juni 200032 967 inlägg
#3

abs är nog funkish, som voigt skriver - http://msdn.microsoft.com/en-us/library/ms189800(SQL.90).aspx

Medlem sedan okt. 200558 inlägg
#4

Super-duper! Precis vad jag söker. Tror inte det kommer kunna vara tvärtom. Om det kan det så tar vi det när det väl dyker upp ;) Thx Voigt, kungen av SQL :) Hoppas allt går bra nere i Skåne för dig!

293 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
161 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)