前几天客户提出一个月报,经过了解需求及公式等过程长达20小时,总算基本模型出来了,贴出来啥晒,对于我这种菜鸟来说也算小有提高,虽然Sql语句不是很庞大,但是里面涉及到了几种算法,个人觉得还是经常能用到的,所以贴出来跟大家分享一下,如果大牛直接跳过!呵呵,废话不多说,先贴几张图:

  public DataSet GetRanmcgjhData(string yf)
{
DataSet ds = new DataSet();
StringBuilder strSql=new StringBuilder();
strSql.Append(" select rjmqkAndcgjh.daohrq_rjmqk,");
strSql.Append(" round(rjmqkAndcgjh.jingz_rjmqk, 2) jingz_rjmqk,");
strSql.Append(" round(sum_jingz / (case rjmqkAndcgjh.sfriq");
strSql.Append(" when 0 then");
strSql.Append(" 1");
strSql.Append(" else");
strSql.Append(" rjmqkAndcgjh.sfriq");
strSql.Append(" end),");
strSql.Append(" 2) yuejhfjl,");
strSql.Append(" rjmqkAndcgjh.std_rjmqk,");
strSql.Append(" rjmqkAndcgjh.jihl,");
strSql.Append(" rjmqkAndcgjh.rjmqkAndcgjh_qy_jh_meikxxb_fk,");
strSql.Append(" rjmqkAndcgjh.laiml,");
strSql.Append(" rjmqkAndcgjh.jingz_rjmqk,");
strSql.Append(" rjmqkAndcgjh.qnet_ar_rjmqk,");
strSql.Append(" round(rjmqkAndcgjh.jihl_tzh / jh.zb,2) zanb,");
strSql.Append(" jhzxqk.daohrq_jhzxqk,");
strSql.Append(" 1zanb_tzh,");
strSql.Append(" rjmqkAndcgjh.jihl_tzh,");
strSql.Append(" rjmqkAndcgjh.qnet_ar,");
strSql.Append(" rjmqkAndcgjh.std,");
strSql.Append(" rjmqkAndcgjh.mt,");
strSql.Append(" rjmqkAndcgjh.huiff,");
strSql.Append(" rjmqkAndcgjh.yunfglj,");
strSql.Append(" round(rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj, 2) yunfdj,");
strSql.Append(" round(rjmqkAndcgjh.qnet_ar * rjmqkAndcgjh.meijkj, 2) meijdj,");
strSql.Append(" round_new(rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj +");
strSql.Append(" rjmqkAndcgjh.qnet_ar * rjmqkAndcgjh.meijkj,");
strSql.Append(" 2) zonghymj,");
strSql.Append(" round_new(rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj +");
strSql.Append(" rjmqkAndcgjh.qnet_ar * rjmqkAndcgjh.meijkj /");
strSql.Append(" (rjmqkAndcgjh.qnet_ar / 7000),");
strSql.Append(" 2) zonghbmj,");
strSql.Append(" rjmqkAndcgjh.meijkj,");
strSql.Append(" jhzxqk.jingz_jhzxqk,");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk,");
strSql.Append(" jhzxqk.std_jhzxqk,");
strSql.Append(" jhzxqk.mt_jhzxqk,");
strSql.Append(" jhzxqk.mkmingc,");
strSql.Append(" jhzxqk.vdaf_jhzxqk,");
strSql.Append(" (case");
strSql.Append(" when (jhzxqk.qnet_ar_jhzxqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - jhzxqk.qnet_ar_jhzxqk) / 100)) / 1000)");
strSql.Append(" end) meij_jhzxqk,");
strSql.Append(" round((case");
strSql.Append(" when (rjmqkAndcgjh.qnet_ar_rjmqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" rjmqkAndcgjh.qnet_ar_rjmqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" rjmqkAndcgjh.qnet_ar_rjmqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - rjmqkAndcgjh.qnet_ar_rjmqk) / 100)) / 1000)");
strSql.Append(" end),");
strSql.Append(" 2) meij_rjmqk,");
strSql.Append(" round_new(((case");
strSql.Append(" when (rjmqkAndcgjh.qnet_ar_rjmqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" rjmqkAndcgjh.qnet_ar_rjmqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" rjmqkAndcgjh.qnet_ar_rjmqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - rjmqkAndcgjh.qnet_ar_rjmqk) / 100)) / 1000)");
strSql.Append(" end) * 7000) / rjmqkAndcgjh.qnet_ar_rjmqk,");
strSql.Append(" 2) bmdj_rjmqk,");
strSql.Append(" round(rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj, 2) yunf_jhzxqk,");
strSql.Append(" round((case");
strSql.Append(" when (jhzxqk.qnet_ar_jhzxqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - jhzxqk.qnet_ar_jhzxqk) / 100)) / 1000)");
strSql.Append(" end) + rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj,");
strSql.Append(" 2) zhymj_jhzxqk,");
strSql.Append(" round_new(((case");
strSql.Append(" when (jhzxqk.qnet_ar_jhzxqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - jhzxqk.qnet_ar_jhzxqk) / 100)) / 1000)");
strSql.Append(" end) + rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj) /");
strSql.Append(" (jhzxqk.qnet_ar_jhzxqk / 7000),");
strSql.Append(" 2) zhbmj_jhzxqk,");
strSql.Append(" round(jhzxqk.jingz_jhzxqk - rjmqkAndcgjh.jihl * 10000, 2) jingz_zxcyfx,");
strSql.Append(" round_new(jhzxqk.qnet_ar_jhzxqk - rjmqkAndcgjh.qnet_ar, 2) qnet_ar_zxcyfx,");
strSql.Append(" round_new(jhzxqk.std_jhzxqk - rjmqkAndcgjh.std, 2) std_zxcyfx,");
strSql.Append(" round_new(jhzxqk.vdaf_jhzxqk - rjmqkAndcgjh.huiff, 2) vdaf_zxcyfx,");
strSql.Append(" round_new(jhzxqk.mt_jhzxqk - rjmqkAndcgjh.mt, 2) mt_zxcyfx,");
strSql.Append(" round_new(rjmqkAndcgjh.jihl_tzh * 10000 / 21, 2) yjhfj,");
strSql.Append(" round_new((case");
strSql.Append(" when (jhzxqk.qnet_ar_jhzxqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - jhzxqk.qnet_ar_jhzxqk) / 100)) / 1000)");
strSql.Append(" end) + rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj -");
strSql.Append(" (rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj +");
strSql.Append(" rjmqkAndcgjh.qnet_ar * rjmqkAndcgjh.meijkj),");
strSql.Append(" 2) zhymj_zxcyfx,");
strSql.Append(" round_new(((case");
strSql.Append(" when (jhzxqk.qnet_ar_jhzxqk - rjmqkAndcgjh.qnet_ar) >= 0 then");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk * rjmqkAndcgjh.meijkj");
strSql.Append(" else");
strSql.Append(" jhzxqk.qnet_ar_jhzxqk *");
strSql.Append(" (rjmqkAndcgjh.meijkj -");
strSql.Append(" power(2,");
strSql.Append(" FLOOR((rjmqkAndcgjh.qnet_ar - jhzxqk.qnet_ar_jhzxqk) / 100)) / 1000)");
strSql.Append(" end) + rjmqkAndcgjh.yunj * rjmqkAndcgjh.yunfglj) /");
strSql.Append(" (jhzxqk.qnet_ar_jhzxqk / 7000) -");
strSql.Append(" rjmqkAndcgjh.qnet_ar * rjmqkAndcgjh.meijkj /");
strSql.Append(" (rjmqkAndcgjh.qnet_ar / 7000),");
strSql.Append(" 2) zhbmj_zxcyfx");
strSql.Append(" from (select sum(fh.jingz) jingz_jhzxqk,");
strSql.Append(" round_new(sum(zl.qnet_ar * fh.jingz) / sum(fh.jingz) /");
strSql.Append(" 0.0041868,");
strSql.Append(" 2) qnet_ar_jhzxqk,");
strSql.Append(" round_new(sum(zl.std * fh.jingz) / sum(fh.jingz), 2) std_jhzxqk,");
strSql.Append(" round_new(sum(zl.vdaf * fh.jingz) / sum(fh.jingz), 2) vdaf_jhzxqk,");
strSql.Append(" round_new(sum(zl.mt * fh.jingz) / sum(fh.jingz), 2) mt_jhzxqk,");
strSql.Append(" mk.mingc mkmingc,");
strSql.Append(" fh.qy_jh_meikxxb_fk,");
strSql.Append(" to_char(fh.daohrq, 'yyyy-MM') daohrq_jhzxqk");
strSql.Append(" from qy_fahb fh");
strSql.Append(" left join qy_zhilb zl");
strSql.Append(" on zl.qy_zhilboid = fh.qy_zhilb_fk");
strSql.Append(" left join qy_jh_meikxxb mk");
strSql.Append(" on mk.qy_jh_meikxxboid = fh.qy_jh_meikxxb_fk");
strSql.Append(" where fh.jingz <> 0");
strSql.Append(" and zl.qy_zhilboid is not null");
strSql.Append(" group by mk.mingc,");
strSql.Append(" to_char(fh.daohrq, 'yyyy-MM'),");
strSql.Append(" fh.qy_jh_meikxxb_fk) jhzxqk");
strSql.Append(" left join (select rjmqk.jingz_rjmqk,");
strSql.Append(" rjmqk.qnet_ar_rjmqk,");
strSql.Append(" rjmqk.std_rjmqk,");
strSql.Append(" rjmqk.vdaf_rjmqk,");
strSql.Append(" rjmqk.qy_jh_meikxxb_fk rjmqkAndcgjh_qy_jh_meikxxb_fk,");
strSql.Append(" rjmqk.daohrq_rjmqk,");
strSql.Append(" cgjh.jihl,");
strSql.Append(" cgjh.jihl_tzh,");
strSql.Append(" cgjh.qnet_ar,");
strSql.Append(" cgjh.std,");
strSql.Append(" cgjh.mt,");
strSql.Append(" cgjh.huiff,");
strSql.Append(" cgjh.yunj,");
strSql.Append(" cgjh.yunfglj,");
strSql.Append(" jhlrl.laiml,");
strSql.Append(" cgjh.meijkj,");
strSql.Append(" (select last_day(to_date(rjmqk.daohrq_rjmqk, 'yyyy-MM-dd')) -");
strSql.Append(" last_day(add_months(to_date(rjmqk.daohrq_rjmqk,");
strSql.Append(" 'yyyy-MM-dd'),");
strSql.Append(" -1)) -");
strSql.Append(" to_char(to_date(rjmqk.daohrq_rjmqk, 'yyyy-MM-dd'),");
strSql.Append(" 'dd') + 1");
strSql.Append(" from dual) sfriq,");
strSql.Append(" (cgjh.jihl_tzh * 10000 -");
strSql.Append(" (sum(rjmqk.jingz_rjmqk)");
strSql.Append(" over(PARTITION BY rjmqk.qy_jh_meikxxb_fk order by");
strSql.Append(" rjmqk.daohrq_rjmqk) - rjmqk.jingz_rjmqk)) sum_jingz");
strSql.Append(" from (select sum(fh.jingz) jingz_rjmqk,");
strSql.Append(" round_new((sum((round_new(zl.qnet_ar / 0.0041868,");
strSql.Append(" 2)) * fh.jingz) /");
strSql.Append(" sum(fh.jingz)),");
strSql.Append(" 2) qnet_ar_rjmqk,");
strSql.Append(" round_new(sum(zl.std * fh.jingz) / sum(fh.jingz),");
strSql.Append(" 2) std_rjmqk,");
strSql.Append(" round_new(sum(zl.vdaf * fh.jingz) / sum(fh.jingz),");
strSql.Append(" 2) vdaf_rjmqk,");
strSql.Append(" mk.mingc mkmingc,");
strSql.Append(" fh.qy_jh_meikxxb_fk,");
strSql.Append(" to_char(fh.daohrq, 'yyyy-MM-dd') daohrq_rjmqk");
strSql.Append(" from qy_fahb fh");
strSql.Append(" left join qy_zhilb zl");
strSql.Append(" on zl.qy_zhilboid = fh.qy_zhilb_fk");
strSql.Append(" left join qy_jh_meikxxb mk");
strSql.Append(" on mk.qy_jh_meikxxboid = fh.qy_jh_meikxxb_fk");
strSql.Append(" where fh.jingz <> 0");
strSql.Append(" and zl.qy_zhilboid is not null");
strSql.Append(" group by mk.mingc,");
strSql.Append(" to_char(fh.daohrq, 'yyyy-MM-dd'),");
strSql.Append(" fh.qy_jh_meikxxb_fk) rjmqk");
strSql.Append(" left join qy_yuecgjhb cgjh");
strSql.Append(" on cgjh.qy_jh_meikxxb_fk = rjmqk.qy_jh_meikxxb_fk");
strSql.Append(" and to_char(to_date(rjmqk.daohrq_rjmqk, 'yyyy-MM-dd'),");
strSql.Append(" 'yyyy-MM') = to_char(cgjh.yuef, 'yyyy-MM')");
strSql.Append(" left join qy_jihllrb jhlrl");
strSql.Append(" on jhlrl.qy_jh_meikxxb_fk = rjmqk.qy_jh_meikxxb_fk");
strSql.Append(" and to_char(jhlrl.laimrq, 'yyyy-MM-dd') = rjmqk.daohrq_rjmqk");
strSql.Append(" where to_char(jhlrl.laimrq, 'yyyy-MM') = '" + yf + "') rjmqkAndcgjh");
strSql.Append(" on rjmqkAndcgjh.rjmqkAndcgjh_qy_jh_meikxxb_fk = jhzxqk.qy_jh_meikxxb_fk");
strSql.Append(" and to_char(to_date(rjmqkAndcgjh.daohrq_rjmqk, 'yyyy-MM-dd'), 'yyyy-MM') =");
strSql.Append(" jhzxqk.daohrq_jhzxqk");
strSql.Append(" left join (select sum(ycgjh.jihl_tzh) zb,");
strSql.Append(" to_char(ycgjh.yuef, 'yyyy-MM') yuef");
strSql.Append(" from qy_yuecgjhb ycgjh");
strSql.Append(" group by to_char(ycgjh.yuef, 'yyyy-MM')) jh");
strSql.Append(" on jh.yuef = jhzxqk.daohrq_jhzxqk");
strSql.Append(" where to_char(to_date(jhzxqk.daohrq_jhzxqk, 'yyyy-MM'), 'yyyy-MM') =");
strSql.Append(" '"+yf+"'");
ds = DbHelperOra.Query(strSql.ToString());
return ds;
}

