json - 使用子查询创建 JSON 文件
问题描述
我正在尝试为我目前正在研究的一个新项目创建一个 JSON 文件,我的大部分工作都按预期工作,但我现在正处于尝试使用子查询以正确格式化 JSON。
我尝试使用以下子查询,但 SQL 不喜欢这种格式。
` 选择
'Admin User TEST ONLY PLEASE IGNORE' AS AdditionalNotes
(
SELECT v.atFault
FROM dbo.ic_DP_AX ax
CROSS APPLY (VALUES (ax.Acc_fault1), (ax.Acc_fault2)) v (atFault)
FOR JSON AUTO
) AS InsuredPartyClaims,
(
SELECT Acc_fault3 AS atFault
FROM dbo.ic_DP_AX
FOR JSON AUTO
) AS InsuredPartyConvictions
FOR JSON PATH) ROOT('InsuredParties')
FROM
dbo.icp_Daprospect AS p INNER JOIN
dbo.icp_Dapolicy AS d ON p.Branch@ = d.Branch@ AND p.ClientRef@ =
d.ClientRef@ LEFT OUTER JOIN
dbo.ic_DP_AX AS ax ON P.Branch@ = ax.B@ AND ax.PolRef@ = d.PolicyRef@
LEFT OUTER JOIN
WHERE
d.PolicyRef@ = '' AND
d.Branch@ = 0`
对于 JSON 路径
我想要实现的输出是:
"InsuredParties": [
{
"InsuredPartyClaims": [
{
"atFault": false
},
{
"atFault": true
}
],
"InsuredPartyConvictions": [
{
"atFault": false
},
谁能看到我做错了什么?我试图让这个尽可能简单。
解决方案
没有样本数据总是很困难,但愚蠢的例子是一个可能的解决方案:
桌子:
CREATE TABLE dbo.ic_DP_AX (Acc_fault1 bit, Acc_fault2 bit, Acc_fault3 bit)
INSERT INTO dbo.ic_DP_AX (Acc_fault1, Acc_fault2, Acc_fault3)
VALUES (0, 1, 0)
声明:
SELECT
(
SELECT v.atFault
FROM dbo.ic_DP_AX ax
CROSS APPLY (VALUES (ax.Acc_fault1), (ax.Acc_fault2)) v (atFault)
FOR JSON AUTO
) AS InsuredPartyClaims,
(
SELECT Acc_fault3 AS atFault
FROM dbo.ic_DP_AX
FOR JSON AUTO
) AS InsuredPartyConvictions
FOR JSON PATH, ROOT('InsuredParties')
结果:
{
"InsuredParties":[
{
"InsuredPartyClaims":[
{
"atFault":false
},
{
"atFault":true
}
],
"InsuredPartyConvictions":[
{
"atFault":false
}
]
}
]
}
推荐阅读
- powershell - 使用 Azure Pipeline 将 RDS 数据库备份到 S3,错误 SQL Powershell 模块未安装在您的代理计算机上,
- java - BottomSheetBehaviour 中的 RecyclerView 问题(未绘制内容。)
- deep-learning - dl4j UI 服务器中的参数比率更新图上的 b 和 W 是什么?
- sql - 对 redshift SQL 中的 COUNT 感到困惑
- linux - cp:无法创建常规文件'/home/Documents':权限被拒绝
- angular - JSON 对象名称作为 ID 返回
- algorithm - 为什么执行以下函数会出现运行时错误:来自 abort(3) (SIGABRT) 的中止信号?
- nlp - 预测法语和英语食物描述的正确匹配
- sqlalchemy - 有没有办法使用 SQLAlchemy 在 Teradata 表上创建主索引?
- c++ - 向量指针奇怪的结果