一句SQL按照某个字段数值拆分出对应的数据条数,借助数据库常量表【master..spt_values】实现
简介:master..spt_values,数据行拆分简单小技巧
SELECT ProjGUID ,
CostGUID ,
SUM(FtAmount) AS FtAmount ,
BeginMonth ,
EndMonth ,
( EndMonth - BeginMonth ) + 1 AS RowCountNum
FROM cb_Loan2Cost
WHERE LoanGUID = '6D88EB2B-18FA-4A4A-9ADB-9873B0F14381'
GROUP BY ProjGUID ,
CostGUID ,
EndMonth ,
BeginMonth
SQl结果集查出如下图:
一句话拆分出对应的数据条数: SELECT
M.ProjGUID,
M.CostGUID,
CASE WHEN M.XnMonth=M.EndMonth THEN M.NewFtAmount+(M.FtAmount-M.NewFtAmount*M.FactMonth) ELSE M.NewFtAmount END FactFtAmount,
M.FactMonth
FROM (
SELECT T.ProjGUID ,
T.CostGUID ,
T.FtAmount / T.RowCountNum AS NewFtAmount ,
T.FtAmount,
T.BeginMonth ,
T.EndMonth ,
CASE WHEN BeginMonth = EndMonth THEN EndMonth ELSE spt.number END FactMonth,
spt.number AS XnMonth
FROM ( SELECT ProjGUID ,
CostGUID ,
SUM(FtAmount) AS FtAmount ,
BeginMonth ,
EndMonth ,
( EndMonth - BeginMonth ) + 1 AS RowCountNum
FROM cb_Loan2Cost
WHERE LoanGUID = '6D88EB2B-18FA-4A4A-9ADB-9873B0F14381'
GROUP BY ProjGUID ,
CostGUID ,
EndMonth ,
BeginMonth
) T ,
master..spt_values spt
WHERE T.RowCountNum >= spt.number
AND spt.type = 'P'
AND spt.number > 0
)M
最终结果集如下图:
拆分SQL核心如下:
借助数据库常量表:master..spt_values
此表记录都是数据库中常用的常量值
SELECT number FROM master..spt_values
简单的小例子
create table T(A varchar(10), B varchar(10), C int) insert into T
select 'AA', '笔', 5 union all
select 'AB', '纸', 3
select t.A 编码, t.B as 名称,1 as 数量
from t,master..spt_values s
where t.c>= s.number and s.type= 'P' and s.number >0
一句SQL按照某个字段数值拆分出对应的数据条数,借助数据库常量表【master..spt_values】实现的更多相关文章
- Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、
查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...
- 常用sql:按照表中的某一列对数据进行分组,统计数据条数
select FROM_UNIXTIME(start_time,'%Y-%m-%d')as date,COUNT(*) FROM random_num GROUP BY FROM_UNIXTIME(s ...
- tableZen maxHeight 解决方案 如果数据条数小于N,不进行高度设置,超过N条,直接设置高度,解决原生iview Table 对于右侧固定列,不能计算出正确数值的解决方案
tableZen maxHeight 解决方案 如果数据条数小于N,不进行高度设置,超过N条,直接设置高度,解决原生iview Table 对于右侧固定列,不能计算出正确数值的解决方案 if (thi ...
- SQL Server根据字段查询不出记录
今天写了一条select语句,很奇怪的一件事,我写程序几年了,第一次碰到这个问题,就是数据库里有这个值,你根据这个值查询就是查询不出来这行记录. 所以我想是不是里面有空格,回车什么的,最后果然如此. ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- SQL Server 得到数据库中所有表的名称及数据条数
--方法一if exists ( select * from dbo.sysobjects where id = object_id(N'[dbo].[TableSpace]') and object ...
- Mysql常用sql语句(6)- limit 限制查询结果的条数
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 实际工作中,我们的数据表数据肯定都是万级别的,如 ...
- sql 查询当前数据库所有表格以及所有表格数据条数
select b.name as tablename , a.rowcnt as datacount from sysindexes a , sysobjects b where a.id = b.i ...
- sql server 2005 表master..spt_values
IF OBJECT_ID('tempdb..#t') IS NOT NULL DROP TABLE #tGOcreate table #t(id int identity,Dt varchar(10) ...
随机推荐
- 设计模式之Flyweight模式(笔记)
享元模式:运用共享技术有效地支持大量细粒度的对象. 适用场合:假设一个应用程序适用了大量的对象.而大量的这些对象造成了非常大的存储开销时就应该考虑使用. 首先定义一个IFlyweight接口 publ ...
- Exchange2003迁移2010DAG的权限问题
exchange2010无法删除用户.在2010的控制台中新建一个通讯组.然后将它删除就会报告下面错误. MicrosoftExchange 错误:无法对对象"test"执行&qu ...
- 《AndroidStudio每日一贴》7. 怎样将本地变更文件移到其他的changelist?
操作方法: 进入Version Control -> Local Changes ,会显示本地变更列表分组. 假设你想将某个changelist中的文件转移到其他的changelist, 选中此 ...
- 实习第一天(安装svn管理工具跟tomcat插件)
在eclipse中安装svn管理解压工具是有好几种方法. 方法1 1>可以直接下载svn插件subclipse,之后进行解压 2>然后将将插件包features和plugins目录中的文件 ...
- C#泛型链表Demo
/// <summary> /// 节点 /// </summary> /// <typeparam name="T"></typepar ...
- centos 7.3 配置vnc 服务 图形界面登录
1.检查系统是否有安装tigervnc-server软件包 rpm -qa |grep vnc 默认的系统未装tigervnc-server软件包 2.安装tigervnc-server软件包 yum ...
- asp.net 关于cookie的操作
一.无子键或单级cookie 读写(1).写入: 第一种 HttpCookie cookie=new HttpCookie("User"); cookie.Value=" ...
- Centos7.6下安装Python3.7
前言 话说不会开发的运维不是一个好的DBA,所以我要开始学习python了,写博客记录一下我的学习过程,另外别欺负我新来的,那个每天更博的技术流ken是我哥. 不说了,时间宝贵,开整. 1.首先来看一 ...
- Swift学习笔记(7)--控制流
1.For循环 //1.条件递增 for var index = 0; index < 3; ++index { println("index is \(index)") } ...
- 洛谷 P1705 爱与愁过火
P1705 爱与愁过火 题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) <爱与愁的故事第一弹·heartache>第三章. 爱与愁大神说这是ta的伤心指数,只不过现在好很多了,翻译只 ...