Сбор нескольких статей в Интернете, в том числе этой с CTE и этой БЕЗ CTE , я добился успеха в получении необходимых мне данных, включая подсчетРезультаты. Однако мне нужно, чтобы этот счетчик находился в определенном месте в объекте JSON ... По сути, я знаю, как получить набор строк в определенную структуру JSON с помощью FOR JSON PATH, ROOT ('data')
и т. Д.
Однако я делаюне знаю, как получить "recordsFiltered" в корне моего вывода JSON. Это количество выводится с использованием COUNT(*) OVER () AS recordsFiltered
По сути, мне нужно, чтобы моя структура выглядела так (см. Ниже) ... Как я могу получить "recordsFiltered" в корне $.
результата JSON безон повторяется миллиард раз в разделе "data":[]
?
Лучшая идея, которую я могу придумать, - создать временную таблицу, а затем использовать , что , для структурирования JSON. Но я хочу сделать это причудливым способом SQL, если таковой существует, используя операторы SELECT или CTE, где это применимо.
{
"draw": 1,
"recordsTotal": 57,
"recordsFiltered": 57, // <<<--- need records filtered HERE
"data": [
{
"DT_RowId": "row_3",
"recordsFiltered": "69,420", // <<<---- NOT HERE!!!
"first_name": "Angelica",
"last_name": "Ramos",
"position": "System Architect",
"office": "London",
"start_date": "9th Oct 09",
"salary": "$2,875"
},
...
]
}
Вот пример кода SQL:
SELECT
COUNT(*) OVER () AS recordsFiltered,
id,
a,
b
FROM t1
WHERE
(@Search IS NULL OR
id LIKE '%'+@Search+'%' OR
a LIKE '%'+@Search+'%' OR
b LIKE '%'+@Search+'%')
ORDER BY
CASE
WHEN @SortDir = 'ASC' THEN
CASE @SortCol
WHEN 0 THEN id
WHEN 1 THEN a
WHEN 2 THEN b
END
END desc,
CASE
WHEN @SortDir = 'desc' THEN
CASE @SortCol
WHEN 0 THEN id
WHEN 1 THEN a
WHEN 2 THEN b
END
END DESC
OFFSET @DisplayStart ROWS
FETCH NEXT @DisplayLength ROWS ONLY
for json path, root ('data')