WITH codes AS (
SELECT id AS codes_id
FROM report.smev_register_codes
WHERE short_name = 'УНВ'
)
INSERT INTO report.smev_register (
id,
smev_register_type_code,
smev_register_codes_id,
"year",
"date",
"type",
sample_status,
guid
)
SELECT id, type_code, codes_id, year_val, date_val, type_val, status_val, guid_val
FROM (
VALUES
(
CAST(:registry_id_1 AS int),
'УНВ',
CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS int) - 1,
CURRENT_DATE,
'OUT',
'Сформирован',
CAST(:guid1 AS varchar)
),
(
CAST(:registry_id_2 AS int),
'УНВ',
CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS int) - 2,
CURRENT_DATE,
'OUT',
'Сформирован',
CAST(:guid2 AS varchar)
),
(
CAST(:registry_id_3 AS int),
'УНВ',
CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS int) - 3,
CURRENT_DATE,
'OUT',
'Сформирован',
CAST(:guid3 AS varchar)
)
) AS v(id, type_code, year_val, date_val, type_val, status_val, guid_val)
CROSS JOIN codes
WHERE NOT EXISTS (
SELECT 1
FROM report.smev_register r
WHERE r."year" = v.year_val
AND r.smev_register_type_code = 'УНВ'
AND r.sample_status <> 'Удалён'
)