Вероятно, проблема в целочисленном делении. Если оба значения являются целыми числами или тому подобное, Teradata выдаст целочисленный результат, применяя правила округления: поэтому, в основном, если результаты равны 0.5
или больше, результат будет 1
.
. это путем приведения значений к десятичному числу с достаточной точностью или путем добавления (фиктивного) множителя:
case when partner_spend > 0 and 1.00 * partner_spend/total_spend >= 0.9
then '90% partner'
else 'other' end
as spend_90
Или:
case when partner_spend > 0 and cast(partner_spend as decimal(10, 2))/total_spend >= 0.9
then '90% partner'
else 'other' end
as spend_90