【发布时间】:2021-12-12 16:45:39
【问题描述】:
我有以下数据库结构:
ID、日期时间、JsonData
在 JsonData 中有一个名为 party 的字段,它是用 "," 分隔的,另一个字段名为 Source。
我正在尝试运行一个简单的选择,以获取按(来源、时间)分组的数据...
日期时间、来源、来源计数、计数方
2021 年 12 月 12 日,1、4、7
2021 年 12 月 12 日,2、3、5
我正在尝试运行以下 SQL,但是,我很难获得 CountParty。我总是倾向于得到 SourceCount。谁能解释一下我做错了什么?
我总是以
2021 年 12 月 12 日,1、4、4
2021 年 12 月 12 日,2、3、3
谢谢
select
json_value(JsonData,'$.Info.source') as Source
, Party.value
,count(json_value(JsonData,'$.Info.Party'))
, count(*)
from test
CROSS APPLY
STRING_SPLIT(json_value(JsonData,'$.Info.Party'), ',') Party
group by json_value(JsonData,'$.Info.Source'), value
order by [Source]
{ "cID": "CID1","Info": {"Party": "A,B,C","Source" : "1"}}
{ "cID": "CID2","Info": {"Party": "A, C","Source" : "2" }}
{ "cID": "CID3","Info": {"Party": "B, C","Source" : "2" }}
{ "cID": "CID4","Info": {"Party": "B","Source" : "1" }}
{ "cID": "CID5","Info": {"Party": "C,A","Source" : "1" }}
{ "cID": "CID6","Info": {"Party": "A","Source" : "1" }}
{ "cID": "CID7","Info": {"Party": "C","Source" : "2" }}
select
json_value(JsonData,'$.Info.source') as Source
, Party.value
,count(json_value(JsonData,'$.Info.Party'))
, count(*)
from test
CROSS APPLY
STRING_SPLIT(json_value(JsonData,'$.Info.Party'), ',') Party
group by json_value(JsonData,'$.Info.Source'), value
order by [Source]
【问题讨论】:
标签: json sql-server cross-apply