SQL Server JSON 将行转置为列

Posted

技术标签:

【中文标题】SQL Server JSON 将行转置为列【英文标题】:SQL Server JSON Transpose rows to columns 【发布时间】:2020-09-02 19:52:54 【问题描述】:
DECLARE @json NVARCHAR(MAX)

SET @json='"name":"John","surname":"Doe","age":45,"skills":["SQL","C#","MVC"]';

SELECT *
FROM OPENJSON(@json);

这给了你 键、值和类型作为列。

我想将姓名、姓氏和年龄作为列。 该行将是 John, Doe, 45。

如何翻转或转置列和行? 我尝试过 pivot 但无法让它工作。

【问题讨论】:

【参考方案1】:

您将使用openjson()with 子句:

select * 
from openjson(@json) with (
    name nvarchar(max), 
    surname nvarchar(max), 
    age int
);

Demo on DB Fiddle

姓名 |姓氏 |年龄 :--- | :-------- | --: 约翰 |能源部 | 45

【讨论】:

以上是关于SQL Server JSON 将行转置为列的主要内容,如果未能解决你的问题,请参考以下文章

SQL 将行转置为列

Oracle SQL Developer:如何使用 PIVOT 函数将行转置为列

SQL将行转置为列(按键变量分组)?

Tsql 将行转置为列,按列分组

Postgres 根据列值将行转置为列

CASE语句将行转置为列