Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- | 1) Вывести отчёт
- | Поля:
- | 1) ФИО или Наименование
- | 2) Кол-во запросов на аренду
- | 3) Активный договор если есть иначе NULL
- | 4) Сумма оплат (отсортировать по убыванию)
- | 5) Порядковый номер строки.
- */
- with
- [Журнал] as (
- select distinct *
- from (
- select
- [ВПЗ].[Логин],
- sum(ВПЗ.[Сумма]) over (
- partition by ВПЗ.[Логин]
- order by ВПЗ.[Логин]
- ) as [Сумма]
- from (
- select
- D.Логин,
- C.Сумма
- from [Подписка] as P
- inner join [Договор] as D on P.Номер_договора = D.Номер_договора
- inner join [Платёжная_квитанция] as C on P.Номер_квитанции = C.Номер_квитанции
- union
- select
- D.Логин,
- C.Сумма
- from [Запрос_на_издания] as R
- inner join [Договор] as D on R.Номер_договора = D.Номер_договора
- inner join [Платёжная_квитанция] as C on R.Номер_квитанции = C.Номер_квитанции
- union
- select
- Zy.Логин,
- C.Сумма
- from [Запрос_на_аренду_издания] as Zy
- inner join [Платёжная_квитанция] as C on Zy.Номер_квитанции = C.Номер_квитанции
- ) as [ВПЗ]
- ) as [ВНПЗ]
- )
- select distinct
- rank() over (
- order by P.Логин
- ) as [Row],
- P.Логин,
- isnull(
- UL.Наименование_организации,
- concat(FL.Фамилия, ' ', FL.Имя, ' ', FL.Отчество)
- ) as [Имя],
- count(ROA.Номер_квитанции) over (
- partition by ROA.Логин
- ) as [Кол-во аренд],
- (
- select
- ID.[Номер_договора]
- from [Договор] as ID
- where
- ID.Логин = P.Логин
- and ID.Статус = 'Активен'
- ) as [Договор],
- X.[Сумма]
- from [Пользователь] as P
- left join [ЮрЛицо] as UL on P.Логин = UL.Логин
- left join [ФизЛицо] as FL on P.Логин = FL.Логин
- left join [Запрос_на_аренду_издания] as ROA on P.Логин = ROA.Логин
- left join [Договор] as D on P.Логин = D.Логин
- left join [Журнал] as J on P.Логин = J.Логин
Add Comment
Please, Sign In to add comment