SQLServer 에서 JSON 문서 형 데이터 조회 문제 해결
예 를 들 어 설 문 지 기록 표 가 있어 서 모든 문제 의 답 을 기록한다.그 구 조 는 다음 과 같다.
Id
user
date
Q1_Answer
Q2_Answer
Q3_Answer
행 Id
퀴즈 사용자
문제 풀이 날짜
문제
문제 2 결과
문제 3 결과
[Q1Answer]、[Q2_Answer]、[Q3_Answer]에 기 록 된 데이터 형식 은 JSON 문서 내용 입 니 다.옵션 값 이 고 여러 가지 선택 이 있 을 수 있 기 때문에 다음 과 같이 저 장 됩 니 다.
1 [
{"code":"a", "desc":"Jan."},
{"code":"b", "desc":"Feb."}
]
그 중에서 code 는 옵션 을 표시 하고 desc 는 옵션 의 문자 설명 을 표시 합 니 다.현재 사용 자 는 PowerBI 로 결과 에 대한 통 계 를 실현 하려 고 한다.다음 과 같은 몇 가지 문제 가 있 습 니 다.
분석 에 적합 한 데이터 구 조 는 이렇게 길 어야 한다.
행 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 사용자 가 두 개의 옵션 을 채 웠 음 을 주의 하 십시오.자체 설 문 지 설정 은 다 중 선택 을 지원 하 는 것 이다.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 데이터 조회 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 를 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.