2016-12-08 4 views
1

나는이 같은 테이블이,SQL Server : 피벗 테이블에서 테이블을 만드는 방법?

enter image description here

과 나는 코드로 다음으로 선회 한 나는에서 새 테이블을 만들 수있는 방법

select * 
from 
(
    select * 
    from table1 
) a 
pivot 
(
avg(col3) 
for col2 in ([a],[b],[c],[d]) 
) as pv; 

enter image description here

피벗 테이블 pv? select *를 newTable에 시도했지만 작동하지 않는 것 같습니다.

+0

다이나믹 SQL을 시도하십시오 – artm

+0

간단하고 정확한 답변은 "newTable"을 원래대로 사용하는 것입니다 만, 테이블을 작성한 후에는이를 수행 할 수있는 권한이 있어야합니다. 다음에 수행 할 작업을 생각해야합니다 시각. 떨어 뜨리고 다시 만드시겠습니까? 잘라 버리고 삽입 하시겠습니까? 아니면 그냥 정적 테이블로 유지? 그것들은 모두 여러분의 필요에 따라 달라지며 대신 임시 테이블을 갖고 싶어합니다. –

답변

1

당신은 Chanukya에서 제공하는 스키마와 INTO

SELECT * INTO #TAB 
FROM 
(
    SELECT * 
    FROM TABLE1 
) A 
PIVOT 
(
AVG(COL3) 
FOR COL2 IN ([A],[B],[C],[D]) 
) AS PV; 

와 함께 즉석에서 그것을 만들 수 있습니다. (나를 위해 일한)

CREATE TABLE #D 
(
COL1 INT, 
COL2 VARCHAR(10), 
COL3 INT 
) 
INSERT INTO #D VALUES 
(1,'A',11), 
(2,'B',22), 
(3,'C',33), 
(4,'D',44) 

SELECT * INTO #PIVOT_RESULT 
FROM (
SELECT COL1, COL2, COL3 FROM #D 
)AS A 
PIVOT 
(
AVG(COL3) 
FOR COL2 IN ([A],[B],[C],[D]) 
) AS PV; 


SELECT * FROM #PIVOT_RESULT 
0

이 시도 :

당신의 선택의 열은 새로운 테이블의 컬럼과 동일해야합니다. 당신이 실제 테이블을 원하지 않는 경우

INSERT INTO NewTable 
select * 
from 
(
    select * 
    from table1 
) a 
pivot 
(
avg(col3) 
for col2 in ([a],[b],[c],[d]) 
) as pv; 

, 당신은이 데이터는 다음 #TempTbl 다음 데이터에 액세스 #TempTbl에서 임시 테이블을 사용할 수있다 쿼리를 통해 액세스 할 수있게하려면.

INSERT INTO #TempTbl 
select * 
from 
(
    select * 
    from table1 
      ) a 
pivot 
(
    avg(col3) 
    for col2 in ([a],[b],[c],[d]) 
           ) as pv; 
+0

이렇게하기 전에 먼저 새 테이블을 만들어야한다는 뜻입니까? @Jibin Balachandran – Wilheim

+0

@Wilheim 그렇습니다. 동일한 수의 열과 데이터 유형으로 테이블을 만들어야합니다. 쿼리 전체에서 결과 집합에 액세스하려는 경우 임시 테이블을 사용할 수 있습니다. INSERT INTO # TempTbl처럼, TempTbl에 대해 질의 할 수 있습니다. –

0

그 작업을 수행하는 simpliest 방법은 원래 추측으로 절 "로"사용하는 것입니다. 당신이 당신의 코드를 공유하지 않았기 때문에 우리는 당신이 잘못했을 수도있는 것을 모른다. 그냥 "tableName"을 자신의 피봇 팅 코드에 추가하십시오.

select * into myPivotedTable 
from 
(
    select * 
    from table1 
) a 
pivot 
(
avg(col3) 
for col2 in ([a],[b],[c],[d]) 
) as pv; 

추신 : 나는 테이블을 만들 권한이 있다고 가정합니다.