tem esta consulta que produz a saída abaixo:
select sec.site,sec.Name,sec.Freq from
( select Name from sec group by name having count(Freq) > 3)as dt
inner join sec on dt.Name = sec.Name
where sec.Freq like '%MUF2900%' ;
site Name Freq
S003 sct003a MUF2900_26
S003 sct003a MUF2900_26
S003 sct003a MUF2900_26
S034 sct034a MUF2900_26
S034 sct034a MUF2900_26
S034 sct034a MUF2900_26
Agora eu tenho que atualizar meu outro teste de nome de tabela com base na saída da consulta acima. O teste de tabela atualmente contém os seguintes registros (antes da atualização):
site cell ID
S003 09M00011 1019581
S003 09M00012 1019582
S003 09M00013 1019583
S003 29M00011 1019581
S003 29M00012 1019582
S003 29M00013 1019583
S034 09M00011 1016581
S034 09M00011 1016582
S034 09M00011 1016583
now for site S003 , ID for for cell starting from 09 and 29 are same ,so i need to update the ID for 29 i.e the unit place of ID should be incremented by 10 , like following..
REQUERIDOS :
Site cell ID
S003 09M00011 1019581
S003 09M00012 1019582
S003 09M00013 1019583
S003 29M00011 10195811
S003 29M00012 10195812
S003 29M00013 10195813
S034 09M00011 1016581
S034 09M00011 1016582
S034 09M00011 1016583
Eu tenho muitos registros como este.
Nota: S034 não possui célula a partir de 29, portanto seu ID não precisa ser atualizado.
o que eu tentei e onde estou ficando confuso é:
update Test set ID = (how to do this ??)
where Test.site = (select sec.site,sec.Name,sec.Freq from
( select Name from sec group by Name having count(Freq) > 3)as dt
inner join sec on dt.Name = Sec.Name
where sec.Freq like '%MUF2900%') where cell like '29M%';
Como devo fazer isso. Preciso fazer cursor para isso ??
A partir de seus exemplos, a instrução abaixo deve fazer o que você deseja fazer. Não é rápido, pois envolve converter ID para uma string e manipulá-la, mas acho que é a única coisa que funcionará para você.
Se ID for uma string para começar, você poderá remover a instrução CAST(ID AS VARCHAR(20)) e substituí-la apenas por ID.
ok, eu mesmo resolvi: