SQL Server 将行数据转换为列标题
Posted
技术标签:
【中文标题】SQL Server 将行数据转换为列标题【英文标题】:SQL server convert a row data to column headers 【发布时间】:2013-10-21 15:06:46 【问题描述】:我使用的是 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
我想从下面的两个 select 语句中加入上述两个结果集
ProductCode ApprovedQuantity MissingCriticalComponents BrokenConnector/Clip
-----------------------------------------------------------------------------------
599-128-001 7
599-129-001 5
结果集 2 值是动态的(即损坏类型不固定。它会有所不同。) 我想将结果集 2 行值添加为列值,结果集 1 具有空/空行值。
我可以将两个 select 语句合二为一,结果集如下所示
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 是我的 Requirement 的简化版本。我有一个 productLine 表、Product 表、purchare order 表和damagetype 表。
产品线表
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
订单明细表
ProductCode ApprovedQuantity OrderID
--------------------------------------------------------
599-128-001 7 101
599-129-001 5 101
599-128-001 7 102
599-129-001 5 102
用户界面:有一个带有导出到 excel 选项/网格视图的订单管理屏幕
使用 Order id 作为输入,我需要将订单详细信息连同其损坏类型作为具有空行值的新列来获取。通过 Excel 或网格,他们将更新每个订单的损坏单元。
我的目标是得到如下所示的结果集
ProductCode ApprovedQuantity MissingCriticalComponents BrokenConnector/Clip
-----------------------------------------------------------------------------------
599-128-001 7
599-129-001 5
【问题讨论】:
感谢您的评论。我已按问题更新。 您能否向我们提供您对结果 1 和 2 的请求?目前还不清楚。在表 2 中,有一个列损坏,带有值,而在表 3 中,损坏的值现在是列?。您能否向我们提供您用于请求的表格描述?缺少一张桌子? 新的列标题下应该有什么?您想要新列下的数量总和吗?想要的结果有点混乱。 我需要将订单详细信息连同其损坏类型作为具有空行值的新列来获取。请找到我的更新 【参考方案1】:您只想要一个 SELECT QUERY,它会给您显示的第三个表格,对吗?
假设,您的两个结果是单个表上的两个选择...
SELECT T1.productCode, T1.ApprovedQuantity, T2.Damage
FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T2.productlineid = T1.productlineid
这是你想要的吗?
【讨论】:
感谢您的回复。请在我的更新中找到更多详细信息。以上是关于SQL Server 将行数据转换为列标题的主要内容,如果未能解决你的问题,请参考以下文章