表字段如下:
Id  orderId  val1  BNo
1     1       2     1
2     1       5     2
3     2       6     1
4     2       5     2
....
希望得到视图
orderId  val1  BNo NorderId  Nval1  NBNo
1         2     1    1        5      2
2         6     1    2        5      2也就是一个OrderId下面有两条记录,根据编号BNO区分,我想通过视图将其合并为一条记录,因为我要用OrderId与别的表进行关联,我希望针对一个OrderId只有一条记录!

解决方案 »

  1.   


    --建立測試環境
    Create Table TEST
    (Id Int,
     orderId Int,
     val1 Int,
     BNo Int)
    --插入數據
    Insert TEST Select 1,     1,       2,     1
    Union All Select 2,     1,       5,     2
    Union All Select 3,     2,       6,     1
    Union All Select 4,     2,       5,     2
    GO
    --建立視圖
    Create View List 
    As
    Select 
    orderId,
    Max(Case BNo When 1 Then val1 End) As val1,
    max(Case BNo When 1 Then BNo End) As BNo,
    orderId As NorderId,
    Max(Case BNo When 2 Then val1 End) As Nval1,
    Max(Case BNo When 2 Then BNo End) As NBNo
    from TEST
    Group By orderId
    GO
    --測試
    Select * from List
    GO
    --刪除測試環境
    Drop Table TEST
    Drop View List
    --結果
    GO
    /*
    orderId val1 BNo NorderId Nval1 NBNo
    1 2 1 1 5 2
    2 6 1 2 5 2
    */