如何将包含任何列的值表复制到具有一列的其他表

时间:2017-01-17 13:59:20

标签: sql sql-server tsql sqlxml

我想将一个表中的列复制到另一个表中。

我的主要表格 - TBL_Sku2

 id       sku1                     sku2                sku3                 sku4            sku5       
 ---     -----------       -----------------    -------------------  -----------------     ---------
 1   1GBDDR3-1066-21       2GBDDR3-1066-21        4GBDDR3-1066-414          Null               Null
 2   512MBDDR2-533-1038           null              null                     null            null
 3   1GBDDR2-533-1068        512MBDDR2-533-1033       Null                 Null                    Null

输出应该是:

TBL_SKU_F1的副本:

      Id                      sku                          
    -----------       ----------------- 
       1                1GBDDR3-1066
       2                2GBDDR3-1066
       3                4GBDDR3-1066
       4                512MBDDR2-533
       5                1GBDDR2-533
       6                512MBDDR2-533

到目前为止我的尝试:

select 
    [SKU1], [SKU2], [SKU3],
    [SKU4], [SKU5], [SKU6]
from
    [dbo].[TBL_Sku2]
unpivot 
    (Sku for col_name in ([SKU1], [SKU2], [SKU3], [SKU4], [SKU5], [SKU6]));

查询尝试#2:

select 
    [SKU1], [SKU2], [SKU3], [SKU4], [SKU5], [SKU6]
from
    [dbo].[TBL_Sku2]
cross apply
    (values('SKU1', [SKU1]), ('SKU2', [SKU2]), ('SKU3', SKU3),
           ('SKU4', SKU4), ('SKU5', SKU5), ('SKU6', SKU6)) c(col, value)
where 
    value is not null

我无法将这些列插入或转换为一列...

2 个答案:

答案 0 :(得分:3)

select row_number() over( order by (select null)) as id,
b.* from #temp t
cross apply
(
values(sku1),
      (sku2),
      (sku3),
      (sku4),
      (sku5)
) b(final)
where final is not null

答案 1 :(得分:1)

你与尝试1非常接近:

$('.ui.toggle').checkbox();

$('.ui.toggle').click(function() {
    if ($('.ui.toggle').checkbox('is checked')) {
        myLayer.show();
    }
    else {
        myLayer.hide();
    }
});

现在你可以正常化了!