mysql交叉表的构造知识_SQL中的交叉表

有时候需要将结果旋转以便在水平方向显示列,水平方向显示行,即所谓的交叉表(PrvotTable)。在SQL显示它也比较的简单:

1:结果确定的交叉表:

Year      Quarter      Amount(表Prvot)

----          -------           ------

1990         1               1.1

1990         2               1.2          显示成:   Year          Q1            Q2                 Q3                Q4

1990         3               1.3                            -----           ---             ----                 ---                 ---

1990         4               1.4                          1990            1.1            1.2               1.3               1.4因为Quarter是固定的,姑且称其为结果确定的交叉表吧。实现的方法如下:SELECT Year,

SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,

SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,

SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,

SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4

FROM Prvot

GROUP BY Year(具体参考SQL的帮助,搜索交叉数据表即可)

2:结果不确定的交叉表:

假如Quarter是动态的变动的,那么就不能简单的使用上述的case...when了,可以构造动态的SQL语句,来实现上述的SUM语  句。

declare @goodscode varchar(20)

declare @goodsname varchar(40)declare @str varchar(2000)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值