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'
*/
分享到:
相关推荐
4. **超难的Sql查询:纵向转横向+分组统计**: - **纵向转横向**(PIVOT):当需要将行转换为列时,可以使用PIVOT操作。这通常在需要将多行数据合并成一行展示时非常有用,比如生成报表。 - **分组统计**:GROUP ...
### DBA必备的SQL好习惯 #### 一、理解SQL Server查询分析器的执行逻辑顺序 在探讨如何培养良好的SQL编程习惯之前,首先需要明确一点:了解SQL Server查询分析器如何执行SQL语句是非常重要的。这有助于我们编写...
- **纵向扩展**:除了横向扩展之外,SQL Server 2016还支持纵向扩展,即通过增加单个服务器的资源(如CPU、内存)来提高性能。 - **云集成**:SQL Server 2016与Azure等云平台进行了深度集成,支持混合云部署模型,...
### 关于《Pro SQL Server 2012 关系型数据库设计与实现》的知识点解析 #### 一、SQL Server 2012 概述 - **版本介绍**:SQL Server 2012 是微软公司推出的一款企业级关系型数据库管理系统(RDBMS),它提供了强大...
- **可扩展性**:支持横向扩展和纵向扩展,能够满足不同规模企业的需求。 ### 应用技术与实训 - **安装与配置**:详细介绍 SQL Server 2005 的安装步骤及配置方法,包括服务启动、网络设置等。 - **数据操作语言...
ChatGPT的出现标志着大语言模型登顶NLP的深层原理(横向):远距关联Attention is all you need“窗口”大小的临界点:>1000 Tokens大语言模型登顶NLP的深层原理(纵向):隐形资源句法语义本体常识事理“涌现”能力...
SQL Server 允许对所出版表添加纵向或横向过滤器,从而使出版条目中只包含表中的某些列或其中的某些数据行。一组出版条目的集合构成一个出版物。 二、复制代理 SQL Server 复制部件采用模块化设计,各种复制操作...
而纵向的数据挖掘解决方案则提供了针对特定应用的完整数据挖掘方案。 SQL SERVER 2005不仅是一个成熟的数据库管理系统(DBMS),还是一个集成的商业智能平台。在SQL SERVER 2005中,数据挖掘、分析服务和报表服务是其...
SQL Server允许对所出版表添加纵向或横向过滤器,从而使出版条目中只包含表中的某些列或其中的某些数据行,一组出版条目的集合构成一个出版物。 SQL Server复制部件采用模块化设计,各种复制操作通过不同的复制代理...
针对科研项目的特点,平台通过逻辑判断自动添加项目编号前缀,巧妙地解决了项目管理中的索引问题,保证了项目信息的快速检索,同时也为区分不同类型的项目(如纵向、横向和校内项目)提供了便利。 用户界面层(UI)...
与横向扩展类似,纵向扩展是在垂直方向上的扩展机制。当设置了单元格为纵向扩展时,该单元格将根据其数据值表达式的计算结果在垂直方向上复制自身。这种方式同样有助于处理多值情况下的数据展示。 **2.1.4 不可扩展...
总的来说,数据库复制订阅是SQL Server的一个强大工具,它通过出版/订阅模型实现在多个位置的数据分发和同步,满足企业对数据分布、性能优化和高可用性的需求。理解并掌握复制的相关概念和技术,对于管理和维护大...
4. **可扩展性**:无论是在横向还是纵向,IRIS都能够扩展以适应不同的资源需求,同时保持高效的资源利用率和较低的总拥有成本(TCO)。 5. **多模型数据库管理**:支持对象、关系型和文档型等多种数据存储技术,...
必须按自顶向下、逐层分解的方式对问题进行分解和不断细化:软件的功能域和信息与都能做进一步的分解,可以是同一层次上的横向分解,也可以是多层次上的纵向分解。给出系统的逻辑模型和物理模型:逻辑模型给出软件要...
掌握四种类型的空间数据组织:纵向分层、横向分块、基于网格的组织和基于树的组织等;掌握空间数据索引的方法和技术等。 通过学习《空间数据库原理》课程,学生将获得对空间数据库的基本概念、关系数据模型、关系...
- **关系数据库**:纵向扩展有限,横向扩展困难。 - **HBase**:易于通过增加节点实现水平扩展。 #### HBase支持的访问接口 HBase提供了多种访问接口,以适应不同的应用场景和需求: 1. **Native Java API**:...
对于中型数据集的部署,建议采用三层架构模型,即前端Web服务器、应用程序服务器和 SQL Server 数据库服务器分开部署。此外,还需要一个域控制器(DC)。 - **前端Web服务器**:负责处理用户的请求,展示界面等。建议...
随着互联网业务的发展,数据总量巨大,关系型数据库面临着许多挑战,如纵向扩展和横向扩展的难题。 纵向扩展(Scale up)指的是通过升级硬件来提高数据库性能,但是这会遇到物理瓶颈。 横向扩展(Scale out)指的...
- **数组拼接**:如`numpy.concatenate()`用于横向或纵向拼接数组。 - **数组分割**:如`numpy.split()`用于按指定轴分割数组。 ### 二、Pandas:数据分析利器 #### 2.1 数据结构 - **Series**:一维带有标签的...