SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.07.2016 11:41:22

Starske
Участник
Зарегистрирован: 08.07.2016
Сообщений: 2

Вывод остатка долга в кредитный портфель

Подскажите пожалуйста, как правильно написать запрос.
Нужно Залишок_PS из первого запроса умножить на курс валют в зависимости от валюты из второго запроса.
То есть я вывожу колонку остатка долга в еквиваленте (ОстатокsadНачальная сума-погашения)*курс валют).

1)SELECT Залишок_PS, ID
FROM
(SELECT ID AS ID2, SUM(T_PS) AS Залишок_PS FROM (SELECT ID, Telo_val AS T_PS FROM Портфелі
UNION ALL
SELECT ID AS ID2, - Tilo_val AS T_PS FROM Погашення WHERE Дата>=#29-06-2016#)
GROUP BY ID),
Портфелі, Курс_валют
WHERE ID=ID2)


2)SELECT ID, Val, IIF (Val='USD',Таблица1.SUMA*Курс_валют.USD, IIF (Val='EUR', Таблица1.SUMA*Курс_валют.EUR, Таблица1.SUMA*Курс_валют.UAH)) AS EKV
FROM Таблица1, Курс_валют;

Отредактированно Starske (08.07.2016 11:55:25)

Неактивен

 

#2 10.07.2016 10:42:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Вывод остатка долга в кредитный портфель

В общем случае, конечно, FAQ#11, но можно ответить из общих соображений.

Будет что-то такое:

SELECT Залишок_PS, ID
FROM
(
    SELECT ID AS ID2, SUM(T_PS) AS Залишок_PS
    FROM (
        SELECT ID, Telo_val * Курс_валют.курс AS T_PS
        FROM Портфелі JOIN Курс_валют ON (Портфели.[Тип валюты] = Курс_валют.Тип AND Портфели.дата = Курс_валют.дата)
        UNION ALL
        SELECT ID AS ID2, - Tilo_val * Курс_валют.курс AS T_PS
        FROM Погашення JOIN Курс_валют ON (Погашения.[Тип валюты] = Курс_валют.Тип AND Погашения.дата = Курс_валют.дата)
        WHERE Дата>=#29-06-2016#
        )
    GROUP BY ID
), Портфелі WHERE ID=ID2)
 



И приведите все названия к одному виду (и в идеале на один язык), иначе будете совершать миллион ошибок. То же Telo_val и Tilo_val в разных таблицах.

Неактивен

 

#3 11.07.2016 10:03:29

Starske
Участник
Зарегистрирован: 08.07.2016
Сообщений: 2

Re: Вывод остатка долга в кредитный портфель

Спасибо, я что то в этом роде написал, но интересно и хочу написать с использованием IIF или CASE при выборе валюты.
Отдельно 2 запроса написал, 1 выводит остаток с учетом погашений, а второй выводит остаток с учетом валюты долга, а как об'єденить их незнаю, хотя понимаю что можно.

Это я написал с помощю UNION ALL 
SELECT FC, ID, Val, Telo_val, Залишок_PS*Курс_валют.USD AS Еквівалент_PS
FROM
(SELECT ID AS ID2, SUM(T_PS) AS Залишок_PS FROM (SELECT ID, Telo_val AS T_PS FROM Портфелі
UNION ALL
SELECT ID, - Tilo_val AS T_PS FROM Погашення WHERE Дата>=[на яку дату ?])
GROUP BY ID),
Портфелі, Курс_валют
WHERE ID=ID2 AND Портфелі.Val='USD'
UNION ALL
SELECT FC, ID, Val, Telo_val, Залишок_PS*Курс_валют.UAH AS Еквівалент_PS
FROM
(SELECT ID AS ID2, SUM(T_PS) AS Залишок_PS FROM (SELECT ID, Telo_val AS T_PS FROM Портфелі
UNION ALL
SELECT ID, - Tilo_val AS T_PS FROM Погашення WHERE Дата>=[на яку дату ?])
GROUP BY ID),
Портфелі, Курс_валют
WHERE ID=ID2 AND Портфелі.Val='UAH'
UNION ALL
SELECT FC, ID, Val, Telo_val, Залишок_PS*Курс_валют.EUR AS Еквівалент_PS
FROM
(SELECT ID AS ID2, SUM(T_PS) AS Залишок_PS FROM (SELECT ID, Telo_val AS T_PS FROM Портфелі
UNION ALL
SELECT ID, - Tilo_val AS T_PS FROM Погашення WHERE Дата>=[на яку дату ?])
GROUP BY ID),
Портфелі, Курс_валют
WHERE ID=ID2 AND Портфелі.Val='EUR'

Отредактированно Starske (11.07.2016 14:50:03)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson