Sql-Server

如何在 SQL Server 中將一列中的值分成兩列

  • November 20, 2018

我有以下數據集,其中使用者有多個與其姓名關聯的聯繫人編號。下面只是我的數據集的一個小樣本。

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

引用自:https://dba.stackexchange.com/questions/136958