Temp таблица с преобразованными значениями - PullRequest
0 голосов
/ 07 октября 2010

Я хочу, чтобы скрипт преобразовал мою таблицу

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

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

Но есть кое-что, что я должен изменить.

Код должен быть автоматически увеличен с 100

Если длина кода больше 3, тогда я хочу вставить туда целое число, а если нет, я хочу скопировать этот код

Так от

    Code   Name
    ABCD   Namezxc
    EFGH   Nameasd
    IJK    Nameqwe

Я хочу получить соблазн с записями:

Code Name
100    Namezxc
101    Nameasd
IJK  Nameqwe

С наилучшими пожеланиями

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Сначала вставьте все значения, затем вернитесь и обновите значения с помощью LEN ()> 3. Просто используйте теневую (потому что это nvarchar и вам нужно привести) переменную приращения.

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 голос
/ 07 октября 2010

Попробуйте использовать это:

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

см. здесь и здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...