DROP VIEW IF EXISTS `вирт_Грант`;
CREATE VIEW `вирт_Грант` AS
SELECT
`ГРН`.`Регномер` AS `Регномер гранта`,
`ГРН`.`Регномер проекта` AS `Регномер проекта`,
`ГРН`.`Объем` AS `Объем гранта`,
`ГРН`.`Дата начала` AS `Дата начала финансирования`,
`ГРН`.`Дата окончания` AS `Дата окончания финансирования`,
`ГРН`.`Название` AS `Название гранта`,
`СПР`.`Код` AS `Код вида гранта`,
`СПР`.`Название` AS `Название вида гранта`,
`СОТ`.`Код` AS `Код грантодателя`,
`СОТ`.`ФИО` AS `Название грантодателя`,
`ГРН`.`Ид` AS `Ид\Грант`
FROM `Грант` AS `ГРН`
LEFT JOIN `Грантодатель:СОТ` AS `ГРАН` ON `ГРН`.`Ид\ГРН^ГРАН` = `ГРАН`.`Ид\ГРАН^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ` ON `ГРАН`.`Ид\ГРАН^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР` ON `ГРН`.`Ид_ВГ\ГРН^СПР` = `СПР`.`Ид`
;
SELECT * FROM `вирт_Грант`;
DROP PROCEDURE IF EXISTS `проц_Транш финансирования`;
CREATE PROCEDURE `проц_Транш финансирования`
(IN `@Ид\Грант` INT)
SELECT
`ТРФ`.`Регномер` AS `Регномер транша`,
`ТРФ`.`Дата` AS `Дата транша`,
`ТРФ`.`Объем` AS `Объем транша`,
`СОТБ`.`Код` AS `Код бухгалтера`,
`СОТБ`.`ФИО` AS `ФИО бухгалтера`
FROM `Транш финансирования` AS `ТРФ`
LEFT JOIN `Бухгалтер:СОТ` AS `БУХ` ON `ТРФ`.`Ид\ТРФ^БУХ` = `БУХ`.`Ид\БУХ^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТБ` ON `БУХ`.`Ид\БУХ^СОТ` = `СОТБ`.`Ид`
WHERE `ТРФ`.`Ид\ТРФ^ГРН` = `@Ид\Грант`
;
CALL `проц_Транш финансирования` (1);
DROP VIEW IF EXISTS `вирт_Грант%Транш`;
CREATE VIEW `вирт_Грант%Транш` AS
SELECT
`ГРН`.`Регномер` AS `Регномер гранта`,
`ГРН`.`Регномер проекта` AS `Регномер проекта`,
`ГРН`.`Объем` AS `Объем гранта`,
`ГРН`.`Дата начала` AS `Дата начала финансирования`,
`ГРН`.`Дата окончания` AS `Дата окончания финансирования`,
`ГРН`.`Название` AS `Название гранта`,
`СПР`.`Код` AS `Код вида гранта`,
`СПР`.`Название` AS `Название вида гранта`,
`СОТ`.`Код` AS `Код грантодателя`,
`СОТ`.`ФИО` AS `Название грантодателя`,
`ТРФ`.`Регномер` AS `Регномер транша`,
`ТРФ`.`Дата` AS `Дата транша`,
`ТРФ`.`Объем` AS `Объем транша`,
`СОТБ`.`Код` AS `Код бухгалтера`,
`СОТБ`.`ФИО` AS `ФИО бухгалтера`
FROM `Транш финансирования` AS `ТРФ`
LEFT JOIN `Бухгалтер:СОТ` AS `БУХ` ON `ТРФ`.`Ид\ТРФ^БУХ` = `БУХ`.`Ид\БУХ^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТБ` ON `БУХ`.`Ид\БУХ^СОТ` = `СОТБ`.`Ид`
LEFT JOIN `Грант` AS `ГРН` ON `ТРФ`.`Ид\ТРФ^ГРН` = `ГРН`.`Ид`
LEFT JOIN `Грантодатель:СОТ` AS `ГРАН` ON `ГРН`.`Ид\ГРН^ГРАН` = `ГРАН`.`Ид\ГРАН^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ` ON `ГРАН`.`Ид\ГРАН^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР` ON `ГРН`.`Ид_ВГ\ГРН^СПР` = `СПР`.`Ид`
;
SELECT * FROM `вирт_Грант%Транш`;
DROP VIEW IF EXISTS `вирт_Статья_Расходы`;
CREATE VIEW `вирт_Статья_Расходы` AS
SELECT
`СТР`.`Код` AS `Код статьи`,
`СТР`.`Название` AS `Название статьи`,
COUNT(*) AS `Число расходов`
FROM `Расходы\ТРФ` AS `РАСХ`
LEFT JOIN `Статья` AS `СТР` ON `РАСХ`.`Ид\РАСХ^СТР` = `СТР`.`Ид`
GROUP BY `СТР`.`Ид`
;
SELECT * FROM `вирт_Статья_Расходы`;
DROP VIEW IF EXISTS `вирт_Статья_Расходы_Компоненты`;
CREATE VIEW `вирт_Статья_Расходы_Компоненты` AS
WITH
`ЧРАС` AS (
SELECT
`РАСХ`.`Ид\РАСХ^СТР` AS `Ид_РАС`,
COUNT(*) AS `Кол_РАС`
FROM `Расходы\ТРФ` AS `РАСХ`
GROUP BY `Ид\РАСХ^СТР`),
`ЧКОМ` AS (
SELECT
`КЦР`.`Ид\КЦР^СТР` AS `Ид_КОМ`,
COUNT(*) AS `Кол_КОМ`
FROM `Компонент цены\ВЫПР` AS `КЦР`
GROUP BY `Ид\КЦР^СТР`)
SELECT
`СТР`.`Код` AS `Код статьи`,
`СТР`.`Название` AS `Название статьи`,
`ЧРАС`.`Кол_РАС` AS `Число расходов`,
`ЧКОМ`.`Кол_КОМ` AS `Число компонентов цены`
FROM `Статья` AS `СТР`
LEFT JOIN `ЧРАС` ON `СТР`.`Ид` = `ЧРАС`.`Ид_РАС`
LEFT JOIN `ЧКОМ` ON `СТР`.`Ид` = `ЧКОМ`.`Ид_КОМ`
GROUP BY `СТР`.`Ид`
;
SELECT * FROM `вирт_Статья_Расходы_Компоненты`;