Inverth

ivan-query-1

Feb 7th, 2021 (edited)
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.95 KB | None | 0 0
  1. /*
  2. | 1) Вывести отчёт
  3. | Поля:
  4. | 1) ФИО или Наименование
  5. | 2) Кол-во запросов на аренду
  6. | 3) Активный договор если есть иначе NULL
  7. | 4) Сумма оплат (отсортировать по убыванию)
  8. | 5) Порядковый номер строки.
  9. */
  10. with
  11. [Журнал] as (
  12.     select distinct *
  13.     from (
  14.         select
  15.             [ВПЗ].[Логин],
  16.             sum(ВПЗ.[Сумма]) over (
  17.                 partition by ВПЗ.[Логин]
  18.                 order by ВПЗ.[Логин]
  19.             ) as [Сумма]
  20.         from (
  21.             select
  22.                 D.Логин,
  23.                 C.Сумма
  24.             from       [Подписка]            as P
  25.             inner join [Договор]             as D on P.Номер_договора = D.Номер_договора
  26.             inner join [Платёжная_квитанция] as C on P.Номер_квитанции = C.Номер_квитанции
  27.  
  28.             union
  29.  
  30.             select
  31.                 D.Логин,
  32.                 C.Сумма
  33.             from [Запрос_на_издания]         as R
  34.             inner join [Договор]             as D on R.Номер_договора = D.Номер_договора
  35.             inner join [Платёжная_квитанция] as C on R.Номер_квитанции = C.Номер_квитанции
  36.  
  37.             union
  38.            
  39.             select
  40.                 Zy.Логин,
  41.                 C.Сумма
  42.             from       [Запрос_на_аренду_издания]  as Zy
  43.             inner join [Платёжная_квитанция]       as C on Zy.Номер_квитанции = C.Номер_квитанции
  44.         ) as [ВПЗ]
  45.     ) as [ВНПЗ]
  46. )
  47. select distinct
  48.     rank() over (
  49.         order by P.Логин
  50.     ) as [Row],
  51.     P.Логин,
  52.     isnull(
  53.         UL.Наименование_организации,
  54.         concat(FL.Фамилия, ' ', FL.Имя, ' ', FL.Отчество)
  55.     ) as [Имя],
  56.     count(ROA.Номер_квитанции) over (
  57.         partition by ROA.Логин
  58.     ) as [Кол-во аренд],
  59.     (
  60.         select
  61.             ID.[Номер_договора]
  62.         from [Договор] as ID
  63.         where
  64.             ID.Логин = P.Логин
  65.             and ID.Статус = 'Активен'
  66.     ) as [Договор],
  67.     X.[Сумма]
  68. from      [Пользователь]             as P
  69. left join [ЮрЛицо]                   as UL  on P.Логин = UL.Логин
  70. left join [ФизЛицо]                  as FL  on P.Логин = FL.Логин
  71. left join [Запрос_на_аренду_издания] as ROA on P.Логин = ROA.Логин
  72. left join [Договор]                  as D   on P.Логин = D.Логин
  73. left join [Журнал]                   as J   on P.Логин = J.Логин
Add Comment
Please, Sign In to add comment