标签: unpivot

不显示列名称

我有一个StudentMarks带有列的表Name, Maths, Science, English.数据就像

Name,  Maths, Science, English  
Tilak, 90,    40,      60  
Raj,   30,    20,      10
Run Code Online (Sandbox Code Playgroud)

我希望得到如下安排:

Name,  Subject,  Marks
Tilak, Maths,    90
Tilak, Science,  40
Tilak, English,  60
Run Code Online (Sandbox Code Playgroud)

使用unpivot,我可以正确获取Name,Marks,但无法将源表中的列名称获取到Subject所需结果集中的列.

我怎样才能做到这一点?

我到目前为止已达到以下查询(获取名称,标记)

select Name, Marks from studentmarks
Unpivot
(
  Marks for details in (Maths, Science, English)

) as UnPvt
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server unpivot sql-server-2008

118
推荐指数
3
解决办法
24万
查看次数

SQL Server:列到行

寻找优雅(或任何)解决方案将列转换为行.

这是一个例子:我有一个包含以下模式的表:

[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]
Run Code Online (Sandbox Code Playgroud)

以下是我想得到的结果:

[ID] [EntityId] [IndicatorName] [IndicatorValue]
Run Code Online (Sandbox Code Playgroud)

结果值将是:

1 1 'Indicator1' 'Value of Indicator 1 for entity 1'
2 1 'Indicator2' 'Value of Indicator 2 for entity 1'
3 1 'Indicator3' 'Value of Indicator 3 for entity 1'
4 2 'Indicator1' 'Value of Indicator 1 for entity 2'
Run Code Online (Sandbox Code Playgroud)

等等..

这有意义吗?您对在T-SQL中查看的位置以及如何完成它有什么建议吗?

sql t-sql sql-server unpivot

117
推荐指数
5
解决办法
24万
查看次数

将矩阵转换为3列表('反向枢轴','展开','展平','正常化')

我需要FIRST在表格中转换Excel矩阵LATER:

第一:

    P1  P2  P3  P4
F1  X
F2  X   X
F3      X       X
F4      X   X
Run Code Online (Sandbox Code Playgroud)

稍后:

F   P   VALUE
F1  P1  X
F1  P2
F1  P3
F1  P4
F2  P1  X
F2  P2  X
F2  P3
F2  P4
F3  P1
F3  P2  X
F3  P3
F3  P4  X
F4  P1
F4  P2  X
F4  P3  X
F4  P4
Run Code Online (Sandbox Code Playgroud)

excel pivot-table unpivot matrix powerquery

29
推荐指数
2
解决办法
7万
查看次数

unpivot和PostgreSQL

PostgreSQL中是否有一个unpivot等效函数?

postgresql unpivot

28
推荐指数
6
解决办法
3万
查看次数

具有多列聚合的SQL Server数据透视表

我有一张桌子:

 create table mytransactions(country varchar(30), totalcount int, numericmonth int, chardate char(20), totalamount money)
Run Code Online (Sandbox Code Playgroud)

该表有以下记录:

insert into mytransactions(country, totalcount, numericmonth, chardate, totalamount) values('Australia', 36, 7, 'Jul-12', 699.96)
Go
insert into mytransactions(country, totalcount, numericmonth, chardate, totalamount) values('Australia', 44, 8, 'Aug-12', 1368.71)
Go
insert into mytransactions(country, totalcount, numericmonth, chardate, totalamount) values('Australia', 52, 9, 'Sep-12', 1161.33)
Go
insert into mytransactions(country, totalcount, numericmonth, chardate, totalamount) values('Australia', 50, 10, 'Oct-12', 1099.84)
Go
insert into mytransactions(country, totalcount, numericmonth, chardate, totalamount) values('Australia', 38, 11, 'Nov-12', 1078.94)
Go
insert …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2005 unpivot

23
推荐指数
1
解决办法
10万
查看次数

SQL Server - 使用UNPIVOT包含NULL

