2015-03-12 2 views
-1

Мой XML был:Создайте отдельные таблицы на основе значений в одном столбце базовой таблицы в SQL Server

set @xml=N' 
<root> 
    <attribute col1="attr1" col2="varchar(200)" col3="A"/> 
    <attribute col1="attr2" col2="varchar(200)" col3="A"/> 
    <attribute col1="attr3" col2="varchar(200)" col3="B"/> 
    <attribute col1="attr4" col2="varchar(200)" col3="C"/> 
</root>'             

я преобразовал XML в Base таблицы в SQL Server:

COL1  COL2   COL3 
----------------------------- 
attr1 varchar(200) A 
attr2 varchar(200) A 
attr3 varchar(200) B 
attr4 varchar(200) C 

Я хочу создавать таблицы, как

create table A 
(
    attr1 varchar(200), 
    attr2 varchar(200)  
) 

и аналогично для в и с в cOL3

+1

Какую базу вы используете? Для этого вам нужно использовать динамический SQL. –

+1

Хм, зачем ты это делаешь? – sgeddes

+0

HI, я использую SQL. Мне трудно разобрать мои таблицы на основе значений COL3, а затем создать отдельные таблицы. Мне был небольшой намек. Я знаю, что мне нужно применять динамический sql здесь. Но перед этим мне нужно разделить вещи, которые я думаю. – user3228318

ответ

0

Вы можете вставлять значения в новую таблицу на основе запроса выбора.

CREATE TABLE A 
    AS (SELECT COL1, COL2 
     FROM old_table 
     WHERE COL3 = "A"); 

Но вы должны сделать это для каждого отдельного значения COL3.

+0

Я считаю, что OP хочет динамически создавать таблицы на основе импортируемого xml (тип специфический). Это не будет выполнено (и не будет работать в некоторых базах данных). – sgeddes

+0

@ Daniel- Я не могу проверить значение COL3, поскольку я сделал эту базовую таблицу с 3 столбцами из xml-файла. поэтому мой COL3 может иметь любые значения. Я хочу создать новые таблицы на основе моих значений в COL3. – user3228318

+0

Тогда я думаю, вы не уйдете с чистого SQL, и это зависит от того, какой вкус вы используете. В Postgres вы должны иметь возможность создать функцию или хранимую процедуру, в которой вы сначала выбираете все значения «COL3», а затем прокладываете их через них и создаете таблицы соответственно. Но, глядя на ваш вопрос снова, я думаю, что @sgeddes прав, и мое решение не будет делать то, что вы хотели. Во всяком случае, вам нужно как-то скриптировать это либо во внешнем скрипте на выбранном вами языке, либо в виде пользовательской функции SQL/хранимой процедуры. – udondan