Sql 将一个表中的每一列插入其中';在另一个表中显示自己的行

Sql 将一个表中的每一列插入其中';在另一个表中显示自己的行,sql,sql-server-2008,Sql,Sql Server 2008,我有一个大约有20列和数千行的表(示例)。我有另一个表(SAMPLE\u DETAIL),有两列(DETAIL\u NAME,DETAIL\u VALUE)。我想做的是将SAMPLE中的所有列插入SAMPLE\u DETAIL中,每个列都是它自己的行,使用列名作为SAMPLE\u DETAIL.DETAIL\u name,它的值作为SAMPLE\u DETAIL.DETAIL\u值 样本表 ID, TEXT_ID, DESCRIPTION, LOG_DATE, LOG_BY 1, SAMPLE_

我有一个大约有20列和数千行的表(示例)。我有另一个表(SAMPLE\u DETAIL),有两列(DETAIL\u NAME,DETAIL\u VALUE)。我想做的是将SAMPLE中的所有列插入SAMPLE\u DETAIL中,每个列都是它自己的行,使用列名作为SAMPLE\u DETAIL.DETAIL\u name,它的值作为SAMPLE\u DETAIL.DETAIL\u值

样本表

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
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

样本详细信息表

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
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
我希望我的例子能帮助解释我的问题


谢谢大家!

最简单的方法是使用
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()
say),但想法是一样的。

谢谢!这比我所涉猎的要容易得多。