一句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) ...
随机推荐
- 【转】 HTML解析:基于XPath的C#类库HtmlAgiliytyPack
[转] HTML解析:基于XPath的C#类库HtmlAgiliytyPack 最近处于毕业设计开始阶段,前期工作需要去国外的一些专业数据库网站比对一些所需TF家族信息,为了快捷方便,想到用程序去帮助 ...
- 洛谷——P1970 花匠
https://www.luogu.org/problem/show?pid=1970 题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定 把这排中的一部分花移走, ...
- error:assign attribute must be unsafeunretained
今天在使用协议的过程中.偶然发现这样使用 ? 1 2 3 4 5 6 7 8 9 10 @interface AppDelegate (){ id<chatdelegate> t ...
- Java 实现状态(State)模式
/** * @author stone */ public class WindowState { private String stateValue; public WindowState(Stri ...
- 我看Java二十年:它是怎样永远改变编程的。
转自jdon的小文章:来自Infoworld的一篇纪念mod=viewthread&tid=3042" target="_blank">Java诞生20周年 ...
- 关于HttpClient模拟浏览器请求的參数乱码问题解决方式
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...
- javaScript for in循环遍历对象
for循环常被我们用来遍历数组,而如何遍历对象呢? 这时就需要用到for in循环了 写一个遍历对象名简写如下: for(var xxx in ooo){console.log(xxx)} 其中xxx ...
- Nginx缩略图和Fastdfs整合以及image_filter配置,7点经验结论和5个参考资料
以下是7点经验结论和5个参考资料 1.Nginx单独配置缩略图与Nginx和Fastdfs模块整合,配置是不一样的. 非整合模式的配置,类似这样的: location ~* /(\d+)\.(jpg ...
- XTUOJ 1205 Range
Range Time Limit : 1000 MS Memory Limit : 65536 KB Problem Description For an array, the range funct ...
- HDU——T 1506 Largest Rectangle in a Histogram|| POJ——T 2559 Largest Rectangle in a Histogram
http://acm.hdu.edu.cn/showproblem.php?pid=1506 || http://poj.org/problem?id=2559 Time Limit: 2000/1 ...