2013-02-20 5 views
0

Привет Вот мой SQL-код:SQL, кажется, округляет число автоматически при выборе оператора?

SELECT a."Date", a."Missed", b."Total Client Schedules", cast(100-((a."Missed"*100)/b."Total Client Schedules")AS decimal) as "Pct Completed" - 
    FROM - 
    (- 
    SELECT DATE(scheduled_start) as "Date",count(*) as "Missed" FROM - 
    events WHERE node_name IS NOT NULL AND status IN ('Missed') GROUP BY DATE(scheduled_start) - 
    ) as a, - 
    (- 
    SELECT DATE(scheduled_start) as "Date", count(*) as - 
    "Total Client Schedules" FROM events WHERE node_name IS NOT NULL GROUP BY DATE(scheduled_start) - 
    ) as b - 
    WHERE a."Date" = b."Date" ORDER BY "Date" desc 

и Вот выход

 Date   Missed  Total Client Schedules  Pct Completed 
-----------  ------------  -----------------------  -------------- 
2013-02-20    2       805    100 
2013-02-19    14       805     99 
2013-02-18    29       805     97 
2013-02-17    59       805     93 
2013-02-16    29       806     97 
2013-02-15    49       805     94 
2013-02-14    33       805     96 
2013-02-13    57       805     93 
2013-02-12    21       805     98 
2013-02-11    35       805     96 
2013-02-10    34       805     96 

всегда кажется округлить до самого высокого числа, когда я хочу, чтобы это было как 99,99% или 97,2% и т.д. ..

ответ

0

Вы не указали, какую базу данных вы используете. Однако некоторые базы данных выполняют целочисленную арифметику, поэтому 1/2 равно 0 не 0,5.

Чтобы это исправить, просто сделать константы, которые вы используете числовой, а не целое число:

cast(100.0-((a."Missed"*100.0)/b."Total Client Schedules")AS decimal) 

Он будет затем преобразовать в нецелых типа для арифметики.

+0

, который, похоже, не работал. Я использую базу данных IBM TSM, поэтому это может быть невозможно :( – user2026188

+0

ОК, теперь он сработал, я изменил его на раунд (100.0 - ((«Пропущенный» * 100.0)/b. «Всего расписаний клиентов») 2) – user2026188

+0

Но число теперь отображается как 99.75000000000000000, поэтому мне просто нужно избавиться от всех 0: D – user2026188