列转行-SQL语句统计问题,不想写union all

问题描述

SQL语句统计问题,不想写union all

建表测试语句:

CREATE TABLE stbuu_cause109_20160331 (
intenbid BIGINT,
intrsrp00 BIGINT,
intrsrp01 BIGINT,
intrsrp02 BIGINT,
intrsrp03 BIGINT,
intrsrp04 BIGINT,
intrsrp05 BIGINT,
intrsrp06 BIGINT
);
插入测试数据:

INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,1,0,0,0,0,0,0);
INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,0,1,0,0,0,0,0);
INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,0,0,1,0,0,0,0);
INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,0,0,0,1,0,0,0);
INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,0,0,0,0,1,0,0);
INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,0,0,0,0,0,1,0);
INSERT INTO stbuu_cause109_20160331(intenbid,intrsrp00,intrsrp01,intrsrp02,intrsrp03,intrsrp04,intrsrp05,intrsrp06) values(1110,0,0,0,0,0,0,1);

select * from stbuu_cause109_20160331;

需要实现的效果

结果语句是:

select intenbid,-141 as rsrp,sum(intrsrp00) countt from stbuu_cause109_20160331 group by intenbid UNION all
select intenbid,-140 as rsrp,sum(intrsrp01) countt from stbuu_cause109_20160331 group by intenbid UNION all
select intenbid,-139 as rsrp,sum(intrsrp02) countt from stbuu_cause109_20160331 group by intenbid UNION all
select intenbid,-138 as rsrp,sum(intrsrp03) countt from stbuu_cause109_20160331 group by intenbid UNION all
select intenbid,-137 as rsrp,sum(intrsrp04) countt from stbuu_cause109_20160331 group by intenbid UNION all
select intenbid,-136 as rsrp,sum(intrsrp05) countt from stbuu_cause109_20160331 group by intenbid UNION all
select intenbid,-135 as rsrp,sum(intrsrp06) countt from stbuu_cause109_20160331 group by intenbid ;

目前这种实现方式不靠谱,intrsrp00-99个字段,sql写99个union all 语句会内存溢出,求大神解答,谢谢

解决方案

数据库用的Postgresql

解决方案二:

SQL语句之Union和Union All
sql语句中的union和union all
SQL语句 UNION 和 UNION ALL 使用(一)

时间: 2024-11-01 04:18:51

列转行-SQL语句统计问题,不想写union all的相关文章

oracle sql语句统计数据写法

问题描述 oracle sql语句统计数据写法 有3张表,A表活动B表活动地区C表地区商家 A表关联B表,B表关联C表都是一对多,现在需返回活动名称,活动地区数,地区商家数 解决方案 SELECT A.活动名称COUNT(1)SUM(SELECT COUNT(1) FROM C WHERE A=B AND B=C) FROM A INNER JOIN B ON A=B GROUP BY A.活动名称 解决方案二: SELECT T1.活动 AS 活动名称 COUNT(T2.地区) AS 活动地区

求oracle sql语句统计数据

问题描述 求oracle sql语句统计数据 求oracle sql语句统计数据 要统计出勤率.迟到次数.旷工次数 签到表(ManualSign) 字段: SignId:签到表的ID ,UserId:用户ID ,SignTime:签到时间 ,SignDesc:签到备注 ,SignTag:签到标记(签到.签退) 样例记录:13, 'jiyaoqi', to_date('2015-08-18 08:00:00' ,'yyyy-MM-dd hh24:mi:ss'), '测试一下', 1 工作时间表(W

sql语句的写法要怎么样写才能达到

问题描述 sql语句的写法要怎么样写才能达到 表a有字段id,p1,p2,p3,p4.......,表b有字段id,m a表数据, b表数据 111, 1,2,3,4........ 1,红 2,黄 3,蓝 4,白 a.p1=b.m,a.p2=b.m 想查询出 111,红,2,黄,3,蓝,4,白 等方式语句如何写 解决方案 111,红,2,黄,3,蓝,4,白 等方式语句如何写 select a.id,(select m from b where b.id=a.p1),a.p1,(select m

数据库行转列的sql语句(zt)

转载:http://www.cnblogs.com/Charles2008/archive/2008/03/04/1090162.html 问题描述 假设有张学生成绩表(CJ)如下 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 现在 想写 sql 语句     查询后结果 为    姓名 语文 数学 物理 张三 80 90 85 李四 85 92 82       该怎么实现 ? 研究意义   

用SQL语句统计IP地址前三段

ip地址|统计|语句 /* written by Jaron ,2003-07-10 *//* 首次发表于CSDN *//* 转载请注明出处和保留此版权信息 */ 在做网站统计专家时,我们需要对IP地址段进行统计和分析,这里应用SQL-SERVER的自定义函数和存储过程实现在数据库中直接生成结果,以下代码稍作修改即可. /* SQL语句 */ select top 99 dbo.fn_ipleft3(IPAddress),count(id) FROM tblStatisticalDetail 

sql语句统计年级分数怎么做。

问题描述 表如下IDNAMEPARENT----班级表IDNAMEMARK班级ID----成绩表1一年级01小名5032二年级02小明80431班13小红70742班14小四44653班15小七75861班26小李44672班27小吴88383班28小群654要出来这样的效果年级总分一年级283二年级233也有可能会出现这样的情况,有一个人他的班级ID直接对应年级的,也就是1或者2,怎么统计呢?? 解决方案 本帖最后由 a418857308 于 2014-08-05 20:09:23 编辑解决方

C#控制台做ATM,SQLserver表已经创建好了,在vs2010代码里面写SQL语句时,该怎么写?我思路现在蛮混乱

问题描述 //第一步:指定连接的数据库SqlConnectionconn=newSqlConnection("server=HHY-PC\HHY;uid=sa;pwd=123456;database=YangATM_DB");//第二步:需要执行的SQL语句stringsql="select*fromKaiHuInFowhereKaHao='"+txtkahao.Text+"'andKaMiMa='"+txtmima.Text+"'&q

SQL Server设置主键自增长列(使用sql语句实现)_MsSql

1.新建一数据表,里面有字段id,将id设为为主键 复制代码 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 复制代码 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create

oracle数据库添加或删除一列的sql语句_oracle

alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter table TPointManage add AddPointsReason number(8) alter table textattrdetail drop column AddPointsReason 需要注意的一点,如果要修改的表,不是当前的用户的表,那么就需要添加上用户的名称.以及有修改此表的权限.