将每个列从一个表插入另一个表中的自己的行

时间:2014-10-30 02:55:51

标签: sql sql-server-2008

我有一个表(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

我希望我的例子有助于解释我的问题。

谢谢!

1 个答案:

答案 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()说),但想法是一样的。