专栏首页跟着阿笨一起玩NET(2)SQL语句实现表的横向聚合

(2)SQL语句实现表的横向聚合

问题描述: 假如有一表结构和数据如下:

C1

C2

C3

C4

C5

1

2

6

3

4

2

2

3

4

5

0

3

6

2

8

经过sql查询后输出的结果集为:(字段后面增加聚合[最大值] [最小值] [>=5的值个数])

C1

C2

C3

C4

C5

Max

Min

Count(>=5)

1

2

6

3

4

6

1

1

2

2

3

4

5

5

2

1

0

3

6

2

8

8

2

2

实现该结果的SQL 脚本如下:

/*  
  作    者:<Rising_Sun>
  创建日期:<2012-9-29>
  功    能:<实现表横向聚合>
*/
DECLARE @t TABLE(C1 int,C2 int,C3 int,C4 int,C5 int)
INSERT INTO @t VALUES(1,2,6,3,4)
INSERT INTO @t VALUES(2,2,3,4,5)
INSERT INTO @t VALUES(0,3,6,2,8)

--查询
SELECT *,
    [min] = (
        SELECT MIN(v) FROM(
            SELECT v=A.C1 UNION SELECT v=A.C2 UNION SELECT v=A.C3 UNION SELECT v=A.C4 UNION SELECT v=A.C5
        )B),
    [max] = (
        SELECT MAX(v) FROM(
            SELECT v=A.C1 UNION SELECT v=A.C2 UNION SELECT v=A.C3 UNION SELECT v=A.C4 UNION SELECT v=A.C5
        )B),
    [count>=5] = (
        SELECT COUNT(*) FROM(
            SELECT v=A.C1 UNION SELECT v=A.C2 UNION SELECT v=A.C3 UNION SELECT v=A.C4 UNION SELECT v=A.C5
        )B WHERE v>=5)
FROM @t A

执行结果如下图所示:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SqlServer查看死锁的存储过程

    跟着阿笨一起玩NET
  • .NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

    2.3、如何基于Quartz.NET封装实现优雅的作业调度执行框架(ABenNet.QuartzNet.Practice)

    跟着阿笨一起玩NET
  • SQL中存储过程中使用事务,并且加入异常处理机制.

    跟着阿笨一起玩NET
  • SQLServer 学习笔记之超详细基础SQL语句 Part 6

    -----------------------接Part 5-------------------

    授客
  • SQL | SQL 必知必会笔记 (一 )

    SQL 语句是由简单的英语单词构成的。这些单词称为 关键字,每个 SQL 语句都是由一个或多个关键字构成的。使用 SELECT 关键字检索表数据,必须给出想选择...

    PyStaData
  • 丑数II

    一份执着✘
  • JumpServer 堡垒机--极速安装(一)

    人类并不偏爱风险,运维也是如此,运维偏爱效率,但是风险始终如影随形,好比硬币的正反面,风险和效率需要一个完美的平衡,堡垒机就是平衡效率的风险工具。

    Kevin song
  • python入门(九)python基础知识点补充

    星辉
  • css3动画变换transform用法

    刚才说到transition动画执行,接下来看下动画变换(transform),transform属性的取值4个

    十月梦想
  • 分享一个爬取网站的小技巧

    有时候,我们很想爬取一个网站的数据。如果 PC 端的网页的反爬机制太强,我们可以换个思路。现在很多网站为了满足手机浏览器能正常访问的需求,都会推出手机版的网页。...

    猴哥yuri

扫码关注云+社区

领取腾讯云代金券