sql - 反透视具有多列的 SQL 表
问题描述
我想围绕多列取消透视 SQL 表。我尝试了一个普通的 UNPIVOT 语句,但它只围绕一个值进行。请参阅此链接,例如:https ://codingsight.com/understanding-pivot-unpivot-and-reverse-pivot-statements 。
我试图在下图中说明我的数据以及我想要的结果。最上面的表是 SQL 表中的数据样本。我使用了 3 种材料,但实际上有 20 种。
下表是我想要的结果。
数据位于 SQL 2008-r2 服务器上。
有关如何执行此任务的任何指示?
解决方案
考虑使用cross apply
,如下所示:
select t.date, t.product, x.*
from mytable t
cross apply (values
(container1material, container1amount),
(container2material, container2amount),
(container3material, container3amount)
) x(material, amount)
推荐阅读
- c# - 跟随一篇关于使用 iTextsharp 阅读 PDF 的帖子,但遇到了错误
- mongodb - if (!db) throw new Error('missing db argument\nnew Grid(db, mongo)');^ Error: missing db argument new Grid(db, mongo)
- mdx - MDX 函数 (Excel PowerPivot) 从 DB 中排除非数值
- javascript - 如何使用多个按钮触发相同的下拉/弹出框?
- android - Android - 如何将渐变颜色应用于位图?
- r - 没有fread函数?
- kotlin - 如何通过两个属性和整理器对对象列表进行排序
- javascript - 无法找出图表专家的 CSS 文件
- python - 创建一个基于空的numpy数组并附加现有数组
- hive - 根据 Hive 中的其他列查找列中时间戳的差异