我有一个ClassTable
如下所示的Languages
列,其中数据为 JSON:
ID | 标题 | 语言 |
---|---|---|
1 | 第一类 | [{“ID”:1,“姓名”:“英语”},{“ID”:2,“姓名”:“印地语”}] |
2 | 2 类 | [{“ID”:1,“姓名”:“马拉地语”},{“ID”:2,“姓名”:“泰卢固语”}] |
和一个Master
表格Languages
ID | 姓名 |
---|---|
1 | 英语 |
2 | 印地语 |
3 | 马拉地语 |
4 | 泰卢固语 |
我需要如下输出
ID | 标题 | 语言 ID |
---|---|---|
1 | 测试标题1 | 1,2 |
我试图通过OPENJSON
从中获取数据来实现这一点,JSON
然后我将STUFF()
其应用于该数据,以便获得逗号分隔的 LanguageID
这是我写的查询,但我没有得到预期的输出
SELECT
A.ID,
A.Title,
LanguageIDs = STUFF ((SELECT CONCAT(',',A.ID)
FROM Master.Languages
WHERE ID IN (A.LanguageID)
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, SPACE(0))
FROM
(SELECT
X.ID,
X.Title,
X.CreatedOn,
B.ID as LanguageID
FROM
ClassTable X
CROSS APPLY
OPENJSON(Languages)
WITH (ID INT '$.ID') as B
WHERE
X.ID = 1) AS A
谁能告诉我我犯了什么错误?还是我必须为这个问题尝试不同的方法?