Загрузка данных


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 <> 'Удалён'
)