SQL Server将行数据转换为列标题

时间:2013-10-21 15:06:46

标签: sql sql-server join pivot

我正在使用SQL Server 2008

我有一个结果1

ProductCode    ApprovedQuantity productlineid
----------------------------------------
599-128-001     1              1
599-129-001     0              1

结果集2

productlineid  Damage
------------------------------
   1           MissingCriticalComponents
   1           BrokenConnector/Clip

我想从两个选择语句(如下面的

)加入上述两个结果集
 ProductCode    ApprovedQuantity   MissingCriticalComponents BrokenConnector/Clip
-----------------------------------------------------------------------------------
599-128-001     7
599-129-001     5

结果集2的值是dynalic(即损坏类型不固定。它会有所不同。) 我想将结果集2行值添加为列值,结果集1添加空/空行值。

我可以将两个select语句连接到一个和一个resut集合,如下所示

 ProductCode    ApprovedQuantity     Damage
--------------------------------------------------------    
599-128-001     7       Broken Connector/Clip
599-129-001     5       Broken Connector/Clip
599-128-001     7       Missing Critical Components
599-129-001     5       Missing Critical Components

请提供您的意见

更新

这是零售产品采购订单.PFB是我的需求的简化版本。我有productLine表,产品表,购买订单表和损坏类型表。

产品线表

 Productlineid       productlinename
-------------------------------------
     1                   xx
     2                   yy

产品表

   ProductCode    Productlineid     .....
-----------------------------------------------------------------------------------
599-128-001     1
599-129-001     1
599-128-002     2
599-129-002     2

伤害表

productlineid  Damage
------------------------------
  1           MissingCriticalComponents
  1           BrokenConnector/Clip
  2           water damaged
  2           brokenLens

Orderdetails表

  ProductCode    ApprovedQuantity     OrderID
--------------------------------------------------------    
599-128-001     7       101
599-129-001     5       101
599-128-001     7       102
599-129-001     5       102

用户界面:有一个订单管理屏幕,可以导出到Excel选项/网格视图

使用订单ID作为输入,我需要在其损坏类型中获取订单详细信息,作为具有空行值的新列。通过Excel或网格,他们将使用每个订单更新损坏的单位。

我的目标是获得如下所示的结果集

 ProductCode    ApprovedQuantity   MissingCriticalComponents BrokenConnector/Clip
-----------------------------------------------------------------------------------
599-128-001     7
599-129-001     5

1 个答案:

答案 0 :(得分:0)

你只想要一个SELECT QUERY,它会为你提供你正确显示的第三个表吗?

假设,你的两个结果是在单个表上选择两个......

SELECT T1.productCode, T1.ApprovedQuantity, T2.Damage
FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T2.productlineid  = T1.productlineid  

这就是你想要的吗?