好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > SQLServer中JSON文檔型數據的查詢問題解決

SQLServer中JSON文檔型數據的查詢問題解決

熱門標簽:萬利達綜合醫院地圖標注點 武漢AI電銷機器人 電銷機器人 深圳 在電子版地圖標注要收費嗎 實體店地圖標注怎么標 地圖標注如何弄全套標 外呼系統會封嗎 股票配資電銷機器人 南京電銷外呼系統哪家好

近日在項目中遇到一個問題: 如何在報表中統計JSON格式存儲的數據?

例如有個調查問卷記錄表,記錄每個問題的答案。 其結構示意如下(橫表設計)

Id user date Q1_Answer Q2_Answer Q3_Answer
行Id 答題用戶 答題日期 問題一結果 問題二結果 問題三結果

在[Q1_Answer]、[Q2_Answer]、[Q3_Answer]中記錄的數據格式是JSON文檔內容,因為是選項值,而且考慮到可能有多選, 所以存儲的格式如下:

1 [ 
     {"code":"a", "desc":"Jan."},
     {"code":"b", "desc":"Feb."}
  ]

其中 code 表示選項, desc 表示選項的文字描述。

現在,用戶想用PowerBI 來實現對結果的統計。有如下幾個問題:

  • 在Power BI中,無法直接從JSON數據中讀取到選項值
  • 如果是多選,又該如何處理。

比較適合分析的數據結構應該長這樣:

行Id 答題用戶 答題日期 問題編號 用戶選項 選項文字
1 user1 2021-6-26 Q1 A Jan.
2 user1 2021-6-26 Q2 A Mon.
3 user1 2021-6-26 Q2 B Tue.
4 user1 2021-6-26 Q3 A Swimming
6 user2 2021-6-26 Q1 B Feb.
7 user2 2021-6-26 Q2 ... ...

 注意,上述Q2用戶填了2個選項。 本身問卷設定就是支持多選的。 用JSON文檔結構保存數據, 主要是為了方便采集和數據存取。因此要額外做些數據處理, 使采集的數據便于統計。

筆者經過一些調查, 發現可以結合使用UNPIVOT和OPENJSON方法來達到理想的效果。 具體過程如下:

準備表格和初始化數據

-- 1 create table
Create Table T_Questionaire(id int identity(1,1) primary key, username varchar(100), t1 nvarchar(500),t2 nvarchar(500),t3 nvarchar(500), dt datetime)


-- 2 init data
Insert into T_Questionaire( username, t1, t2, t3, dt) 
values ('John' , '[{"code":"a", "desc":"Monday"}]', '[{"code":"a", "desc":"Jan."}]', '[{"code":"b", "desc":"2021"}]' ,getdate())
 ,     ('Alice' , '[{"code":"b", "desc":"Tuesday"}]', '[{"code":"a", "desc":"Jan."}, {"code":"b", "desc":"Feb."}]', '[{"code":"a", "desc":"2020"},{"code":"b", "desc":"2021"}]' ,getdate())

數據內容:

 創建轉換視圖:

Create   or alter view V_VerticalQuestionaire 
as
with pt as (
select a.username, a.T, a.answers,  a.dt from dbo.T_Questionaire a
unpivot 
  (  answers for T in (t1,t2,t3  ))
a)
select pt.username, pt.dt, pt.T , aw.code, aw.[desc]
from pt 
  cross apply openjson(answers) WITH (code NVARCHAR(100) '$.code', [desc] NVARCHAR(100) '$.desc') aw

查詢結果如下:

 總結下解決的思路:

1 先用unpivot將列行轉換, 使橫表記錄變成縱表記錄

2 使用openjson 將json數據轉換為集合數據, 然后使用cross apply 將集合展開

好了,到此這篇關于SQLServer中JSON文檔型數據的查詢問題解決的文章就介紹到這了,更多相關SQLServer中JSON數據查詢內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SQL Server中將查詢結果轉換為Json格式腳本分享
  • SqlServer將查詢結果轉換為XML和JSON

標簽:泰安 廣東 濟寧 臺州 濟源 武威 安徽 汕頭

巨人網絡通訊聲明:本文標題《SQLServer中JSON文檔型數據的查詢問題解決》,本文關鍵詞  SQLServer,中,JSON,文檔型,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLServer中JSON文檔型數據的查詢問題解決》相關的同類信息!
  • 本頁收集關于SQLServer中JSON文檔型數據的查詢問題解決的相關信息資訊供網民參考!
  • 推薦文章

    上一篇:sql字段解析器的實現示例

    下一篇:SQL 尚未定義空閑 CPU 條件 - OnIdle 作業計劃將不起任何作用