2016-09-12 2 views
1

MSSQl2008의 최종 테이블에 결합하려는 세 개의 테이블이 있습니다. 내 문제는 최종 테이블 형식으로 데이터를 병합에 있습니다. 또 다른 문제는 내가 100에 가까운 각 테이블에있는 열 수는 각각 그래서SQl에서 병합 된 데이터를 정렬하는 방법

내가 최종 테이블을

<h1> Table 2008</h1> 
<table border = 1> 
<tr> 
    <td> ID </Td> 
    <td> Sample_year </Td> 
    <td> Total_at_t-5 </Td> 
    <td> Total_at_t-4 </Td> 
</tr> 
<tr> 
    <td> MMM </Td> 
    <td> 2008 </Td> 
    <td> 5.25 </Td> 
    <td> 65.25</Td> 
</tr> 
    </table> 

<p> </p> 

<h1> Table 2011</h1> 
<table header = "2011" border = 1> 
<tr> 
    <td> ID </Td> 
    <td> Sample_year </Td> 
    <td> Total_at_t-6 </Td> 
    <td> Total_at_t-5 </Td> 
</tr> 
<tr> 
    <td> MMM </Td> 
    <td> 2011 </Td> 
    <td> 7.25 </Td> 
    <td> 98.25</Td> 
</tr> 
    </table> 

<p> </p> 

<h1> Table 2013</h1> 
<table header = "2013" border = 1> 
<tr> 
    <td> ID </Td> 
    <td> Sample_year </Td> 
    <td> Total_at_t-7 </Td> 
    <td> Total_at_t-6 </Td> 
</tr> 
<tr> 
    <td> MMM </Td> 
    <td> 2013 </Td> 
    <td> 3.25 </Td> 
    <td> 7.25</Td> 
</tr> 
    </table> 

<p> </p> 
<h1> Table Final</h1> 
<table hearder = "Final Table" border = 1> 
<tr> 
    <td> ID </Td> 
    <td> Sample_year </Td> 
    <td> Total_at_t-7 </Td> 
    <td> Total_at_t-6 </Td> 
    <td> Total_at_t-5 </Td> 
    <td> Total_at_t-4 </Td> 
</tr> 
<tr> 
    <td> MMM </Td> 
    <td> NULL </Td> 
    <td> NULL </Td> 
    <td> NULL </Td> 
    <td> 5.25 </Td> 
    <td> 65025 </Td> 
</tr> 
<tr> 
    <td> MMM </Td> 
    <td> 2011 </Td> 
    <td> NULL </Td> 
    <td> 7.25</Td> 
    <td> 98.25 </Td> 
    <td> NULL </Td> 
</tr> 
<tr> 
    <td> MMM </Td> 
    <td> 2013 </Td> 
    <td> 3.25 </Td> 
    <td> 7.25 </Td> 
    <td> NUll </Td> 
    <td> NUll</Td> 
</tr> 
    </table> 
+1

니스 함께 가입 Union (http://www.w3schools.com/sql/sql_union.asp)를 사용해야 할 경우 가정 그 Table는 SQL 데이터베이스에 존재하지만, 우리는 ... 공유하시기 바랍니다하지 않은 sa와의 정의 주어진 출력에 데이터를 입력합니다. 이 출력은 일반 테이블 데이터입니까, 아니면 어떻게 든 복잡한 쿼리의 결과입니까? SQL Server가이 문제를 해결하는 가장 좋은 도구라면 확실하지 않습니다. – Shnugo

+0

@Shnugo 올바른 SQL Server가이 도구에 적합하지 않을 수 있습니다. SPSS를 사용하여 데이터를 병합하고 그것은 다소 내가 원하는 것을 수행합니다 ... 이유는 내가 각 테이블에 200 개 이상의 변수/열을 가지고 간단한 SQL 스크립트 영원히 걸릴 것입니다 –

+0

나는 곧 여기에 질문에 대답 : http://stackoverflow.com/a/39440056/5089204. 이렇게하면 목표에 가까워 질 수 있습니다. 그것은 ** FOR XML로 지정된 SELECT **를 함수로 보내고 전체 내용을'XHTML' 형식의 테이블로 가져옵니다 ... – Shnugo

답변

0

그냥 생성 SQL 스크립트를 필요로하는 최종 테이블을 생성하는 효율적인 코드가 필요하다 경우, 당신은 당신이 세 개의 테이블을 가지고,

declare @T2008 table (id varchar(3), sample_year int, [total_at_t-5] decimal(10, 2), [total_at_t-4] decimal(10, 2)) 

insert into @T2008 values ('MMM', 2008, 5.25, 65.25) 

declare @T2011 table (id varchar(3), sample_year int, [total_at_t-6] decimal(10, 2), [total_at_t-5] decimal(10, 2)) 

insert into @T2011 values ('MMM', 2011, 7.25, 98.25) 

declare @T2013 table (id varchar(3), sample_year int, [total_at_t-7] decimal(10, 2), [total_at_t-6] decimal(10, 2)) 

insert into @T2013 values ('MMM', 2013, 3.25, 7.25) 

select id, sample_year, null as [total_at_t-7], null as [total_at_t-6], [total_at_t-5], [total_at_t-4] 
from @T2008 

union 

select id, sample_year, null, [total_at_t-6], [total_at_t-5], null 
from @T2011 

union 

select id, sample_year, [total_at_t-7], [total_at_t-6], null, null 
from @T2013 
관련 문제