Мне нужно все значение из массива JSON - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть таблица, в которой у меня есть данные JSON, и тип поля - NVARCHAR (4000)

    [
        {"number":1,"booked":0},
        {"number":2,"booked":0},
        {"number":3,"booked":0},
        {"number":4,"booked":1},
        {"number":5,"booked":0},
        {"number":6,"booked":0},
        {"number":7,"booked":0},
        {"number":8,"booked":0}
    ]

Я хочу сделать запрос к этому полю массива и хочу получить вывод, что Количество забронированных1 и не зарезервировано - 7. Я использовал функции JSON_VALUE(), JSON_QUERY(), но не дошел до точки.

Я также хочу, чтобы номер: 4 был зарезервирован.

Я используюSQL Server 2016

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Привет, если я понимаю все, что вы пытаетесь сделать, этот пример может ответить:

DECLARE @json NVARCHAR(MAX)
SET @json =  
N'[  
       {"number":1,"booked":0},
        {"number":2,"booked":0},
        {"number":3,"booked":0},
        {"number":4,"booked":1},
        {"number":5,"booked":0},
        {"number":6,"booked":0},
        {"number":7,"booked":0},
        {"number":8,"booked":0}
 ]'  

 SELECT number, booked
FROM OPENJSON(@json) 
    WITH (number int 'strict $.number', booked int   'strict $.booked')
WHERE booked = 1

В предложении futur, пожалуйста, предоставьте некоторые данные и исключительный вывод и запросите то, что вы пытаетесь.

0 голосов
/ 02 апреля 2019
    [
        {"number":1,"booked":0},
        {"number":2,"booked":0},
        {"number":3,"booked":0},
        {"number":4,"booked":1},
        {"number":5,"booked":0},
        {"number":6,"booked":0},
        {"number":7,"booked":0},
        {"number":8,"booked":0}
    ]

Выберите запрос:

SELECT 
 COUNT(JSON_VALUE(jsonInfo,'$.booked')) 
 OVER(PARTITION BY JSON_VALUE(jsonInfo,'$.booked'))
FROM table
GROUP BY JSON_VALUE(jsonInfo,'$.booked')
ORDER BY JSON_VALUE(jsonInfo,'$.booked')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...