회전-SQL 2005 데이터베이스 행렬 변환

주의:열 을 옮 기 는 방법 은 제 가 독창적 인 것 일 수도 있 습 니 다.하하,인터넷 에서 찾 을 수 없 기 때 문 입 니 다.모두 제 가 쓴 것 입 니 다.시스템 의 Sys Columns 를 사 용 했 습 니 다.
(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 은 바로 점 수 를 얻 습 니 다.

좋은 웹페이지 즐겨찾기