如何将一个外键变为主键和列成列
问题描述:
我在SQL Server数据库中有一个下表。如何将一个外键变为主键和列成列
我如何删除OrderOptionId
并打开OrderNumer
作为一个独特的密钥。 (一种数据透视表)我想把上面的表格变成如下。
感谢
答
您可能正在寻找一个支点查询,而不是架构变革:
SELECT *
FROM (
SELECT
OrderNumber, OptionName, OptionValue
FROM OrdersTable
) AS t
PIVOT
(
MAX(OptionValue)
FOR OptionName IN ([Drink], [Sauce])
) AS pvt
参见:
- Microsoft TechNet上Using PIVOT and UNPIVOT。
- Simple Way To Use Pivot In SQL Query CodeProject上。 微软MSDN
- FROM (Transact-SQL)
答
只选择饮料,只选择酱汁,通过OrderNumber
加入他们的行列。
感谢Olivier,它工作完美,但我忘了提及原始表格中的ModifiedUtcDate列。我想要在Pivot表中获得该列,以便我可以使用该表进行增量加载。我试着在查询中添加该列,但数据透视表多次重复orderId。你能帮助吗? – Lokapedia
请参阅:[在SQL Server中的两个或多个字段上的PIVOT](https://blogs.msdn.microsoft.com/kenobonn/2009/03/22/pivot-on-two-or-more-fields-in-sql -服务器/)。 –