`
caijingbin0207
  • 浏览: 107046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql-针对纵向转横向的模型

sql 
阅读更多

                                                                       sql-针对纵向转横向的模型

/*
*
针对纵向转横向的模型

*/
GO
drop procedure Model_his_mid;
GO
create procedure Model_his_mid(
/* 
* @vColumns  
分组的列 (最后一个字段后面一定不要加,)
* @vClause  
查询表的条件(没有条件
='')
* @vOrderby  
查询结果排序的字段 ''为默认排序

* @vTop    
取出的行数 ''为全部
*/
@vColumns nvarchar(1000),
@vClause nvarchar(4000),
@vOrderby nvarchar(100),
@vTop nvarchar(50)
)
as

declare @sql nvarchar(4000)
declare @xColumns nvarchar(4000)

declare @vTable nvarchar(50)
declare @vColumnName nvarchar(100)
declare @vSumColName nvarchar(100)
declare @vNum nvarchar(50)
declare @vAllNum nvarchar(50)
declare @vSumOrCount nvarchar(50)

set @xColumns = ''

/*
*
需要赋值的参数

*
* @vTable   
真正查询的表名
* @vColumnName
纵向转横向的列名
* @vSumColName
取合计值的列名
* @vNum    
数值的别名
* @vAllNum  
每行合计的列名 (如果不要合计则='')
* @vSumOrCount sum
或者
count
* 
*/
set @vTable = 'his_mid_tab'
set @vColumnName = 'hsks'
set @vSumColName = 'qty'
set @vNum = 'num'
set @vAllNum = 'allnum'
set @vSumOrCount = 'sum'

select 
@xColumns = @xColumns
+ 'sum(case ' + @vColumnName + ' when '+ char(39) + [a].[column] + char(39)+ ' then ' + @vNum + ' else 0 end) as '''
+ [a].[column] + ''', '

/*
*
需要比例加入此语句

* + '(' + 'cast(round(sum(case ' + @vColumnName + ' when '+ char(39) + [a].[column] + char(39)+ ' then ' + @vNum + ' else 0 end)*100.00' + '/sum(' + @vNum + '),2) as decimal(10,2))) as ' + [a].[column] + '_i, '
*/

/**
*
要动态显示列的sql语句 住院 OUTP_OR_INP = '0' 门诊
OUTP_OR_INP = '1'
*/
from (select distinct DEPT_NAME as [column] from his_mzkm_tab where OUTP_OR_INP = '0') as a

set @xColumns = substring(@xColumns, 0, len(@xColumns))

set @sql = 'select '

if(@vTop <> '')
set @sql = @sql + 'top ' + @vTop + ' '

set @sql = @sql + @vColumns + ', ' + @xColumns

if(@vAllNum <> '')
set @sql = @sql + ', sum(' + @vNum + ') as ' + @vAllNum

set @sql = @sql + ' from ('
+ 'select ' + @vColumns + ', ' + @vColumnName + ', ' + @vSumOrCount + '(' + @vSumColName + ') as ' + @vNum + ' from ' + @vTable
if(@vClause <> '')
set @sql = @sql + ' where ' + @vClause

set @sql = @sql + ' group by ' + @vColumns + ', ' + @vColumnName

set @sql = @sql + ') as casual_table group by ' + @vColumns + ' '

if(@vOrderby <> '')
set @sql = @sql + 'order by ' + @vOrderby
print @sql
exec sp_executesql @sql with recompile


/*
* sql
语句 引号之内的为sql中的几个参数分别为(分组的列,条件,排序,取出行数)
* exec Model_his_mid 'kjkm','date = ''8''','kjkm desc',''
*/


/*
* sql
语句
* exec Model_his_mid 'kjkm','','kjkm desc','15'
*/

 

1
4
分享到:
评论

相关推荐

    sqlserver常用一些技巧

    4. **超难的Sql查询:纵向转横向+分组统计**: - **纵向转横向**(PIVOT):当需要将行转换为列时,可以使用PIVOT操作。这通常在需要将多行数据合并成一行展示时非常有用,比如生成报表。 - **分组统计**:GROUP ...

    DBA必备的sql好习惯

    ### DBA必备的SQL好习惯 #### 一、理解SQL Server查询分析器的执行逻辑顺序 在探讨如何培养良好的SQL编程习惯之前,首先需要明确一点:了解SQL Server查询分析器如何执行SQL语句是非常重要的。这有助于我们编写...

    SQL_Server_2016_Mission_Critical_Performance_White_Paper

    - **纵向扩展**:除了横向扩展之外,SQL Server 2016还支持纵向扩展,即通过增加单个服务器的资源(如CPU、内存)来提高性能。 - **云集成**:SQL Server 2016与Azure等云平台进行了深度集成,支持混合云部署模型,...

    Pro SQL Server 2012 Relational Database Design and Implementation

    ### 关于《Pro SQL Server 2012 关系型数据库设计与实现》的知识点解析 #### 一、SQL Server 2012 概述 - **版本介绍**:SQL Server 2012 是微软公司推出的一款企业级关系型数据库管理系统(RDBMS),它提供了强大...

    SQL_Server_2005 数据库基础及应用技术教程与实训

    - **可扩展性**:支持横向扩展和纵向扩展,能够满足不同规模企业的需求。 ### 应用技术与实训 - **安装与配置**:详细介绍 SQL Server 2005 的安装步骤及配置方法,包括服务启动、网络设置等。 - **数据操作语言...

    大模型垂直领域落地的思路与实践.pdf

    ChatGPT的出现标志着大语言模型登顶NLP的深层原理(横向):远距关联Attention is all you need“窗口”大小的临界点:&gt;1000 Tokens大语言模型登顶NLP的深层原理(纵向):隐形资源句法语义本体常识事理“涌现”能力...

    SQL Server数据复制(上).pdf

    SQL Server 允许对所出版表添加纵向或横向过滤器,从而使出版条目中只包含表中的某些列或其中的某些数据行。一组出版条目的集合构成一个出版物。 二、复制代理 SQL Server 复制部件采用模块化设计,各种复制操作...

    基于SQL SERVER 2005的数据挖掘系统设计.pdf

    而纵向的数据挖掘解决方案则提供了针对特定应用的完整数据挖掘方案。 SQL SERVER 2005不仅是一个成熟的数据库管理系统(DBMS),还是一个集成的商业智能平台。在SQL SERVER 2005中,数据挖掘、分析服务和报表服务是其...

    SQL Server数据复制(上).pdf

    SQL Server允许对所出版表添加纵向或横向过滤器,从而使出版条目中只包含表中的某些列或其中的某些数据行,一组出版条目的集合构成一个出版物。 SQL Server复制部件采用模块化设计,各种复制操作通过不同的复制代理...

    基于SQL的高校科研管理平台.pdf

    针对科研项目的特点,平台通过逻辑判断自动添加项目编号前缀,巧妙地解决了项目管理中的索引问题,保证了项目信息的快速检索,同时也为区分不同类型的项目(如纵向、横向和校内项目)提供了便利。 用户界面层(UI)...

    新迪升报表数据模型 内部资料

    与横向扩展类似,纵向扩展是在垂直方向上的扩展机制。当设置了单元格为纵向扩展时,该单元格将根据其数据值表达式的计算结果在垂直方向上复制自身。这种方式同样有助于处理多值情况下的数据展示。 **2.1.4 不可扩展...

    数据库复制订阅

    总的来说,数据库复制订阅是SQL Server的一个强大工具,它通过出版/订阅模型实现在多个位置的数据分发和同步,满足企业对数据分布、性能优化和高可用性的需求。理解并掌握复制的相关概念和技术,对于管理和维护大...

    IRIS数据平台:一款针对事务/分析型应用程序的新型数据平台-2020.pdf

    4. **可扩展性**:无论是在横向还是纵向,IRIS都能够扩展以适应不同的资源需求,同时保持高效的资源利用率和较低的总拥有成本(TCO)。 5. **多模型数据库管理**:支持对象、关系型和文档型等多种数据存储技术,...

    毕业设计:ASP.NET+SQL网上校友录设计与实现(源代码+论文)

    必须按自顶向下、逐层分解的方式对问题进行分解和不断细化:软件的功能域和信息与都能做进一步的分解,可以是同一层次上的横向分解,也可以是多层次上的纵向分解。给出系统的逻辑模型和物理模型:逻辑模型给出软件要...

    《空间数据库原理》课程教学大纲.docx

    掌握四种类型的空间数据组织:纵向分层、横向分块、基于网格的组织和基于树的组织等;掌握空间数据索引的方法和技术等。 通过学习《空间数据库原理》课程,学生将获得对空间数据库的基本概念、关系数据模型、关系...

    大数据技术原理与应用-实验3熟悉常用的HBase操作(林子雨)

    - **关系数据库**:纵向扩展有限,横向扩展困难。 - **HBase**:易于通过增加节点实现水平扩展。 #### HBase支持的访问接口 HBase提供了多种访问接口,以适应不同的应用场景和需求: 1. **Native Java API**:...

    Project Server 2013 中型数据集的硬件建议

    对于中型数据集的部署,建议采用三层架构模型,即前端Web服务器、应用程序服务器和 SQL Server 数据库服务器分开部署。此外,还需要一个域控制器(DC)。 - **前端Web服务器**:负责处理用户的请求,展示界面等。建议...

    数据库-绪论.pptx

    随着互联网业务的发展,数据总量巨大,关系型数据库面临着许多挑战,如纵向扩展和横向扩展的难题。 纵向扩展(Scale up)指的是通过升级硬件来提高数据库性能,但是这会遇到物理瓶颈。 横向扩展(Scale out)指的...

    Python技术模块深入解析.docx

    - **数组拼接**:如`numpy.concatenate()`用于横向或纵向拼接数组。 - **数组分割**:如`numpy.split()`用于按指定轴分割数组。 ### 二、Pandas:数据分析利器 #### 2.1 数据结构 - **Series**:一维带有标签的...

Global site tag (gtag.js) - Google Analytics