회전-SQL 2005 데이터베이스 행렬 변환
(1)열 을 돌 리 는 방법
먼저 줄 을 돌 리 는 방법 을 말 해 보 세 요.이것 은 비교적 생각 나 는 것 입 니 다.sql 과 case when 을 이용 하여 해결 하면 됩 니 다.
목적 을 실현 하 다.
1:테스트 용 데이터 베 이 스 를 구축 합 니 다
CREATE TABLE RowTest(
[Name] [nvarchar](10) NULL,-- Q
[Course] [nvarchar](10) NULL,--n Q
[Record] [int] NULL--n
)
2:테스트 용 데이터 베 이 스 를 추가 합 니 다.
insert into RowTest values (' ',' ','91')
insert into RowTest values (' ',' ','92')
insert into RowTest values (' ',' ','93')
insert into RowTest values (' ',' ','94')
insert into RowTest values (' ',' ','95')
insert into RowTest values (' ',' ','96')
insert into RowTest values (' ',' ','81')
insert into RowTest values (' ',' ','82')
insert into RowTest values (' ',' ','83')
insert into RowTest values (' ',' ','84')
insert into RowTest values (' ',' ','85')
insert into RowTest values (' ',' ','86')
insert into RowTest values (' ',' ','71')
insert into RowTest values (' ',' ','72')
insert into RowTest values (' ',' ','73')
insert into RowTest values (' ',' ','74')
insert into RowTest values (' ',' ','75')
insert into RowTest values (' ',' ','76')
3:디자인 아이디어줄 을 돌 리 는 원 리 는 줄 의 분 류 를 검색 필드 로 찾 아 케이스 when 을 이용 하여 현재 필드 에 점 수 를 추가 하고 마지막 으로 group by 로 데 이 터 를 통합 하 는 것 입 니 다.
4:일반적인 방법
declare @sql nvarchar(max)
set @sql='select Name'
select @sql=@sql+','+'isnull(max( case when Course='''+TCourse.Course+''' then Record end ),0)'+TCourse.Course
from (select distinct Course from RowTest)TCourse
set @sql=@sql+' from RowTest group by Name order by Name'
print @sql
exec(@sql)
설명:모든 과정 이름 을 열 로 추출 합 니 다(조회 표 TCourse)case when 방법 으로 sql 을 맞 춥 니 다.
5:과외 시험
(1)데이터 추가
insert into dbo.RowTest values (' ',' ','110')
max 를 제거 하 는 방법 은 여러 줄 의 데이터 에 대응 할 수 있 기 때문에 오 류 를 보고 할 수 있 습 니 다.(2)데이터 추가
insert into dbo.RowTest values (' ',' C','110')
데이터 가 한 열 더 나 오지 만 다른 사람들 은 이 과정 이 없 으 면 0 이다.이로써 데이터 줄 전환 ok
(2)열 을 바 꾸 는 새로운 방법 이 시작 되 었 다.
목적 을 실현 하 다
1:실현 원리
인터넷 에서 다른 사람의 방법 을 보 았 는데 기본적으로 유 니 온 all 로 하나씩 바 뀌 었 기 때문에 나 는 그다지 좋 지 않다 고 생각한다.
우선 나 는 모든 열 이름 을 꺼 내야 한 다 는 생각 이 들 어서 인터넷 에서 표 의 모든 열 이름 을 찾 아 보 았 다.
그리고 나 서 나 는 메 인 시계 와 열 이름 이 형 성 된 시 계 를 연결 할 수 있다.그러면 필요 한 열 수 를 형성 할 수 있다.그리고 판단 에 따라 값 을 얻 으 면 완성 된다.하하
2:표 작성
create table CoulumTest
(
Name nvarchar(10),
int,
int,
int
)
3:데 이 터 를 넣 었 습 니 다
insert into CoulumTest values(N' ',90,91,92)
insert into CoulumTest values(N' ',80,81,82)
4:전형 적 인 곳 이 왔 습 니 다
select CT.Name,Col.name ,
(case when Col.name=N' ' then CT. when Col.name=N' ' then CT.
when Col.name=N' ' then CT. end ) as from CoulumTest CT
left join (select name from SysColumns Where id=Object_Id('CoulumTest')) Col on Col.name<>'Name'
잘못 보지 않 았 습 니 다.한 마디 로 해결 되 었 습 니 다.하지만 문제 가 저 를 현혹 시 켰 습 니 다.저 는 아직 간략화 되 지 않 았 다 고 생각 합 니 다.케이스 when 을 사용 하지 않 았 으 면 좋 겠 습 니 다.대신 들 에 게 동생 을 가르쳐 주세요.어떻게Col 의 name 은 바로 점 수 를 얻 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQL 2005 메모 공용 표 표현 식 학습(CTE)공용 표 표현 식(CTE)은 하나의 SELECT,INSERT,UPDATE,DELETE 또는 CREATE VIEW 문장의 실행 범위 내 에서 정 의 된 임시 결과 집합 이 라 고 볼 수 있다.CTE 는 파생 표 와 유...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.