在Azure SQL中,我有一个表“violation”,其中包含一个JSON列“course_json”,该列包含一个数组。
[{
"course_int": "1465",
"course_key": "LEND1254",
"course_name": "Mortgage Servicing Introduction",
"test_int": "0"
}, {
"course_int": "1464",
"course_key": "LEND1211",
"course_name": "Mortgage Servicing Transfer",
"test_int": "0"
}]
我想选择违规表中的行,并将表的列和“course_key”显示为:
LEND12654,LEND1211
如果course_key的数目总是固定的,那么我可以用途:
select person_id,event_date, JSON_VALUE(course_json, '$[0].course_key') + ',' + JSON_VALUE(course_json, '$[1].course_key') from violation
但它们不是固定的......可能有一个,两个,十个......我永远不会知道。
那么,是否可以迭代所有course_keys并以逗号分隔的格式显示它们呢?
1条答案
按热度按时间huwehgph1#
不使用
JSON_VALUE
,而是使用OPENJSON
获取所有课程,使用STRING_AGG
构建course_key分隔列表。| 个人标识|事件日期|课程_密钥|
| - ------| - ------| - ------|
| 1个|二〇二二年十二月二十一日|LEND1254、LEND1211|