복붙노트

[SQL] 내부는 SQL 서버에 행 번호에 가입 할 방법

SQL

내부는 SQL 서버에 행 번호에 가입 할 방법

SQL 서버 2008

두 테이블 :

표 A는 다음과 같은 데이터가 있습니다 :

RowA
RowB
RowC
RowD

표 B는 다음과 같은 데이터를 가지고

Row4
Row3
Row2
Row1

나는 다음과 같은 출력을 얻으려면 :

RowA Row1
RowB Row2
RowC Row3
RowD Row4

두 테이블 간의 유일한 공통 값은 행 개수

나는 물론 개별적으로 데이터를 얻을 수 있습니다 :

SELECT val
FROM A
ORDER BY val

SELECT val
FROM B
ORDER BY val

하지만 어떻게 행 번호에 가입합니까?

그리고 무슨 일이 나는 주문에 의해,하지만 단지 그들이 나올 순서대로 행을하지 않으려면?

RowA Row4
RowB Row3
RowC Row2
RowD Row1

에로의 가입

SELECT val
FROM A

SELECT val
FROM B

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    사용 ROW_NUMBER () SQL Server 2008의 기능

    select A.val,B.val 
    from(
        SELECT val,row_number() over (order by val) as row_num
        FROM A)A
    join
        (SELECT val,row_number() over (order by val) as row_num
        FROM B)B
    on  A.row_num=B.row_num
    ORDER BY A.val,B.val
    

  2. ==============================

    2.

    select A.sectionname, A.Basicprice,A.Brand,A.Description,A.Description,A.Grandtotal,A.GST,A.Gstvalue,A.Hsncode,A.Image,A.Installationcharge,A.Model,B.Age,B.Mark,B.Name,B.class
    
    from(
       SELECT Class,row_number() over (order by class) as row_num,Age,Mark,Name
       FROM classtable)B
       LEFT join
       (SELECT sectionname,row_number() over (order by sectionname) as row_num,Basicprice,Brand,Description,Grandtotal,GST,Gstvalue,Hsncode,Image,Installationcharge,Model
       FROM testtable)A
    
    on  A.row_num=B.row_num
    
  3. from https://stackoverflow.com/questions/12972320/how-to-do-an-inner-join-on-row-number-in-sql-server by cc-by-sa and MIT license