如何将表从多列旋转到多行

时间:2018-02-07 03:43:52

标签: sql-server

        CodeDt         CodeHeader     Item        Qty     Type    Remark     Attachment
     LK4-033502     RK-K-LK4-032438 IA01001023   2.00   TPR002     2           1.jpeg
     LK4-033502RK   RK-K-LK4-032438 IA01001023RK 2.00   NULL    IA01001023     NULL

以上是来自Sql server表的数据(使用2008 R2)。我想只做一行。这是我的预期结果:

  CodeDt     CodeHeader        Item          NewItem          Qty       
LK4-033502  RK-K-LK4-032438    IA01001023   IA01001023RK      2.00

我怎样才能实现这一目标?这是关系:

    Row 1 Item = Row 2 Remark, 
    Row 1 Code DT = Row 2 CodeDt+'RK'

1 个答案:

答案 0 :(得分:4)

有几种解决方案

1)使用reversed = True。对于JOIN

的行,它假定Type字段为空
CodeDt+'RK'

2)条件聚合

select
    a.CodeDt, a.CodeHeader, a.Item, b.Item, a.Qty
from
    myTable a
    join myTable b on a.Item = b.Remark
where
    a.Type is not null