一、实现分组累计数据

  先看一下实现的效果:

  

如上图所示,2014/12/2 日取1日的jingz,3日取1号+2号的累计,一次类推,我相信应该很多人都遇到这样的需求,下面我把我的实现语句分享一下:

1 select fh.daohrq,
2 fh.jingz,
3 (sum(fh.jingz)
4 over(PARTITION BY fh.qy_jh_meikxxb_fk order by fh.daohrq)) -
5 fh.jingz sumjingz
6 from qy_fahb fh
7 where to_char(fh.daohrq, 'yyyy-MM') = '2014-12'
8 and fh.qy_jh_meikxxb_fk = 'dc757915-9aa9-4cec-bde2-438cb1c4ca21'

二、当月天数和当天相差天数

1 select to_char(sysdate, 'yyyy-MM-dd') d,
2 last_day(sysdate) - last_day(add_months(sysdate, -1)) -
3 to_char(sysdate, 'dd') dd
4 from dual

效果:

三、求幂:  1 select power(2,3) from dual

Oracle常用几种Sql用法的更多相关文章

  1. ORACLE常用性能监控SQL【一】

    目录(?)[+] 系列 ORACLE常用性能监控SQL[一] ORACLE常用性能监控SQL[二] Oracle-动态性能视图解读 系列 死锁后的解决办法 生成Kill Session语句 查看导致死 ...

  2. ORACLE常用性能监控SQL(二)

    查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, p ...

  3. Mysql常用30种SQL查询语句优化方法

    出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...

  4. MySQL 常用30种SQL查询语句优化方法

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  5. Oracle常用系统查询SQL

    以user1身份登录oracle,然后执行:select table_name from user_tables;或select table_name from tabs; 常用SQL --1.查询o ...

  6. ORACLE常用性能监控SQL

    Temp表空间上进程的查询 select a.tablespace, b.sid, b.serial#, a.blocks,c.sql_text from v$sort_usage a,v$sessi ...

  7. Oracle 常用性能监控SQL语句

    1.  --查看表锁     SELECT * FROM SYS.V_$SQLAREA WHERE DISK_READS > 100; 2.  --监控事例的等待     SELECT EVEN ...

  8. oracle常用运维sql语句

    1.查询dblink语句 col owner for a20col db_link for a30col username for a20col host for a30set linesize 12 ...

  9. oracle常用的一些sql命令

    //查看系统当前时间   HH24 24小时制  MI是正确的分钟 select to_char(sysdate,'yyyy-mm-dd HH24:MI:SS') from dual //HH非24 ...

