2016-10-14 12 views
1

Это данные, которые я вытащил из PowerShell и вставил его в #temptable:Как вставить в таблицу столбец с строки/переменной

Name     : SULESRKMA 
Location    : Leisure Services - Technology Services 
Shared     : False 
ShareName    : 
JobCountSinceLastReset : 0 
PrinterState   : 131072 
Status     : Degraded 
Network    : False 

Я нахожусь в то время как цикл по данным и раздели значения из идентификаторов. Я хотел бы использовать эти идентификаторы для вставки значений в таблицу с одинаковыми именами столбцов для идентификаторов. Так, например, у меня есть переменная @identifier = "Name" и таблица temp #printers с именем столбца Name. Я хотел бы сделать что-то вроде:

SELECT --select statement 
INSERT INTO #printers(@identifier) 

Но это, похоже, не работает, неудивительно. Есть ли способ сделать это? (Переменная @ identifier будет меняться на другие идентификаторы в данных во время цикла while.)

Любые альтернативные предложения, которые даже не включают использование такого метода, приветствуются. Моя конечная цель - просто получить эти данные в виде строки в таблицу.

(я в настоящее время с помощью Microsoft SQL Server Management Studio, если это имеет значение)

ответ

1

Во-первых, это маловероятно, что вам нужно перебрать что-либо в этой ситуации. Подумайте, что делать, когда вы думаете о SQL.

INSERT INTO #temptable (Column1Name, Column2Name, Column3Name) 
VALUES (@identifer, @anotherIdentifier, @someOtherIdentifier) 
--optional clauses 
WHERE Column1Name = 'some value' OR Column1Name = @someIdentifier 

Или вы можете SELECT INTO

SELECT 
@identifier, 
@anotherIdentifer, 
@someOtherIdentifier 
INTO #temptable 

Очень важно, что у вас есть значение в вашем SELECT INTO для каждого столбца в таблице, которую вы пытаетесь добавить данные. Так, например, если в #temptable было 4 столбца, и у вас было только 3 значения для ввода (столбцы 1, 2 и 3), тогда вам нужно будет NULL столбец 4 или установить его статически.

SELECT 
@identifier, 
@anotherIdentifer, 
@someOtherIdentifier, 
NULL 
INTO #temptable 
--or 
    SELECT 
@identifier, 
@anotherIdentifer, 
@someOtherIdentifier, 
'static value' 
INTO #temptable 

EDIT

Если вы хотите использовать varible, чтобы speciy столбец, который вы хотите вставить в, вы должны использовать динамический SQL. Вот пример:

if object_id ('tempdb..#tempTable') is not null drop table #tempTable 
create table #tempTable (Column1Name int, Column2Name int, Column3Name int) 

declare @columnName varchar(64) = 'Column1Name' 
declare @sql varchar(max) 

set @sql = 
'insert into #tempTable (' + @columnName + ') 
select 1' 

exec(@sql) 

select * from #tempTable 
+0

Дело в том, я не хочу, чтобы указать Column1Name, Column2Name и т.д. Я хочу некоторый способ сказать: «Я хочу, чтобы положить„@value“в столбец, определенный @ Идентификатор «Я не хочу помещать« @identifier »в таблицу, я хочу указать столбец с ним. Имеет ли это смысл? – TheEggSample

+0

Причина этой проблемы заключается в том, что я не хочу определять 10 переменных или столбцов для размещения данных. Я чувствую, что делает запрос менее многоразовым. Вот почему я просматриваю идентификаторы (например, «Имя», «Местоположение», «Общий» и т. Д. (Я буду использовать этот код повторно в экземпляре, где будет до 25 разных идентификаторов). – TheEggSample

+0

ах это делает @ SaniT404 i edtied это выше – scsimon

 Смежные вопросы

  • Нет связанных вопросов^_^