Vinnaren i pepparkakshustävlingen!
2010-03-06, 00:28
  #1
Medlem
alpha-betas avatar
Hej!

Jag försöker ta en kvot mellan 2 sql frågor på följande sätt

declare @A int;
declare @B int;

A=select Y
from X
where A=...

B=select Z
from X
where B=...

Jag skulle nu vilja ta kvoten så att K=A/B.

Hur ska jag deklarera K för att kunna ta denna kvot?
Citera
2010-03-06, 00:45
  #2
Medlem
kylskops avatar
Testa (gissade mig fram):
Kod:
declare @A int;
declare @B int;
declare @K float;

A=select Y
from X
where A=...

B=select Z
from X
where B=...

K=A/B;
Citera
2010-03-06, 00:53
  #3
Medlem
gadzooxs avatar
Kod:
declare @A int;
declare @B int;

select @A = Y
from X
where A=...

select @B = Z
from X
where B=...

SELECT @A / @B
Citera
2010-03-06, 00:56
  #4
Medlem
kylskops avatar
Okej, men hur som helst borde K vara ett flyttal.
Citera
2010-03-06, 01:03
  #5
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av kylskop
Okej, men hur som helst borde K vara ett flyttal.
Kod:
select cast(@A as float) / @B

Smidigare är dock att deklarera @A och @B som flyttal direkt.
Citera
2010-03-06, 09:03
  #6
Medlem
alpha-betas avatar
Tack för alla svar!

Räcker det alltså med att deklarera K som en float eller ska man deklarera A och B som en float och K som en decimal?
Citera
2010-03-06, 09:49
  #7
Medlem
Wobins avatar
Citat:
Ursprungligen postat av alpha-beta
Tack för alla svar!

Räcker det alltså med att deklarera K som en float eller ska man deklarera A och B som en float och K som en decimal?

@a måste vara flyttal, annars returnerar @a / @b ett heltal till @k.

Kod:
DECLARE @a int 10
DECLARE @b int 4
DECLARE @k float

SET 
@= @/ @b

SELECT 
    
@as a
    @
as b,
    @
as 

Resultat:
Kod:
a    b    k
10    4    2

Kod:
DECLARE @a float 10
DECLARE @b int 4
DECLARE @k float

SET 
@= @/ @b

SELECT 
    
@as a
    @
as b,
    @
as 

Resultat:
Kod:
a    b    k
10    4    2,5

Går förmodligen att lösa på något annat magiskt sätt, vill man inte deklarera den som flyttal kan man alltid casta om den som det nämns i ett tidigare inlägg. Dock tror jag också på att det är lika bra att deklarera variabeln som en float direkt.
Citera
2010-03-06, 15:09
  #8
Medlem
alpha-betas avatar

Toppen, tackar!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback