2010-10-07 5 views
0

Je veux script pour convertir ma tabletable temporaire avec les valeurs converties

CREATE TABLE #TempTable (
Code nvarchar(5) primary key, 
name nvarchar(100)) 

Insert into #TempTable (Code ,name) 
Select st.Code , st.name From StaticTable st 

Mais il y a quelque chose que je dois changer.

Code doit être auto-incrémenté de 100

Lorsque la durée du code est plus de 3, alors je veux y insérer entier, lorsqu'ils ne sont pas que je veux copier ce code

donc de

Code Name 
    ABCD Namezxc 
    EFGH Nameasd 
    IJK Nameqwe 

Je veux obtenir temptable avec des enregistrements:

Code Name 
100 Namezxc 
101 Nameasd 
IJK Nameqwe 

Meilleures salutations

Répondre

1

Insérez d'abord toutes les valeurs, puis revenir en arrière et mettre à jour ceux avec> LEN() 3. Il suffit d'utiliser un endroit ombragé (parce que son un nvarchar et vous devez lancer) variable d'incrément.

CREATE TABLE #TempTable (
    Code nvarchar(5) primary key, 
    name nvarchar(100) 
) 

Insert into #TempTable (Code ,name) 
Select st.Code , st.name From (
    select 'ABCD' AS Code, 'Namezxc' as name union all 
    select 'EFGH' AS Code, 'Nameasd' as name union all 
    select 'IJK' AS Code, 'Nameqwe' as name 
) st 

declare @vintCounter as nvarchar(5) 
set @vintCounter = N'99' 

update #TempTable 
    SET @vintCounter = Code = cast(@vintCounter as int) + 1 
where len(Code) > 3 

select * from #TempTable 
1

Essayez cette utilisation:

SELECT Case When Len(st.Code) <4 THEN IDENTITY(int, 100,1) 
      Else st.Code End As Code, 
     st.name 
INTO #TempTable 
FROM StaticTable st 

voir plus here et here

Questions connexes