问题描述
我有一个带有 USER_DATA 的表(用户数据表),其中有2行(基本上是2个条目)
我创建了一个嵌套的JSON查询->
SELECT CONCAT( first_name,' ',last_name) AS displayName,first_name AS givenName,last_name AS surname,identities = (SELECT login_name AS issuerAssignedId
FROM user_data
FOR JSON AUTO)
FROM user_data
FOR JSON PATH,ROOT('users');
在这里,我得到这个输出->
{
"users": [
{
"displayName": "David Dave","givenName": "David","surname": "Dave","identities": [
{
"issuerAssignedId": "System"
},{
"issuerAssignedId": "Administrators"
}
]
},{
"displayName": "Tony Padila","givenName": "Tony","surname": "Padila",{
"issuerAssignedId": "Administrators"
}
]
}
但是问题是->内部身份,
“ issuerAssignedId”:“系统” ---->属于戴夫
“ issuerAssignedId”:“管理员” ---->属于Tony
但是我无法停止内部选择查询(无法正确映射)
正确的输出应为--->
{
"users": [
{
"displayName": "David Dave","identities": [
{
"issuerAssignedId": "System"
}
]
},{
"displayName": "Tony Padila","identities": [
{
"issuerAssignedId": "Administrators"
}
]
}
请帮助。
解决方法
您缺少内部查询中的条件,以及为什么要让标识成为JSON输出中的单独数组。
根据我的理解,我已经更新了查询,请在下面的sql中进行引用,我不确定为什么您在查询中使用**
SELECT CONCAT (
FIRST_NAME,' ',LAST_NAME
) AS displayName,FIRST_NAME AS givenName,LAST_NAME AS surname,identities = (
SELECT innr.LOGIN_NAME AS issuerAssignedId
FROM USER_DATA
innr
WHERE
innr.LOGIN_NAME = ottr.LOGIN_NAME
FOR JSON AUTO
)
FROM USER_DATA ottr
FOR JSON PATH,ROOT('users');