如何实现横向聚合

原创 2006年07月10日 11:38:00

问题描述:

有表tb,数据如下

A1 A2 A3 A4 A5

1  2  5  3  4

2  2  3  4  5

0  3  4  2  5

 

如何输出

A1 A2 A3 A4 A5 最大 最小  5以上个数

1  2  5  3  4   5    1       1

2  2  3  4  5   5    2       1

0  3  5  2  6   6    0       2

 

答:

SQL Server的聚合函数是在列上的,所以可以写自定义的函数,也可以想办法把列变为行,再用聚合函数处理

 

解决示例

--测试数据

DECLARE @t TABLE(A1 int, A2 int, A3 int, A4 int, A5 int)

INSERT @t SELECT 1,2,5,3,4

UNION ALL SELECT 2,2,3,4,5

UNION ALL SELECT 0,3,4,2,5

 

--查询

SELECT *,

    [min] = (

        SELECT MIN(v) FROM(

            SELECT v=A.A1 UNION SELECT v=A.A2 UNION SELECT v=A.A3

            UNION SELECT v=A.A4 UNION SELECT v=A.A5

        )B),

    [max] = (

        SELECT MAX(v) FROM(

            SELECT v=A.A1 UNION SELECT v=A.A2 UNION SELECT v=A.A3

            UNION SELECT v=A.A4 UNION SELECT v=A.A5

        )B),

    [count>=5] = (

        SELECT COUNT(*) FROM(

            SELECT v=A.A1 UNION SELECT v=A.A2 UNION SELECT v=A.A3

            UNION SELECT v=A.A4 UNION SELECT v=A.A5

        )B WHERE v>=5)

FROM @t A

 

查询结果:

A1          A2          A3          A4          A5          min         max         count>=5

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

1           2           5           3           4           1           5           1

2           2           3           4           5           2           5           1

0           3           4           2           5           0           5           1

 

 

SQL 数据聚合

连续聚合 下面的例子将使用一个EmpOrdersr汇总表,每位雇员在每个月占一行,包含该雇员在一个月内处理过的订单数量,运行下代码创建数据: CREATE TABLE EmpOrder...
  • make1828
  • make1828
  • 2015年11月09日 09:20
  • 1114

横向和纵向的数据库分表

分表是分散数据库压力的好方法。 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库。 当然,首先要知道什么情况下,才需要分表。个人觉得单表记录条数达到百万到...
  • zyf_balance
  • zyf_balance
  • 2014年10月15日 17:01
  • 2211

聚合VS组合的代码实现过程

构造函数,你写与不写,都在那里!
  • lfh15732626246
  • lfh15732626246
  • 2016年06月05日 10:30
  • 987

HBase学习笔记-聚合函数

利用HBase的coprocessor特性实现聚合函数,添加coprocessor方式有两种 1、修改hbase-site.xml,添加如下内容 property>   ...
  • wulinshishen
  • wulinshishen
  • 2014年08月13日 18:46
  • 3907

Cocos2d 中使用聚合广告SDK

1. 接入一个或者多个广告SDK是比较麻烦的个人开发者还是比较简单处理广告SDK的,比较懒的话接入一个admob的就差不多了。分IOS和android版本,真正处理完也要话不少时间。无论什么SDK,都...
  • fox64194167
  • fox64194167
  • 2015年10月09日 14:22
  • 2265

Bootstrap横向表单

Bootstrap横向表单 主要内容 在form上应用.form-horizontal 2.使用栅格系统 ...
  • yang5726685
  • yang5726685
  • 2017年04月03日 10:09
  • 657

RecyclerView实现横向滚动

Fruit Class public class Fruit { private int fruitImageId; //图片的ID private String fruit...
  • CCCrunner
  • CCCrunner
  • 2017年04月23日 15:00
  • 482

Spark SQL中的聚合(Aggregate)实现

Spark SQL中的聚合(Aggregate)实现Sort Based Aggregate首先来说说实现比较简单(但实际执行起来却不简单)的Sort Based Aggregate。顾名思义,这是一...
  • doggie_wangtao
  • doggie_wangtao
  • 2017年04月08日 16:50
  • 1759

关联,聚合,组合的区别及C++实现

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gamecreating/archive/2010/03/22/5404589.aspx   关联,聚合,组...
  • luliyuan
  • luliyuan
  • 2015年09月21日 15:25
  • 1924

细读百度地图点聚合源码(上)

之前在项目中需要用到百度地图的点聚合,看了百度提供的demo之后,稍微读了一些源码就能达到需求了,所以并未深入解读源码。 最近有空就把百度实现点聚合的源码从里到外仔细研究了一遍受益良多,在此分享一下。...
  • javine
  • javine
  • 2016年04月20日 23:27
  • 12505
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何实现横向聚合
举报原因:
原因补充:

(最多只允许输入30个字)