В случае наличия даты или действительной даты: текст вычисляет период между двумя датами в месяц и дни и умножает его на сумму компенсации в количестве лиц, которые получают от нее выгоду
Пример: количество человек 2, сумма компенсации 4000 DZD, период с 01.04.2020 по 18.02.2020 (1 месяц и 14 дней)
(((4000 DZD * 14 days) / 30) + (4000 DZD * 1 month)) * 2 Number of people = 11733.33 DZD
проблема в запросе
Если файл имеет одну компенсацию, он будет рассчитан, и если файл имеет набор компенсаций, отобразится ошибка
Msg 512, уровень 16, состояние 1, строка 4 Подзапрос вернул более одного значения. Это не разрешено, если подзапрос следует за = ,! =, <, <=,>,> = Или когда подзапрос используется как выражение. Msg 512, уровень 16, состояние 1, строка 14 Подзапрос вернул более одного значения. Это не разрешено, если подзапрос следует за = ,! =, <, <=,>,> = Или когда подзапрос используется как выражение.
вопрос: как я могу показать все компенсации и соответствующие счета для каждого файла отдельно, чтобы если я изменю номер файла, например, «20/0003», я использую этот код для запроса sql:
DECLARE @days int;
DECLARE @month int;
DECLARE @Total dec(18, 2);
IF (SELECT ISDATE(date_debut1)FROM Indemnite WHERE id_aff = '20/0002') = 1
BEGIN
SELECT @month = DATEDIFF(MONTH, date_debut1, date_fin1)
FROM indemnite;
SELECT @days = DATEDIFF(DAY, DATEADD(MONTH, DATEDIFF(MONTH, date_debut1, date_fin1), date_debut1), date_fin1)
FROM indemnite
WHERE id_aff = '20/0002';
IF @days < 0
BEGIN
SELECT @month = @month - 1
FROM indemnite;
SELECT @days = DATEDIFF(DAY, DATEADD(MONTH, @month, date_debut1), date_fin1)
FROM indemnite
WHERE id_aff = '20/0002';
END;
SELECT @month = @month * 1 % 12;
SELECT @Total = (((montant_dette1 * @days) / 30) + (montant_dette1 * @month)) * n_personne1
FROM Indemnite
WHERE id_aff = '20/0002';
END;
IF (SELECT ISDATE(date_debut1)FROM Indemnite WHERE id_aff = '20/0002') = 0
BEGIN
SELECT @Total = (montant_dette1 * n_personne1)
FROM Indemnite
WHERE id_aff = '20/0002';
END;
SELECT Indemnite1,
n_personne1,
date_debut1,
date_fin1,
montant_dette1,
@Total AS Total
FROM Indemnite
WHERE id_aff = '20/0002';