hi,
в приведенном ниже примере кода я извлекаю столбцы из временной таблицы, используя условие case ..
на шаге 2, который мы проверяем, был ли выбран любой столбец из оператора case .. вНа шаге 3 мы выбираем только столбцы, которые были получены из приведенного выше случая stmnt .. На шаге 4 мы создаем физическую таблицу с именами столбцов, которые были выбраны выше, а затем вставляем в нее .. По крайней мере, удаляем обе таблицы
Я надеюсь, что это поможет вам
step1:
DECLARE @dynsql NVARCHAR(MAX)
SELECT @dynsql =
CASE WHEN columnname1 >0 THEN ',columnname' ELSE '' END +
CASE WHEN columnname2 >0 THEN ',columnname2' ELSE '' END +
.
.
CASE WHEN columnnamen >0 THEN ',columnnamen ' ELSE '' END
FROM ##temptble
WHERE condition = cond;
step 2:
IF(LEN(@dynsql) > 0)
BEGIN
step 3:
SET @dynsql = STUFF(@dynsql,1,1,'SELECT machinename, ') + ' FROM ##temptble'
EXEC(@dynsql)
END
decalre f nvarchar(max)
шаг 4:
set @f = STUFF(@dyncreate,1,6,'create table ven_temp( descriptionname nvarchar(111),' ) + ' int )'
exec(@f)
insert into ven_temp
EXEC(@dynsql)