2017-10-03 3 views
2

어떻게 여러 행으로 열로 저장된 필드를 변환 하시겠습니까? 아래 코드도 함께 표시했습니다. 다음은 필요한 것의 예이지만 실제로는 최대 20 개의 열까지 올 수 있습니다. 감사!SQL Server에서 여러 행을 열로 변환하는 방법은 무엇입니까?

COL1 COL2 COL3 
---------------- 
TEST 30 NY 
TEST 30 CA 
TEST2 10 TN 
TEST2 10 TX 

I 출력이되고 싶습니다 :

COL1 COL2 COL3 COL4 
------------------------ 
TEST 30 NY CA 
TEST2 10 TN TX 


select * from (
    select 
    ID, 
    Name, 
    STORE, 
    Group, 
    Type, 
    Date, 
    State, 

     row_number() over(partition by ID, state order by Date desc) as rn 
    from 
     #test 
) t 
where t.rn = 1 
+0

당신은 예를 들어, 설명 된 바와 같이 크로스 탭 쿼리를 사용해야합니다 여기에 : https://stackoverflow.com/questions/15714265/i-need-to-know-how-to-create-a-crosstab-query –

+0

이 질문은 10 번 이상 물었습니다. 사이트 검색;) – Twelfth

답변

1
declare @Table AS TABLE 
(
    Col1 VARCHAR(100) , 
    Col2 INT , 
    Col3 VARCHAR(100) 
) 
INSERT @Table 
     (Col1, Col2, Col3) 
VALUES 
('TEST', 30 ,'NY' ), 
('TEST', 30 ,'CA' ), 
('TEST2', 10 ,'TN' ), 
('TEST2', 10 ,'TX' ) 


SELECT 
    xQ.Col1, 
    xQ.Col2, 
    MAX(CASE WHEN xQ.RowNumber = 1 THEN xQ.Col3 ELSE NULL END) AS Col3, 
    MAX(CASE WHEN xQ.RowNumber = 2 THEN xQ.Col3 ELSE NULL END) AS Col4 
FROM 
(
    SELECT * , RANK() OVER(PARTITION BY T.Col1,T.Col2 ORDER BY T.Col1,T.Col2,T.Col3) AS RowNumber 
    FROM @Table AS T 
)AS xQ 
GROUP BY 
    xQ.Col1, 
    xQ.Col2 
2

이 행을 열로 데이터를 변환하는 여러 옵션이 있습니다. SQL에서는 PIVOT을 사용하여 행의 데이터를 열로 변환 할 수 있습니다.

CREATE table #tablename 
    (Id int, Value varchar(10), ColumnName varchar(15); 


INSERT INTO #tablename 
    (ID, Value, ColumnName) 

VALUES 
    (1, ‘Lucy’, 'FirstName'), 
    (2, ‘James’, ‘LastName’), 
    (3, ‘ABCDXX’, ‘Adress’), 
    (4, ’New York’, ‘City’), 
    (5, '8572685', ‘PhoneNo’); 

select FirstName, LastName, Address, City, PhoneNo 
from 
(
select Value, ColumnName 
from #tablename 
) d 
pivot 
(
max(Value) 
for ColumnName in (FirstName, LastName, Address, City, PhoneNo) 
) piv; 

는 컬럼에 행에서 데이터를 변환의 다른 옵션에 대한 아래 링크를 참조하십시오

https://www.sqlshack.com/multiple-options-to-transposing-rows-into-columns/

관련 문제