首页 > 解决方案 > 列列表中指定的列多于交叉应用

问题描述

这是我的查询,我试图以 JSON 格式获取记录。我不明白为什么我会收到错误说明:

l2 的列多于交叉应用列列表中指定的列数

还有错误:

l3 的列多于交叉应用的列列表中指定的列

SELECT
    l1.ID,
    l1.root_id,
    l1.level_id,
    d1.name,
    questionnare_data = (SELECT l1.ID, l1.level_id, categories = l2.subcategories FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)
FROM  [951278].[grc].[category] l1
INNER JOIN [951278].[grc].[category_data] d1
ON l1.ID=d1.category_id
CROSS APPLY (
    SELECT l2.ID, level_id, d2.name, l3.subcategories
    FROM [951278].[grc].[category] l2
    INNER JOIN [951278].[grc].[category_data] d2
    ON l2.ID=d2.category_id
    CROSS APPLY (
        SELECT l3.ID, l3.level_id, d3.name
        FROM [951278].[grc].[category] l3
        INNER JOIN [951278].[grc].[category_data] d3
        ON l3.ID=d3.category_id
        WHERE l3.root_id = l2.ID
        FOR JSON PATH
    ) l3(subcategories)
    WHERE l2.root_id = l1.ID
    FOR JSON PATH
) l2(subcategories)
WHERE l1.ID = 1;

我哪里做错了。请帮忙

标签: sqlsql-servertsqlsql-server-2016cross-apply

解决方案


推荐阅读