2016-05-05 6 views
0

Derzeit versuche ich die Ausgabe zu filtern, die ich nur Produkte anzeigen, die Rabatte größer oder gleich 60% haben. Der Variable Rabatt listet alle ihre Werte im Format wie 50%, 60% usw.Verwendung von WHERE in PROC SQL Fehler

PROC SQL; 
SELECT discount.Product_ID,Product_Name,Start_Date,End_Date,Discount 
FROM Final.discount AS d, Final.product_dim AS p 
WHERE d.Product_ID=p.Product_ID 
AND Discount >= 60%; 
QUIT; 

Ich weiß nicht, warum dies nicht funktioniert, aber der Fehler aus dem Protokoll sagt mir, dass das Prozentzeichen ist nicht anerkannt ? Wie würde ich das beheben, um die gewünschte Ausgabe zu erhalten?

+1

Welcher Datentyp ist Discount? Wenn Sie Werte als 50%, 60% (statt 50, 60 usw.) speichern, handelt es sich um einen Varchar/String-Datentyp? – CoolBots

+0

Vereinbaren Sie mit CoolBots ... führen Sie einen proc-Inhalt auf dem Datensatz aus und finden Sie heraus, was Ihre Variable ist ... Sie können möglicherweise nur in Anführungszeichen setzen, wenn es ein Zeichen ist - '60% ', oder einfach die Nummer aufrufen formatiert als eine Zahl - 60 – SMW

Antwort

1

die Variable Unter der Annahme, numerisch mit dem PERCENTw.d Format angewandt (so wahrscheinlich PERCENT5. Ihre Anzeige angegeben), können Sie es wie so schreiben würden:

Discount >= 0.6; 

Die PERCENTw.d Format zeigen Zahlen zwischen 0 und 1 als 0% - 100%.

Wenn Ihre Variable ein Zeichen ist, müssten Sie sie wahrscheinlich zuerst in eine Zahl umwandeln (wie '100%' > '60%' ist falsch).

input(Discount, PERCENT5.) >= 0.6 

Dies ist in Rick Wicklin Blog-Post auf the Do Loop bedeckt.