将列转换为具有sql server中各自数据的行

Ish*_*ech 12 sql-server rows

我有一个场景,我需要将表的列转换为行,例如 - 表 - 股票:

ScripName       ScripCode       Price   
-----------------------------------------
20 MICRONS      533022      39  
Run Code Online (Sandbox Code Playgroud)

我需要以下面的格式表示表,但我只需要这种表示单行

ColName       ColValue
-----------------------------
ScripName      20 MICRONS
ScripCode      533022    
Price          39
Run Code Online (Sandbox Code Playgroud)

这样我就可以直接将数据绑定到datalist控件.

Sam*_*ron 11

听起来像你想要UNPIVOT

在线图书样本:

--Create the table and insert values as portrayed in the previous example.
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
    Emp3 int, Emp4 int, Emp5 int);
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4);
INSERT INTO pvt VALUES (2,4,1,5,5,5);
INSERT INTO pvt VALUES (3,4,3,5,4,4);
INSERT INTO pvt VALUES (4,4,2,5,5,4);
INSERT INTO pvt VALUES (5,5,1,5,5,5);
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM 
   (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
   FROM pvt) p
UNPIVOT
   (Orders FOR Employee IN 
      (Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt;
GO
Run Code Online (Sandbox Code Playgroud)

返回:

VendorID   Employee   Orders
---------- ---------- ------
1          Emp1       4
1          Emp2       3
1          Emp3       5
1          Emp4       4
1          Emp5       4
2          Emp1       4
2          Emp2       1
2          Emp3       5
2          Emp4       5
2          Emp5       5

另见:Unpivot SQL thingieunpivot 标签


Mik*_*son 8

declare @T table (ScripName varchar(50), ScripCode varchar(50), Price int)
insert into @T values ('20 MICRONS', '533022', 39)

select 
  'ScripName' as ColName,
  ScripName as ColValue
from @T
union all
select 
  'ScripCode' as ColName,
  ScripCode as ColValue
from @T
union all
select 
  'Price' as ColName,
  cast(Price as varchar(50)) as ColValue
from @T
Run Code Online (Sandbox Code Playgroud)