Разбивка прогресса (в процентах) по каждому кварталу года в SQL Server - PullRequest
0 голосов
/ 19 сентября 2018

В основном я пытаюсь рассчитать прогресс текущего квартала, выраженный в процентах.В настоящее время у меня есть:

(DATEPART(dd,@AsOf)/91) * 100

Мы используем 91 день в качестве фиксированного решения для квартала.Необходимость в 100% точности не требуется.

@AsOf передается как DATETIME тип.

Я пробовал несколько способов и получаю 0. Я предполагаю, что этопотому что я использую INT вместо DECIMAL, но я попробовал это, и я все еще получаю 0.

1 Ответ

0 голосов
/ 19 сентября 2018

Вы должны просто иметь возможность сделать его десятичным, добавив десятичную точку, например 91.0 и 100.0, чтобы избежать целочисленного деления проблем:

DECLARE @date DATETIME 
set @date = getdate();

select DATEPART(dd,@date) TheDay,
      (DATEPART(dd,@date)/91.0) DivBy91,
      (DATEPART(dd,@date)/91.0) * 100.0 Result

Результат:

TheDay  DivBy91  Result
19      0.208791 20,8791000

Если целочисленный дивиденд делится на целочисленный делитель, результатом является целое число, у которого усечена любая дробная часть результата.

Чтоцелочисленное деление будет производить 0 в столбце 2, что приводит к тому, что ваш результат равен 0.

...