随机推荐

  1. 深入分析iSCSI协议的应用

    深入分析iSCSI协议的应用 1 引言 快速增长的存储容量使得企业需要采用网络存储解决方案.目前网络存储技术采用的连接技术主要有光纤通道和TCP/IP.基于IP的网络存储能解决基于光纤通道的网络存储中 ...

  2. USACO3.32Shopping Offers(DP)

    五维DP,听着挺多的,貌似就是挺裸的dp, 最近貌似做简单的DP挺顺手..1A dp[i][j][e][o][g] = min(dp[i][j][e][o][g],dp[i-i1][j-i2][e-i ...

  3. bzoj1016

    这道题主要利用了最小生成树的两个性质 最小生成树每种边权的数目固定不变 最小生成树每种边权带来的连通状况一定唯一 由于每种边权的只有不到10种,所以直接穷举然后乘法原理即可 ; type node=r ...

  4. asp.net Context.User.Identity.Name说明

    今天做了一个身份验证页面,基本实现功能,却不能显示当前用户姓名,自己MSDN半天一无所获,问题就在Context.User.Identity.Name:Context是HttpContext类,Use ...

  5. Android webview中cookie增加/修改

    最近项目需求中,需要满足往webview传递cookie,而且cookie需要增加修改: public class MainActivity extends Activity { private We ...

  6. Android学习笔记(十四)方便实用的首选项-PreferenceActivity

    突然发现已经好多天没更新博客了,最近公司项目正在进行一个大跨度的重构,又碰上有新需求,一连好多天都是很晚才到家.其实这篇博文在草稿箱里面也存了很久了,本来想着不发了,不过感觉PreferenceAct ...

  7. Linux IIO子系统分析

    最近稍微看了下LKML,发现里面有一个子系统叫做“IIO”.以前没有接触过,所以Google了下.     IIO子系统全称是 Industrial I/O subsystem(工业 I/O 子系统) ...

  8. Delphi的四舍五入函数

    一.四舍五入法    四舍五入是一种应用非常广泛的近似计算方法,其有算术舍入法和银行家舍入法两种.    所谓算术舍入法,就是我们通常意义上的四舍五入法.其规则是:当舍去位的数值大于等于5时,在舍去该 ...

  9. 转载:在Ubuntu系统下装Win7并引导双系统

    转载自http://blog.sina.com.cn/s/blog_9f6451990101blef.html 本人的系统原先是就单ubuntu系统,而且是未分区情况下自动安装的,现在又装了个wind ...

  10. 基于UDP协议的控制台聊天

    这几天学了java的网络编程弄出一个基于UDP协议的聊天工具 功能 添加并且备注好友(输入对方的ip) 删除好友 查看好友列表 用java写的控制台程序导出可执行程序后不能双击打开 还需要些一个脚本文 ...