Sql-Server
如何在 SQL Server 中將一列中的值分成兩列
我有以下數據集,其中使用者有多個與其姓名關聯的聯繫人編號。下面只是我的數據集的一個小樣本。
Name Contact No ------- ---------- Deepika 75865558 Deepika 207586558 Rnveer 746655558 Rnveer 946655558 vaibhav 2356841 vaibhav 6655558
我想將 Contact No 拆分為各自的列以合併資訊,如下所示。
Name Con 1 Con 2 ------- --------- --------- Deepika 75865558 207586558 Rnveer 746655558 946655558 vaibhav 2356841 6655558
如何獲取僅位於單個表中並在同一列中以 2 列輸出的數據?請參見上面的範例。
這是一個範例,它可以滿足您的需求,並讓您開始使用 PIVOT。抱歉,這有點匆忙,但希望它能讓你開始,並向你展示如何相當容易地完成它。
會有一些限制,我完全建議研究和使用樞軸函式,因為它們非常強大。
-- Some sample data to work with DECLARE @SampleData AS TABLE ( NAME VARCHAR(20) ,contactnumber BIGINT ) INSERT INTO @SampleData VALUES ( 'Deepika' ,75865558 ) ,( 'Deepika' ,5181568 ) ,( 'Deepika' ,56954121 ) ,( 'Rnveer' ,4561896 ) ,( 'Rnveer' ,48640655 ) ,( 'vaibhav' ,48640655 ); --The pivot WITH PivotData AS ( SELECT NAME --The row group ,'Contact ' + CAST(ROW_NUMBER() OVER ( PARTITION BY NAME ORDER BY contactnumber ASC ) AS VARCHAR(1)) AS TheRow --The value that will form columns ,contactnumber FROM @SampleData ) SELECT * FROM PivotData PIVOT(AVG(contactnumber) FOR TheRow IN ( [Contact 1] ,[Contact 2] ,[Contact 3] ,[Contact 4] )) AS ThePivot1
如果 is 只是兩個然後
select name , min(Contact No) as [cont 1] , max(Contact No) as [cont 2] from table group by name