2009-02-04 8 views
0

Je suis en train d'effectuer un calcul simple des données renvoyées par SQL Server:Syntaxe SQL pour le calcul des résultats des données renvoyées

SELECT val1X, val1Y, val2X, val2Y FROM myTable 

Je veux être en mesure de calculer les éléments suivants contre les valeurs retournées et juste retour une seule valeur - le résultat du calcul ci-dessous (ce qui était écrit en VB6):

If IsNull(val1X) Or IsEmpty(val1X) Then val1X = 0 
    If IsNull(val1Y) Or IsEmpty(val1Y) Then val1Y = 0 
    If IsNull(val2X) Or IsEmpty(val2X) Then val2X = 0 
    If IsNull(val2Y) Or IsEmpty(val2Y) Then val2Y = 0 

    res1 = (val1X^2) + (val1Y^2) 
    res2 = (val2X^2) + (val2Y^2) 

    ResultVal = Sqr(IIf(res1 > res2, res1, res2)) 

me demandais quelle est la meilleure façon de le faire serait?

Merci

Répondre

3

Vous pouvez faire tout cela dans une instruction SQL, mais il semble un peu laid parce que vous devez répéter des morceaux:

SELECT 
    CASE WHEN 
    /* res1 */ Power(IsNull(val1X, 0), 2) + Power(IsNull(val1Y, 0), 2) 
    > /* res2 */ Power(IsNull(val2X, 0), 2) + Power(IsNull(val2Y, 0), 2) 
    THEN 
    /* res1 */ Power(IsNull(val1X, 0), 2) + Power(IsNull(val1Y, 0), 2) 
    ELSE 
    /* res2 */ Power(IsNull(val2X, 0), 2) + Power(IsNull(val2Y, 0), 2) 
    END 
FROM 
    myTable 

Ce serait un peu plus propre à utiliser un utilisateur -Défini la fonction pour terminer cette puissance (IsNull (field, 0), 2) de sorte que vous ne vous répétez pas autant, mais je vais laisser cela comme un exercice à faire pour vous. :)

+0

c'est excellent, merci. Juste une dernière question, comment puis-je spécifier le nom de la colonne pour cela? – Belliez

+0

résolu, je viens d'utiliser le "nom de colonne AS" à la fin de l'instruction SELECT. – Belliez

Questions connexes