繁体   English   中英

MS-Access SQL 透视多列

[英]MS-Access SQL Pivot multiple columns

我有一个看起来像这样的数据表:

流ID 周期ID 最小 最大限度
STR_01 1 0 9
STR_01 2 0 7
STR_01 3 4 9
STR_02 1 2 5
STR_02 2 1 8
STR_02 3 0 6

我想构建一个如下所示的数据透视表:

流ID MIN1 MIN2 MIN3 最大1 最大2 MAX3
STR_01 0 0 4 9 7 9
STR_02 2 1 0 5 8 6

我如何使用 SQL 语言做到这一点? 是否可以直接使用多个字段值进行透视,或者我是否需要取消透视原始表并创建与透视表的连接? 是否可以加入数据透视表? 我试图像这样对数据进行反透视:

流ID 周期ID 范围 价值
STR_01 1 最小 0
STR_01 1 最大限度 9
STR_01 2 最小 0
STR_01 2 最大限度 7
STR_01 3 最小 4
STR_01 3 最大限度 9

l如果类是固定的,周期数是动态的,下面的查询会产生你想要的结果:

TRANSFORM First(MinMax)
SELECT StreamID
FROM
(  SELECT StreamID, "MIN" & PeriodID AS Piv, MIN AS MinMax
   FROM Tabla1
 UNION ALL 
   SELECT StreamID, "MAX" & PeriodID AS Piv, MAX AS MinMax
   FROM Tabla1
)
GROUP BY StreamID 
PIVOT Piv 
IN ("MIN1", "MIN2", "MIN3", "MAX1", "MAX2", "MAX3") ;

如果句点数也是动态的,您只需要删除“IN”子句,它仍然可以工作,尽管列的顺序将由列名的字母数字顺序决定。 在这种特定情况下,“MAX”列将出现在“MIN”列之前。

您可能还想从LightningGuide.net下载的数据库中检查五个示例查询“F_Transform_...”。 我上面提供的查询代码可以推广到具有更多类(MIN、MAX、MID 等)的情况,只要这些类是事先知道的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM