Привет я новичок в JSON, и хотел бы задать этот вопрос:SQL запросов к JSON
Так что моя цель пытается сделать результат выглядеть следующим образом:
{
"userid": "10293304" , "segments": ["Online_Flag"]
}
{
"userid": "10292298" , "segments": ["schedule_Appointment", "Enrolled_Order","Complete_Order"]
}
Я был в состоянии использовать T SQL для запроса результата выглядеть следующим образом:
[{"userid":"10293159","segments":[{"segment":"Schedule_Appointment"}]},
{"userid":"10293056","segments":[{"segment":"Schedule_Appointment"}]},
{"userid":"10292838","segments":[{"segment":"Schedule_Appointment"}]},
вопрос заключается в том, что мне нужно только, чтобы показать значение JSON (Schedule_Appointment), а не ключ (сегмент)
Есть ли способ (с помощью TSQL) скрыть ключи и показать только значения в массиве JSON?
Я попытался найти способы создания массива JSON с использованием SQL, но не повезло, если кто-нибудь может объяснить, я бы очень признателен.
SQL SERVER 2016
данных
CREATE TABLE [dbo].[Lotame_JSON](
[lead_id] [varchar](100) NULL,
[dist_date_key] [date] NULL,
[online_flag] [int] NULL,
[sched_appt_qty] [int] NULL,
[enroll_order_qty] [int] NULL,
[compl_order_qty] [int] NULL)
insert into [dbo].[Lotame_JSON]
values('105646','2016-12-1',1,0,0,1)
insert into [dbo].[Lotame_JSON]
values('125646','2016-12-1',0,0,1,0)
insert into [dbo].[Lotame_JSON]
values('112646','2016-12-1',0,1,1,0)
insert into [dbo].[Lotame_JSON]
values('106446','2016-12-1',0,0,1,0)
запроса у меня есть:
select
[lead_id] AS 'userid',
(
SELECT segment
from
(
SELECT
CASE WHEN [online_flag] > 0 THEN '1' else null end as 'online_flag',
CASE WHEN sched_appt_qty > 0 THEN '2' else null end as 'Schedule_Appointment',
CASE WHEN enroll_order_qty > 0 THEN '3' else null end as 'Enrolled_Order',
CASE WHEN compl_order_qty > 0 THEN '4' else null end as 'Complete_Order'
FROM [dbo].[Lotame_JSON] as sub
WHERE sub.lead_id = main.lead_id
) t
UNPIVOT
(
segment1
for segment in (online_flag,Schedule_Appointment,Enrolled_Order,Complete_Order)
) as UnPvot
for JSON PATH
) AS 'segments'
from [dbo].[Lotame_JSON] as main
where online_flag = 0 and (sched_appt_qty > 0 or enroll_order_qty > 0 or compl_order_qty > 0)
and dist_date_key >= '2016-9-1'
FOR JSON PATH
Благодаря
Какую версию 'SQL SERVER' вы используете? –
Также вы можете добавить запрос, который вы использовали для получения результата, который у вас есть. – NotMe
обновлено, спасибо за помощь! – nghoang