UNPIVOT不会返回NULL,但我在比较查询中需要它们.我试图避免使用ISNULL以下示例(因为在真正的sql中有超过100个字段:

Select ID, theValue, column_name
From 
(select ID,
  ISNULL(CAST([TheColumnToCompare]  AS VarChar(1000)), '') as TheColumnToCompare
  from MyView
  where The_Date = '04/30/2009'
) MA
UNPIVOT
   (theValue FOR column_name IN 
   ([TheColumnToCompare])
) AS unpvt
Run Code Online (Sandbox Code Playgroud)

任何替代品?

t-sql sql-server null unpivot

20
推荐指数
4
解决办法
3万
查看次数

Mysql将列转换为行(数据透视表)

我有一张这样的桌子

+---+-----+----+----+----+----+
|id |month|col1|col2|col3|col4|
+---+-----+----+----+----+----+
|101|Jan  |A   |B   |NULL|B   |
+---+-----+----+----+----+----+
|102|feb  |C   |A   |G   |E   |
+---+-----+----+----+----+----+
Run Code Online (Sandbox Code Playgroud)

然后我想创建这样的报告

+----+---+---+
|desc|jan|feb|
+----+---+---+
|col1|A  |C  |
+----+---+---+
|col2|B  |A  |
+----+---+---+
|col3|0  |G  |
+----+---+---+
|Col4|B  |E  |
+----+---+---+
Run Code Online (Sandbox Code Playgroud)

有人能帮忙吗?

mysql sql pivot unpivot

19
推荐指数
2
解决办法
5万
查看次数

SQL转置全表

我需要在MS SQL中进行以下转置

从:

Day  A  B 
---------
Mon  1  2
Tue  3  4
Wed  5  6
Thu  7  8
Fri  9  0
Run Code Online (Sandbox Code Playgroud)

以下内容:

Value Mon Tue Wed Thu Fri 
--------------------------
A      1   3   5   7   9
B      2   4   6   8   0
Run Code Online (Sandbox Code Playgroud)

我知道PIVOT当只有一列(A)时怎么做,但是当有多列要转置时我无法弄清楚怎么做(A,B,...)

要转置的示例代码:

select LEFT(datename(dw,datetime),3) as DateWeek, 
  sum(ACalls) as A, 
  Sum(BCalls) as B 
from DataTable
group by LEFT(datename(dw,datetime),3)
Run Code Online (Sandbox Code Playgroud)

表结构:

Column DataType
DateTime Datetime
ACalls int
BCalls int
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽.

sql sql-server pivot unpivot

19
推荐指数
1
解决办法
5万
查看次数

MySQL - 将表转换为不同的表

我现在可能没有看清楚事情,但我在MySQL中有一个表,如下所示:

ID | a  | b  | c 
1  | a1 | b1 | c1
2  | a2 | b2 | c2
Run Code Online (Sandbox Code Playgroud)

出于某种原因(实际上是在另一个表上加入 - 基于ID,但我想如果有人可以帮我解决这个问题,我可以自己做其余的事情),我需要那些行代替:

1 | a1 | a
1 | b1 | b
1 | c1 | c
2 | a2 | a
2 | b2 | b
2 | c2 | c
Run Code Online (Sandbox Code Playgroud)

所以基本上,我需要查看,如行: ID,columntitle,value 有没有什么办法可以轻松地做到这一点?

mysql unpivot

18
推荐指数
3
解决办法
2万
查看次数

SQL Unpivot多列数据

我正在使用SQL Server 2008,我正在尝试取消数据.这是我正在使用的SQL代码,

CREATE TABLE #pvt1 (VendorID int, Sa int, Emp1 int,Sa1 int,Emp2 int)
GO
INSERT INTO #pvt1  VALUES (1,2,4,3,9);

GO

--Unpivot the table.
SELECT distinct VendorID,Orders,Orders1
FROM 
   (SELECT VendorID, Emp1, Sa,Emp2,Sa1
   FROM #pvt1 ) p
UNPIVOT
   (Orders FOR Emp IN 
      (Emp1,Emp2)
)AS unpvt
UNPIVOT
   (Orders1 FOR Emp1 IN 
      (Sa,Sa1)
)AS unpvt1;
GO
Run Code Online (Sandbox Code Playgroud)

这是上述代码的结果.

VendorID    Orders  Orders1
1            4      2
1            4      3
1            9      2
1            9      3
Run Code Online (Sandbox Code Playgroud)

但我希望我的输出方式如下所示

VendorID    Orders  Orders1
1           4       2
1           9       3
Run Code Online (Sandbox Code Playgroud)

上述代码的关系是2与4相关,3与9有关. …

sql sql-server unpivot sql-server-2008

18
推荐指数
1
解决办法
3万
查看次数