Advertisement
DrankUser

Вставка колонок с подписями

Sep 9th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.    -- Вставка колонок
  2.   WITH
  3.     lesson AS (
  4.       SELECT
  5.         l.s_subject,
  6.         l.s_group,
  7.         l.s_vfur,
  8.         l.s_department,
  9.         ts.s_user,
  10.         ts.s_emp_dolgn,
  11.         ts.s_emp_work_type,
  12.         l.time,
  13.         l.date,
  14.         l.half_year,
  15.         l.year_begin,
  16.         ts.semester
  17.       FROM get_timetable_lessons1(date_begin, date_end) l
  18.         INNER JOIN timetable_subject ts ON ts.id = l.s_timetable_subject
  19.       WHERE l.s_department <> v_dopcps_id
  20.     ),
  21.     col_data AS (
  22.       SELECT
  23.         p.id s_page,
  24.         v_col_type s_type,
  25.         l.date,
  26.         l.time,
  27.         TRUE is_imported,
  28.         pesg.subgroup
  29.       FROM group_book_page p
  30.  
  31.         -- нагрузка нужна чтобы не потерять заочников с half_year = null
  32.         INNER JOIN profile_emp_subject pes ON pes.s_subject = p.s_subject
  33.           AND pes.s_vfur = p.s_vfur
  34.           AND pes.half_year = p.half_year
  35.           AND pes.b_year = p.year_begin
  36.         INNER JOIN profile_emp_student_group pesg ON pes.id = pesg.s_emp_subject
  37.           AND pesg.s_student_group = p.s_group
  38.  
  39.         INNER JOIN lesson l ON pesg.s_student_group = l.s_group
  40.           AND pes.s_vfur = l.s_vfur
  41.           AND pes.s_subject = l.s_subject
  42.           AND pes.b_year = l.year_begin
  43.           AND pes.s_user = l.s_user
  44.           AND pes.s_emp_dolgn = l.s_emp_dolgn
  45.           AND pes.s_chair = l.s_department
  46.  
  47.         -- если half_year = null, будет использован семестр
  48.         LEFT OUTER JOIN profile_emp_semester pes_sem ON pes.id = pes_sem.s_emp_subject
  49.           AND l.semester = pes_sem.semester
  50.       WHERE (l.half_year = pes.half_year OR pes_sem.s_emp_subject IS NOT NULL)
  51.     ),
  52.     col_ins AS (
  53.       INSERT INTO group_book_column (s_page, s_type, date, "time", is_imported)
  54.       SELECT DISTINCT
  55.         col_data.s_page,
  56.         col_data.s_type,
  57.         col_data.date,
  58.         col_data.time,
  59.         col_data.is_imported
  60.       FROM col_data
  61.         LEFT OUTER JOIN group_book_column c ON c.s_page = col_data.s_page
  62.           AND c.s_type = col_data.s_type
  63.           AND c.date = col_data.date
  64.           AND c.time = col_data.time
  65.           AND c.is_imported IS TRUE
  66.       WHERE c.id IS NULL
  67.       RETURNING
  68.         group_book_column.id,
  69.         group_book_column.s_page,
  70.         group_book_column.s_type,
  71.         group_book_column."date",
  72.         group_book_column."time",
  73.         group_book_column.is_imported
  74.     ),
  75.     sign_ins AS (
  76.       INSERT INTO group_book_column_sign (s_signer, s_column, subgroup)
  77.       SELECT
  78.         v_signer_teacher AS s_signer,
  79.         col.id AS s_column,
  80.         cd.subgroup
  81.       FROM group_book_page page
  82.         INNER JOIN col_ins col ON page.id = col.s_page
  83.         INNER JOIN col_data cd ON cd.s_page = col.s_page
  84.           AND cd.s_type = col.s_type
  85.           AND cd.date = col.date
  86.           AND cd.time = col.time
  87.           AND cd.is_imported = col.is_imported
  88.  
  89.       UNION SELECT
  90.         v_signer_student AS s_signer,
  91.         col.id as s_column,
  92.         NULL as subgroup
  93.       FROM col_ins col
  94.       RETURNING group_book_column_sign.id
  95.     )
  96.   SELECT
  97.     (SELECT count(id) FROM col_ins) as cols_ins,
  98.     (SELECT count(id) FROM sign_ins) as signs_ins
  99.   INTO cols_inserted, signs_inserted;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement