2017-05-31 5 views
1

Ich versuche, die Gesamtkosten von Artikeln zu berechnen und diesen Wert in eine neue Spalte namens Kosten.SQL konvertieren varchar in Geld

In meinem Erstellungsskript sind die Werte in Zeichen, aber der Datentyp ist Geld.

CREATE VIEW ordered_pizzas_view 
AS 
    SELECT 
     orderpizza_id, order_id, ..., 
     CONCAT(range_price, ' ', crust_surcharge, ' ', sauce_surcharge) AS 'cost' 
    FROM 
     order_pizza 
    INNER JOIN 
     ... 
    WHERE 
     'cost' = (SELECT SUM(CAST(range_price AS MONEY)) FROM pizza_range) + 
       (SELECT SUM(CAST(crust_surcharge AS MONEY)) FROM crust) + 
       (SELECT SUM(CAST(Sauce_surcharge AS MONEY)) FROM sauce) 
+0

Haben Sie die Werte in der Tabelle überprüft, gibt es nicht-numerische Einträge? – SAS

+0

Ich habe gerade festgestellt, dass die SQL-Syntax falsch ist, können Sie nicht Geld mit Char vergleichen .. – SAS

Antwort

3

Was erwarten Sie von concat()? concat() gibt einen Zeichenfolgenwert zurück, der basierend auf Ihrer Eingabe drei Geldwerte sein wird, die durch ein Leerzeichen getrennt sind, z. $1.00 $2.00 $0.50

Vergleicht man das mit einem Geldwert, wird ein Fehler ausgegeben. Vielleicht wollten Sie nur die Werte hinzufügen?

(range_price + crust_surcharge + sauce_surcharge) as [cost] 

Hinweis: Verwenden Sie keine String-Literale als Aliase.


Auch Ihre where Klausel vergleicht eine Stringliteral ('cost') zu einem money Datentyp aus den kombinierten Unterabfragen.

where --'cost' 
     (range_price + crust_surcharge + sauce_surcharge) 
       = (select Sum(CAST(range_price as money)) from pizza_range) 
      + (select Sum(CAST(crust_surcharge as money)) from crust) 
      + (select Sum(CAST(Sauce_surcharge as money)) from sauce) 

Hinweis: Sie können nicht Spalte Aliase in der where Klausel verwenden, müssen Sie den Ausdruck wiederholen oder den Ausdruck von einer Unterabfrage/abgeleitete Tabelle oder anderem Operator verweisen.

+0

Dank SQLZim, antwortete auf eines meiner Probleme, sehr geschätzt – MacGenius

+0

@MacGenius Glücklich zu helfen! – SqlZim