我有一个表(SAMPLE),有大约20列和数千行。我有另一个表(SAMPLE_DETAIL),有2列(DETAIL_NAME,DETAIL_VALUE)。我想要做的是将SAMPLE中的所有列插入到SAMPLE_DETAIL中作为每个自己的行,使用列名称为SAMPLE_DETAIL.DETAIL_NAME,它的值为SAMPLE_DETAIL.DETAIL_VALUE。
样本表
ID, TEXT_ID, DESCRIPTION, LOG_DATE, LOG_BY
1, SAMPLE_01, AA, 07-02-14, SW
2, SAMPLE_02, AB, 07-02-14, RC
3, SAMPLE_03, AC, 07-02-14, MH
4, SAMPLE_04, AD, 07-02-14, RS
以
SAMPLE_DETAIL表
DETAIL_NAME, DETAIL_VALUE
ID, 1
TEXT_ID, SAMPLE_01
DESCRIPTION, AA
LOG_DATE, 07-02-14
LOG_BY, SW
ID, 2
TEXT_ID, SAMPLE_02
DESCRIPTION, AB
LOG_DATE, 07-02-14
LOG_BY, RC
ID, 2
TEXT_ID, SAMPLE_03
DESCRIPTION, AC
LOG_DATE, 07-02-14
LOG_BY, MH
ID, 3
TEXT_ID, SAMPLE_04
DESCRIPTION, AD
LOG_DATE, 07-02-14
LOG_BY, RS
我希望我的例子有助于解释我的问题。
谢谢!
答案 0 :(得分:0)
最简单的方法是union all
:
insert into sample_detail(detail_name, detail_value)
select 'id', id from sample union all
select 'text_id', text_id from sample union all
select 'description', description from sample union all
select 'log_date', log_date from sample union all
select 'log_by', log_by from sample;
因为所有内容都存储为字符串,您可能需要特定的日期转换(使用convert()
说),但想法是一样的。