SELECT
CASE
WHEN ip.pricing_vol != 0
THEN ABS((ate.para_position / ip.pricing_vol))
ELSE 0
AS price,
ip.start_date, ip.end_date
FROM
ab_tran_event ate, ins_price ip
para_position
和 pricing_vol
是数据长度为 22 的浮点列
返回的价格值四舍五入到没有小数位。 我尝试对 case 语句使用
to_char
,但出现缺少表达式错误。
SELECT ROUND(CASE WHEN ip.pricing_vol != 0
THEN ABS((ate.para_position / ip.pricing_vol))
ELSE 0
END ) AS price
,ip.start_date
,ip.end_date
FROM ab_tran_event ate, ins_price ip
这会将价格四舍五入到最接近的整数。如果你想要 要四舍五入到一定数量的小数位,您可以将其添加为 ROUND 函数的第二个参数。例如,ROUND(列,2) 将四舍五入到小数点后两位。
SELECT ROUND( CASE WHEN ip.pricing_vol != 0
THEN ABS((ate.para_position / ip.pricing_vol))
ELSE 0
END, 2 ) AS price
,ip.start_date
,ip.end_date
FROM ab_tran_event ate, ins_price ip