Sql 列应转换为行
下表中有数据Sql 列应转换为行,sql,sql-server,sql-server-2008,sql-server-2008-r2,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,Sql Server 2012,下表中有数据 CREATE TABLE [dbo].[T_shirt_sizes]( [Id] [int] IDENTITY(1,1) NOT NULL primary key, [Code] [varchar](100) NULL, [Length] [varchar](100) NULL, [Chest] [varchar](100) NULL, [Shoulder] [varchar](100) NULL, [Sleeve Length] [varch
CREATE TABLE [dbo].[T_shirt_sizes](
[Id] [int] IDENTITY(1,1) NOT NULL primary key,
[Code] [varchar](100) NULL,
[Length] [varchar](100) NULL,
[Chest] [varchar](100) NULL,
[Shoulder] [varchar](100) NULL,
[Sleeve Length] [varchar](100) NULL
)
insert into T_shirt_sizes values('XXS','20’','29”','13 1/4”','6”')
insert into T_shirt_sizes values('XS','21 3/4”','31"','14 1/2”','6 1/8”')
insert into T_shirt_sizes values('S','23 3/4”','33"','16 1/4”','6 1/4')
insert into T_shirt_sizes values('M','25 3/4”','36"','17','7”')
insert into T_shirt_sizes values('L','27 3/4”','39"','17 1/2”','7 1/2')
我想得到这样的输出
T-shirts | XXXS | XXS | XS | S | M | L
-----------------------------------------------------
Length 18 3/4” | 20’ |21 3/4” | 23 3/4” |25 3/4”| 27 3/4”
Chest 27” | 29” |31” | 33” | 36” | 39”
Shoulder 12 1/2” | 13 1/4”| 14 1/2”| 16 1/4” |17” | 17 1/2”
Sleeve Length 5 1/2”| 6” | 6 1/8” | 6 1/4 |7” | 7 1/2
请帮助解决上述问题您需要再次
UNPIVOT
和PIVOT
:
WITH Unpivoted AS
(
SELECT Code, Fields, [Value]
FROM #T_shirt_sizes
UNPIVOT( [Value]
FOR Fields IN( [Length],[Chest],[Shoulder],[Sleeve Length])) AS u
)
SELECT Fields AS [T-Shirt], [XXXS], [XXS], [XS], [S], [M],[L]
FROM Unpivoted
PIVOT ( MAX([Value])
FOR Code IN([XXXS], [XXS], [XS], [S], [M],[L])) AS piv;
StackOverflow不是一种代码编写服务。告诉我们您做了什么,编写代码,如果您有问题,请提出具体问题。您的输入数据不包含
XXXS