相关疑难解决方法(0)

在Oracle行的多个列上使用pivot

我在Oracle表(tab1)中有以下示例数据,我正在尝试将行转换为列.我知道如何在一列上使用Oracle pivot.但是可以将它应用于多个列吗?

样本数据:

Type  weight  height  
A     50      10  
A     60      12  
B     40      8  
C     30      15  
Run Code Online (Sandbox Code Playgroud)

我的预期输出:

A-count B-count C-count A-weight B-weight C-weight A-height B-height C-height  
2       1       1       110      40       30       22       8        15  
Run Code Online (Sandbox Code Playgroud)

我可以做什么:

with T AS 
(select type, weight from tab1 )
select * from T
PIVOT (
count(type)
for type in (A, B, C, D,E,F)
)  
Run Code Online (Sandbox Code Playgroud)

以上查询给出了以下结果

A B C  
2 1 1  
Run Code Online (Sandbox Code Playgroud)

我可以count(*)sum(weight)或替换sum(height)高度或重量.我想要做的,但我不能做,是在一个查询中转动所有三个(计数,重量和高度).

可以用枢轴完成吗?

sql oracle pivot oracle11g

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

T-SQL在同一列上具有多个聚合的Pivot

这似乎应该是一个常见的需求,但我没有看到如何使用T-SQL PIVOT函数来做到这一点.具体来说,我想在Pivot列值上计算列的AVG和STDEV.数据看起来像这样(省略了大量数据,但这触及了内心):

--------------------------------------------------------------------------
ID           Year     PersonID     Score 
--------------------------------------------------------------------------
106          2001        1          20
107          2002        1          30       
108          2003        1          40       
109          2004        1          50     
106          2002        2          20
107          2003        2          50       
108          2004        2          30       
109          2005        2          10   
--------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我想看到以下输出

--------------------------------------------------------------------------
NonPivotCol1 NonPivotCol2  2001_Mean   2001_Avg  2002_Mean  2002_Avg  Etc 
--------------------------------------------------------------------------
Some Value   Some Value       32          5.2       28          3.1 
Etc. 
--------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我是否需要恢复旧的CASE语句逻辑?

谢谢!

t-sql sql-server

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

标签 统计

oracle ×1

oracle11g ×1

pivot ×1

sql ×1

sql-server ×1

t-sql ×1