mssql 표 구조 에 대한 다른 디 스 플레이(표현 뜻 변 하지 않 음)
표 현 력 이 좋 지 않 기 때문에 직접 그림 을 그린다.mssql 환경 에서 그림 1 의 시 계 를 그림 2 의 표 로 바 꿔 야 합 니 다.
그림 1 그림 2.분석
그림 3
2.1 창설 표
create table #tb
(ID int primary key,
Class nvarchar(max),
[Subject] nvarchar(max),
Score int)
insert into #tb values(1,' (1) ',' ','92')
insert into #tb values(2,' (1) ',' ','91')
insert into #tb values(3,' (1) ',' ','93')
insert into #tb values(4,' (2) ',' ','94')
insert into #tb values(5,' (2) ',' ','95')
insert into #tb values(6,' (2) ',' ','96')
insert into #tb values(7,' (3) ',' ','94')
insert into #tb values(8,' (3) ',' ','96')
insert into #tb values(9,' (3) ',' ','97')
select * from #tb
2.2 그림 3 의 첫 번 째 표를 두 번 째 표 로 전환시킨다
select [Subject], [ (1) ]=[Score]
,[ (2) ]=[Score]
,[ (3) ]=[Score]
from #tb
2.3 그림 3 의 두 번 째 표를 세 번 째 표 로 전환시킨다
-- , ,
-- : 0, ,
select subject,[ (1) ]=case when [Class]=' (1) ' then [Score] else 0 end
,[ (2) ]= case when [Class]=' (2) ' then [Score] else 0 end
,[ (3) ]=case when [Class]=' (3) ' then [Score] else 0 end
from #tb
2.4 그림 3 의 세 번 째 표를 네 번 째 표 로 전환시킨다
select subject, [ (1) ]=max( case when [Class]=' (1) ' then [Score] else 0 end)
,[ (2) ]=max( case when [Class]=' (2) ' then [Score] else 0 end)
,[ (3) ]=max( case when [Class]=' (3) ' then [Score] else 0 end)
from #tb group by subject
2.5 위의 표기 법 을 간소화 한다
declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename(Class)+'=max( case when [Class]='+quotename(Class,'''')+' then [Score] else 0 end)'
from #tb group by Class
--print @s
exec('select [Subject]'+@s+' from #tb group by [Subject]')
3.분석 과 수요 연장 3.1 간략화 분석위의 간소화,초보 급 의 나 에 대해 이해 하기 가 매우 힘 들 었 다.그래서 나 는 답 을 알 고 print@s 로 한 걸음 한 걸음 분석 했다.특히 select@s=@s+.........................................................
그림 43.2 수요 연장
아마 위의 수요 가 너무 간단 할 것 이다.그러면 우 리 는 지금 복잡 한 수 요 를 이 끌 어 내 고 반 의 성적 을 동태 적 으로 얻 을 수 있다.예 를 들 어 우리 의 수 요 는 일부 반 의 성적 을 열거 하 는 것 일 수 있다.코드 는 다음 과 같다
declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename(Class)+'=max( case when [Class]='+quotename(Class,'''')+' then [Score] else 0 end)'
from #tb
where Class in( )
group by Class
--print @s
exec('select [Subject]'+@s+' from #tb group by [Subject]')
4.정리본 고 는 주로 표 의 다른 디 스 플레이 를 실현 하 는데 보통 데 이 터 를 동적 으로 표시 하 는 예 에 사용 된다.어 려 운 점 은 분석 과정 과 기본 적 인 sql 문법 에 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
표 구조텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.