Вставка только новых данных из одной таблицы в другую с различными структурами - PullRequest
0 голосов
/ 27 мая 2019

Вставка только новых данных из одной таблицы в другую с различными структурами

Привет всем, Я пытаюсь вставить в таблицу "userhr.nucleofam_ris" только дополнительные данные, присутствующие в "userhr.paghe_nucleo_fam". Но появляется ошибка:

"Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует = ,! =, <, <=,>,> = или когда подзапрос используется в качестве выражения."

проблема в том, что я пытаюсь ввести более высокий +1 кинт для каждой следующей найденной записи.

SELECT distinct
       (select ROW_NUMBER() OVER (ORDER BY kint ASC) + 11000 from userhr.nucleofam_ris) as kint,
       hr01.kint as [kpadre]
      ,hr01.kint as [risorsa]
      ,hr05.parentela
      ,null as [gradoparentela]
      ,hr05.codfisc as [codfisc]
      ,hr05.cognome as [cognome]
      ,hr05.nome as [nome]
      ,concat(hr05.cognome,' ',hr05.nome) as [nominativo]
      ,hr05.sesso as [sesso] 
      ,hr05.datanasc as [nasc_data]
      ,null as [comune]
      ,null as [codice]
      ,null as [provincia]
      ,null as [stato]
      ,'NO' [disabile]
      ,null as [percdisab]
      ,'NO' AS [parto_plurimo]
      ,null as  [data_decesso]
      ,null as [data_presnascita_figlio]
      ,'NO' AS [acarico]
      ,'NO' AS [flessibilita]
      ,'NO' AS [sost_coniuge]
  FROM userhr.ris_umane hr01 INNER JOIN 
       userhr.wwrapp_ris hr03 ON (hr01.kint = hr03.kpar) INNER JOIN 
       userhr.rapp_lavoro_ris hr04 ON (hr03.karr = hr04.kint) INNER JOIN 
       userhr.paghe_nucleo_fam hr05 ON (hr04.kint = hr05.kpadre) 
where hr05.codfisc is not null 
      and hr05.cognome is not null 
      and hr05.nome is not null
      and NOT EXISTS (SELECT 1 
                      FROM userhr.nucleofam_ris hr02 
                      WHERE hr02.codfisc = hr05.codfisc)

Вы можете мне помочь?

1 Ответ

0 голосов
/ 28 мая 2019

Я думаю из вашего описания, что вы хотите создать следующий набор ключей, чтобы возвращаемые строки могли быть вставлены после последней строки в вашей существующей таблице.

Это пример, который сделает это, используя две временные переменные таблицы. Это должно указать вам правильное направление.

declare @t1 table(k int, txt1 varchar(10))
insert @t1 values (1,'firstrow'),(2,'second'),(3,'third')

declare @t2 table(txt2 varchar(10))
insert @t2 values ('a'),('b'),('c')

select row_number() over(order by txt2)
    +(select max(k) from @t1) NewKey, 
    txt2 
from @t2 t2

Результат:

NewKey  txt2
4       a
5       b
6       c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...