Деление двух значений в SQL Сервер. Я получаю странный результат - PullRequest
0 голосов
/ 19 июня 2020

Я новичок с SQL, особенно SQL -сервером, и мне нужно разделить два значения. Когда я беру значения по отдельности, я получаю некоторое значение, но когда я делю эти значения вручную, я не получаю тот же результат, что и в моем запросе.

SELECT 

Count(IdPiece) AS NbPiece,

Sum(DATEDIFF(day, CONVERT(DATETIME,Ecriture.DateComptable,103),CONVERT(DATETIME,Ecriture.DateCreation,103))) as NbJours,

(Sum(DATEDIFF(day,CONVERT(DATETIME,Ecriture.DateComptable,103),CONVERT(DATETIME,Ecriture.DateCreation,103)))) / (Count(IdPiece)) AS Moy_Saisie2,

Я получаю NbPiece, NbJours, но деление не не дайте мне результата, который я получил бы, разделив NbJours на NbPiece вручную, как вы можете видеть на связанной картинке. Неправильные значения

Что я могу сделать, чтобы получить желаемый результат? Я на самом деле не привык к SQL, и мои знания довольно минимальны.

PS Я должен получить что-то вроде 9,52 для моего первого результата деления (9 или 10, если это целое число), вместо этого я получаю 21 или 22.68, если я добавлю «1.0 * (Sum (DATEDIFF ...))

1 Ответ

0 голосов
/ 19 июня 2020

Это целочисленное деление. Оба операнда деления являются целыми числами, поэтому вы получаете целочисленный результат: обычно 1/2 дает 0, а не 0.5.

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

1.0 * SUM(
    DATEDIFF(
        day, 
        CONVERT(DATETIME, Ecriture.DateComptable, 103),
        CONVERT(DATETIME, Ecriture.DateCreation,  103)
    )
) / (Count(IdPiece) AS Moy_Saisie2,
...