简单行专列

SQL语句: 

select a.TXZLB as ID, a.user_name,
    (case a.TXZLB when 1 then ‘特通通行证‘
    when 2  then ‘甲通通行证‘
    when 3  then ‘乙通通行证‘
    when 4  then ‘搬家通行证‘
    when 5  then ‘菜篮子通行证‘
    when 6  then ‘接送车停靠证‘
    when 7  then ‘三超通行证‘
    when 8  then ‘准行证‘
    else ‘临时通行证‘ end) typepmt,sum(case when caltype=‘add‘then pmtadd else 0 end  ) as totaladd,
                   sum(case when caltype=‘update‘then pmtadd else 0 end  ) as totalupdate,
                   sum(case when caltype=‘del‘then pmtadd else 0 end  ) as totaldel

     from
    (
       select ‘add‘ as caltype,count(TXZLB) as pmtadd,TXZLB, u.user_name  from t_traffic_permit  left join t_user u on u.n_user_id=t_traffic_permit.jbr where

        u.user_name = ‘admin‘ and 

      TJSJ between to_timestamp(‘2015-06-16‘,‘yyyy-mm-dd hh24:mi:ss‘) and to_timestamp(‘2017-07-17‘,‘yyyy-mm-dd hh24:mi:ss‘)  group by TXZLB, u.user_name

      union 

      select ‘update‘ as caltype, count(*) as pmtupdate,TXZLB,u.user_name from t_traffic_permit left join t_user u on u.n_user_id=t_traffic_permit.jbr where

        u.user_name = ‘admin‘ and 

        XGSJ between to_timestamp(‘2015-06-16‘,‘yyyy-mm-dd hh24:mi:ss‘) and to_timestamp(‘2017-07-17‘,‘yyyy-mm-dd hh24:mi:ss‘) and XGSJ is not null  group by u.user_name,TXZLB

     union

     select ‘del‘ as caltype, count(*) as pmtdel,TXZLB,u.user_name from t_traffic_permit left join t_user u on u.n_user_id=t_traffic_permit.jbr where 

        u.user_name = ‘admin‘ and 

      SCSJ between to_timestamp(‘2015-06-16‘,‘yyyy-mm-dd hh24:mi:ss‘) and to_timestamp(‘2017-07-17‘,‘yyyy-mm-dd hh24:mi:ss‘) and SCZT=1   group by u.user_name,TXZLB

     )a group by  a.TXZLB, a.user_name 

核心:
case when caltype=‘add‘ then pmtadd else 0 end (行转列语句)union  (不同的结果连接到一起,但是查询字段的类型要一致)
				
时间: 2024-10-05 04:45:17

简单行专列的相关文章

sql 行专列 列转行 普通行列转换

转载:http://www.cnblogs.com/newwind521/archive/2010/11/25/1887203.html sql 行专列 列转行 普通行列转换 /* 标题:普通行列转换(version 2.0) 作者:爱新觉罗.毓华 时间:2008-03-09 地点:广东深圳 说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法.  问题:假设有张学生成绩表(tb)如

Sql 行专列、列转行及分面

说明:本实例是以 SQL Server 2005 为运行环境的. 准备工作:创建一个名为 DB 的数据库(CREATE DATABASE DB). 一.T-SQL 行转列 1.创建如下表 CREATE  TABLE [Scores]  ( [ID] INT IDENTITY(1,1), --自增标识 [StuNo] INT,                         --学号 [Subject] NVARCHAR(30),     --科目 [Score] FLOAT           

Oracle字符串行专列(字符串聚合技术)

原文链接:http://oracle-base.com/articles/misc/string-aggregation-techniques.php 1     String Aggregation Techniques 字符串聚合技术 On occasion it is necessary to aggregate data from a number ofrows into a single row, giving a list of data associated with a spec

行转列之后的datagrid的保存

行专列之后,查询的存储过程为 1 USE [APS_Future_FT] 2 GO 3 /****** Object: StoredProcedure [dbo].[P_APS_H_InternalStandardCrudePrice] Script Date: 2013/11/7 21:27:23 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 -- =============================

ORACLE行转列(行转1列,行转多列)

在oracle 11g release 2 版本中新增的listagg函数,listagg是一个实现字符串聚合的oracle内建函数;listagg(column,'分隔符') within group (order by column) over(partition by column)分隔符可以为空,order by必选项,可以order by null (1)select status,  listagg(risk_id, ',') within group (order by risk_

自定义属性应用-自定义属性行转列

通过sql case when对商品表自定义属性进行查询,实现行专列效果. declare @sql varchar(8000) set @sql='select StyleNo' select @[email protected]+','+[A_GoodsAttr].AttrName+'=isnull(max(case AttrName when '''+[A_GoodsAttr].AttrName+''' then AttrValue end),0)' from A_GoodsAttr or

Sql2008的行列转换之行转列

今天在工作的时候遇到了行列转换的问题,记得去年有一段时间经常写,但是许久不用已经记不太得了.好记性不如烂笔头,忙完之后赶紧记录一下. 关键字:PIVOT(行转列),UNPIVOT(列转行) 先说说 PIVOT(行转列)这是我今天遇到的问题 PIVOT(行专列) 主要语法:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>)

ABAP_ALV_Function方式与OO方式(较为简单、普通的ALV)

目录 一.ALV简介 1.简介 2.ALV_GRID介绍 3.其它描述 二.开发ALV的基本流程 三.ALV相关开发细节 1.标准ALV与对象ALV的共同开发细节 2.标准ALV开发相关细节 3.对象ALV开发相关细节 四.注意事项 五.附属信息 1.ALV快捷工具栏功能说明(如下图) 2.类型SLIS_FIELDCAT_ALV常用参数说明 3.类型SLIS_T_SORTINFO_ALV常用参数说明 4.类型SLIS_LAYOUT_ALV常用参数说明 5.类型SLIS_T_EVENT常用参数说明

sqlserver 行转列、列转行[转]

转自:http://www.cnblogs.com/luofuxian/archive/2012/02/23/2364328.html Sql Server 行转列.列转行 创建表: CREATE TABLE [dbo].[tbl_Student]( [ID] [int] IDENTITY(1,1) NOT NULL, [学生ID] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [学生姓名] [nvarchar](50) COLLATE Chines