在SQL中连接水平和垂直表的最佳方法是什么? (即在这种情况下,加入两个表的ItemID)
我有一张像这样的表:
另一张表是这样的:
理想情况下,我想将它们安排成这样的东西:
OrderID ItemID ClientID描述数量价格
基于OrderID加入这两种不同类型表的最简单方法是什么?
现在我首先将项目表从垂直转换为水平,然后加入2个表。但这会成为很多代码行。只是想知道是否有更简单的方法。谢谢!
答案 0 :(得分:1)
垂直表上的多个内连接
select a.OrderID, a.ItemID, a.ClientID, b.Description c.Quantity d.Price
from table2 as a
inner join table1 as b on a.itemID = b.itemID and b.element = 'Description'
inner join table1 as c on a.itemID = c.itemID and c.element = 'Quantity'
inner join table1 as d on a.itemID = d.itemID and d.element = 'Price'
答案 1 :(得分:0)
您可以在Sql server中使用Pivot。请参阅下面的代码段。
选择 订单ID,项ID,客户端ID, [说明],数量,价格 从 ( SELECT OrderID,i.ItemID,ClientID,ielement,i.details 来自项目i INNER JOIN订购a ON i.itemid = a.itemid )src 枢 ( MAX(详情) FOR元素([描述],数量,价格) )枢纽