简介: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】实现的更多相关文章

  1. Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、

    查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...

  2. 常用sql:按照表中的某一列对数据进行分组,统计数据条数

    select FROM_UNIXTIME(start_time,'%Y-%m-%d')as date,COUNT(*) FROM random_num GROUP BY FROM_UNIXTIME(s ...

  3. tableZen maxHeight 解决方案 如果数据条数小于N,不进行高度设置,超过N条,直接设置高度,解决原生iview Table 对于右侧固定列,不能计算出正确数值的解决方案

    tableZen maxHeight 解决方案 如果数据条数小于N,不进行高度设置,超过N条,直接设置高度,解决原生iview Table 对于右侧固定列,不能计算出正确数值的解决方案 if (thi ...

  4. SQL Server根据字段查询不出记录

    今天写了一条select语句,很奇怪的一件事,我写程序几年了,第一次碰到这个问题,就是数据库里有这个值,你根据这个值查询就是查询不出来这行记录. 所以我想是不是里面有空格,回车什么的,最后果然如此. ...

  5. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  6. SQL Server 得到数据库中所有表的名称及数据条数

    --方法一if exists ( select * from dbo.sysobjects where id = object_id(N'[dbo].[TableSpace]') and object ...

  7. Mysql常用sql语句(6)- limit 限制查询结果的条数

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 实际工作中,我们的数据表数据肯定都是万级别的,如 ...

  8. sql 查询当前数据库所有表格以及所有表格数据条数

    select b.name as tablename , a.rowcnt as datacount from sysindexes a , sysobjects b where a.id = b.i ...

  9. 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) ...

随机推荐

  1. LiquiBase预判断

    预判断解决的问题:运行liquibase之前,DB中已经存在一个table,所以需要加上预判断: 完整的一个例子: <?xml version="1.0" encoding= ...

  2. LeetCode_Construct Binary Tree from Inorder and Postorder Traversal

    一.题目 Construct Binary Tree from Inorder and Postorder Traversal My Submissions Given inorder and pos ...

  3. p2p項目夭折,有種蛋蛋的憂傷。。

      在高考完的暑假就在跟杰哥讨论怎样实现的校内p2p文件共享,就在今天.我们无奈的宣布差点儿夭折. 上图是測试图. 那时候的思路已经完好.就是:"学生上传共享文件到咱们工作室的server. ...

  4. 简单缓存Cache

    接口 interface ICache { /// <summary> /// 添加 /// </summary> /// <param name="key&q ...

  5. 常见的C字符串处理函数的源代码

    #include <stdio.h> #include <assert.h> char *strcpy(char *strDest,const char *strSrc) // ...

  6. Gym - 100625E Encoded Coordinates 矩阵快速幂

    题意: 一直TLE我也是醉了,,不爽! #include <iostream> #include <cstdio> #include <fstream> #incl ...

  7. 威联通212P 在admin用户密码正确情况下仍然无法登录WEB页面解决办法

    *登录 telnet 执行以下语句: [~] # cp /etc/default_config/passwd /mnt/HDA_ROOT/.config/passwd[~] # cp /etc/def ...

  8. 紫书 习题 10-44 UVa 11246 ( 容斥原理)

    把k的倍数的删去(k, 2k, 3k--),但是k^2不应该删去,因为k已经删去,所以不存在某个数乘上k之后为k^2 所以k^2可以留下,然后因为有k^2,所以k^3就是k^2的k倍,所以k^3要删去 ...

  9. hiho week 38 P1 : 二分·二分答案

    P1 : 二分·二分答案 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上一回和上上回里我们知道Nettle在玩&l ...

  10. SAP学习之路

    此贴记录学习SAP过程~如有错误请指出~ 6.看着网上学习SAP的貌似比較花精力.学习好的话发展前景还是不错的 5.尽管还不是非常懂.可是还是充满期待,期待着java转型abap. 能够在虚拟机上安装 ...