2013-02-12 2 views
3

한 열에서 두 열로 표를 만들고 싶습니다. 예를 들어 경로 테이블이 있습니다. 행이 4 개 있고, PATH2 테이블과 같이 두 개의 열로 나누고 싶습니다. 어떻게해야합니까? 나는 각각의 경로는 SQL Server 2012에서 작업하는 경우, 당신은 LEAD 분석 기능을 사용할 수 있습니다하나의 열 테이블을 두 개의 열로 만드는 방법은 무엇입니까?

╔══════╦═══════╗ 
║ PATH ║ PATH2 ║ 
╠══════╬═══════╣ 
║ 1 ║  2 ║ 
║ 2 ║  3 ║ 
║ 3 ║  4 ║ 
╚══════╩═══════╝ 
+1

당신은 분명히 어떤 이유로 그것을 나누고 싶습니다. 그게 뭐야? 어떤 조건으로 분할 할 것입니까? – asifsid88

+0

조건은 첫 번째 두 행 (1,2)이 새 테이블의 같은 행에있을 것입니다. 첫 번째 테이블의 두 번째 및 세 번째 행은 두 번째 행에 있습니다. 두 번째 테이블에. 그것은 그런 식으로 진행됩니다. 나는 길을 찾아 그 길로 나중에 거리를 할당하고 싶습니다. –

답변

4

SQL Fiddle

MS SQL 서버 2008 스키마 설정 : 1

create table YourTable 
(
    PATH int 
) 

insert into YourTable values (1),(2),(3),(4) 

검색어 :

select T1.PATH, 
     Lead.PATH as PATH2 
from YourTable as T1 
    cross apply (
       select top(1) PATH 
       from YourTable as T2 
       where T2.PATH > T1.PATH 
       order by T2.PATH 
      ) as Lead 

Results :

| PATH | PATH2 | 
---------------- 
| 1 |  2 | 
| 2 |  3 | 
| 3 |  4 | 
3

╔══════╗ 
║ PATH ║ 
╠══════╣ 
║ 1 ║ 
║ 2 ║ 
║ 3 ║ 
║ 4 ║ 
╚══════╝ 

가치를 계산하기 위해이 작업을 수행하고 싶습니다.

  • SQLFiddle Demo
  • WITH records 
    AS 
    (
        SELECT PATH, 
          LEAD(Path) OVER (ORDER BY PATH) Path2 
        FROM TableName 
    ) 
    SELECT Path, Path2 
    FROM records 
    WHERE Path2 IS NOT NULL 
    
      또는 경우에 SQL SERVER 2005+

      WITH records 
      AS 
      (
          SELECT PATH, 
            ROW_NUMBER() OVER (ORDER BY PATH) rn 
          FROM TableName 
      ) 
      SELECT a.Path, b.Path AS Path2 
      FROM records a 
           INNER JOIN records b 
            ON a.rn+1 = b.rn 
      
    +0

    답장을 보내 주셔서 감사합니다. –

    관련 문제