Как использовать заявление объявления для обновления таблицы - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть это Заявление об объявлении

declare @ReferralLevelData table([Type of Contact] varchar(10));
insert into @ReferralLevelData values ('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel');

select (row_number() over (order by [Type of Contact]) % 3) +1 as [Referral ID]
    ,[Type of Contact]
from @ReferralLevelData 
order by [Referral ID]
        ,[Type of Contact];

Он не вставляется в таблицу, поэтому я чувствую, что он не работает должным образом, т. Е. Не изменяет таблицу.

Если это сработало, я надеялся изменить оператор, чтобы он обновился.

В данный момент таблица просто печатает этот результат


1   f2f
1   nf2f
1   Travel
2   f2f
2   nf2f
2   Travel
3   f2f
3   nf2f
3   Travel

EDIT : Я хочу обновить таблицу для ввода повторяющихся данных группами по три.

У меня есть таблица данных, она дублируется дважды в одной и той же таблице, чтобы составить три набора.

Его "ReferenceID" является первичным ключом, я хочу, чтобы в пути были сгруппированы 3 одинаковых ReferenceID и введены эти три значения "f2f" "NF2F" "Travel" в строку с именем "Type" в любом порядке, но убедитесь, что каждый ReferenceID имеет только одно из этих значений.

1 Ответ

2 голосов
/ 29 апреля 2019

Вы имеете в виду следующее?

declare @ReferralLevelData table(
    [Referral ID] int,
    [Type of Contact] varchar(10)
  );

insert into @ReferralLevelData([Referral ID],[Type of Contact])
select
  (row_number() over (order by [Type of Contact]) % 3) +1 as [Referral ID]
  ,[Type of Contact]
from
  (
    values ('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel')
  ) v([Type of Contact]);

Если вас это устраивает, вы также можете использовать следующий запрос для генерации данных:

select r.[Referral ID],ct.[Type of Contact]
from
  (
    values ('f2f'),('nf2f'),('Travel')
  ) ct([Type of Contact])
cross join
  (
    values (1),(2),(3)
  ) r([Referral ID]);
...