2016-12-06 1 views
1

Ich möchte einen Nullwert in einer berechneten Spalte mit 0 in einer SQL Server-Abfrage ersetzen.Wie Ersetzen eines Nullwerts in einem berechneten Feld in einer SQL Server-Abfrage

Das ist meine Abfrage.

SELECT 
    Scenario, sum_amount + sum_cash + sum_tips AS total_earned 
FROM 
    Cash_Scenario 
WHERE 
    scenario_Id = 5 

Ich versuchte

SELECT 
    Scenario, sum_amount + sum_cash + sum_tips AS total_earned, 
    ISNULL(total_earned, 0) 
FROM 
    Cash_Scenario 
WHERE 
    scenario_Id = 5 

Aber ich erhalte eine Fehlermeldung:

Invalid column name 'total_earned' error.

Grunde möchte ich 0 zurück, wenn der total_earned Wert null ist.

Dank

Antwort

3

ich ein großer Fan bin COALESCE() anstatt die maßgeschneiderte ISNULL() für diesen Vorgang der ANSI-Standard verwenden - es sei denn, es besteht ein zwingender Grund ist ISNULL() zu verwenden:

SELECT Scenario, 
     (COALESCE(sum_amount, 0) + COALESCE(sum_cash, 0) + COALESCE(sum_tips, 0) 
     ) AS total_earned 
FROM Cash_Scenario 
WHERE scenario_Id = 5; 

Und nur zum Spaß, könnten Sie tun:

SELECT Scenario, x.total_earned 
FROM Cash_Scenario s CROSS APPLY 
    (SELECT SUM(x) as total_earned 
     FROM (VALUES (sum_amount), (sum_cash), (sum_tips)) v(x) 
    ) x 
WHERE scenario_Id = 5; 

Ich bin der Erste, dass APPLY zugeben, obwohl, ist nicht ANSI-Standard. Manchmal macht es einfach Spaß, objektive, aber effiziente Wege zu finden, etwas zu tun.

5

Versuchen Sie, diese

SELECT Scenario, ISNULL(sum_amount,0) + ISNULL(sum_cash,0) + ISNULL(sum_tips,0) AS total_earned 
FROM Cash_Scenario Where scenario_Id = 5 
Verwandte Themen