Sup*_*man 0 sql sql-server json sql-server-2016
我有以下SQL表
user_id product_1 product_2 product_3
123 Scissors Stone Paper
Run Code Online (Sandbox Code Playgroud)
我编写了此代码以将结果格式化为JSON,但无法以所需的格式获取它。如果我将所有产品列都命名为namesql则返回错误
Use different names and aliases for each column in SELECT list.
SQL代码:
select
product1 as 'Product1',
product2 as 'Product2',
product3 as 'Product3'
from Recommendations
where user_id = '123'
FOR JSON PATH, ROOT('Offers')
Run Code Online (Sandbox Code Playgroud)
电流输出:
{"offers":[
{"Product1": "Scissors", "Product2": "Stone", "Product3": "Paper"}
]
}
Run Code Online (Sandbox Code Playgroud)
所需的输出:
{"offers":[
{"name": "Scissors"},
{"name": "Stone"},
{"name": "Paper"}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下方法:
表:
CREATE TABLE Recommendations (
user_id int,
product1 varchar(100),
product2 varchar(100),
product3 varchar(100)
)
INSERT INTO Recommendations
(user_id, product1, product2, product3)
VALUES
(123, 'Scissors', 'Stone', 'Paper')
Run Code Online (Sandbox Code Playgroud)
声明:
SELECT v.Name
FROM Recommendations r
CROSS APPLY (VALUES (r.product1), (r.product2), (r.product3)) v(Name)
WHERE user_id = '123'
FOR JSON PATH, ROOT('Offers')
Run Code Online (Sandbox Code Playgroud)
结果:
{"Offers":[{"Name":"Scissors"},{"Name":"Stone"},{"Name":"Paper"}]}
Run Code Online (Sandbox Code Playgroud)