SQL 高级查询
WITH FINISHMAINT (FRAMENO,DELIVEREDDATE) AS
(
SELECT DISTINCT RP.FRAMENO, MAX(PRC.DELIVEREDDATE) OVER(PARTITION BY RP.FRAMENO) FROM RT_REPAIR RP
LEFT JOIN RT_REPAIRPART P ON RP.REPAIRNO=P.REPAIRNO
LEFT JOIN RT_RepairProcess PRC ON RP.REPAIRNO=PRC.REPAIRNO
WHERE RP.StatusCode = ''AND value(RP.Deleted,'') = ''
AND P.PARTNO LIKE '15400%' AND VALUE(P.ActualOutQty,0)-VALUE(P.ReturnedQty,0)>0
), DELAYTASKS(FRAMENO,NEXTSTEPTIME) AS
(
SELECT DEF.FRAMENO,RECDT.NEXTSTEPTIME FROM RT_CALLTASKRECDT RECDT
LEFT JOIN RT_CALLTASKDEF DEF ON RECDT.TASKID=DEF.TASKID
WHERE RECDT.Conclusion='' AND RECDT.NextStepTime IS NOT NULL AND YEAR(RECDT.NextStepTime) = 2015
AND (DEF.CANCELED = '' OR (DEF.CANCELED = '' AND RECDT.NEXTSTEPTIME > DEF.CANCELTIME)
)
) SELECT COUNT(1) AS DELAYTASKCOUNT FROM DELAYTASKS LEFT JOIN FINISHMAINT ON DELAYTASKS.FRAMENO=FINISHMAINT.FRAMENO
WHERE FINISHMAINT.DELIVEREDDATE > DELAYTASKS.NEXTSTEPTIME ------------------------------------------------------
WITH FINISHMAINT (FRAMENO,DELIVEREDDATE) AS
(
SELECT DISTINCT RP.FRAMENO, MAX(PRC.DELIVEREDDATE) OVER(PARTITION BY RP.FRAMENO) FROM RT_REPAIR RP
LEFT JOIN RT_REPAIRPART P ON RP.REPAIRNO=P.REPAIRNO
LEFT JOIN RT_RepairProcess PRC ON RP.REPAIRNO=PRC.REPAIRNO
WHERE RP.StatusCode = ''AND value(RP.Deleted,'') = ''
AND P.PARTNO LIKE '15400%' AND VALUE(P.ActualOutQty,0)-VALUE(P.ReturnedQty,0)>0
), DELAYTASKS(FRAMENO,NEXTSTEPTIME) AS
(
SELECT DEF.FRAMENO,RECDT.NEXTSTEPTIME FROM RT_CALLTASKRECDT RECDT
LEFT JOIN RT_CALLTASKDEF DEF ON RECDT.TASKID=DEF.TASKID
WHERE RECDT.Conclusion='' AND RECDT.NextStepTime IS NOT NULL AND YEAR(RECDT.NextStepTime) = 2015
AND (DEF.CANCELED = '' OR (DEF.CANCELED = '' AND RECDT.NEXTSTEPTIME > DEF.CANCELTIME)
)
) SELECT MONTH(DELAYTASKS.NEXTSTEPTIME) MON,COUNT(1) AS DELAYTASKCOUNT FROM DELAYTASKS LEFT JOIN FINISHMAINT ON DELAYTASKS.FRAMENO=FINISHMAINT.FRAMENO
WHERE FINISHMAINT.DELIVEREDDATE > DELAYTASKS.NEXTSTEPTIME
GROUP BY MONTH(DELAYTASKS.NEXTSTEPTIME)
-----------------------------------------
WITH FINISHMAINT (FRAMENO,DELIVEREDDATE) AS
(
SELECT DISTINCT RP.FRAMENO, MAX(PRC.DELIVEREDDATE) OVER(PARTITION BY RP.FRAMENO) FROM RT_REPAIR RP
LEFT JOIN RT_REPAIRPART P ON RP.REPAIRNO=P.REPAIRNO
LEFT JOIN RT_RepairProcess PRC ON RP.REPAIRNO=PRC.REPAIRNO
WHERE RP.StatusCode = ''AND value(RP.Deleted,'') = ''
AND P.PARTNO LIKE '15400%' AND VALUE(P.ActualOutQty,0)-VALUE(P.ReturnedQty,0)>0
), DELAYTASKS(FRAMENO,NEXTSTEPTIME) AS
(
SELECT DEF.FRAMENO,RECDT.NEXTSTEPTIME FROM RT_CALLTASKRECDT RECDT
LEFT JOIN RT_CALLTASKDEF DEF ON RECDT.TASKID=DEF.TASKID
WHERE RECDT.Conclusion='' AND RECDT.NextStepTime IS NOT NULL AND YEAR(RECDT.NextStepTime) = 2015
AND (DEF.CANCELED = '' OR (DEF.CANCELED = '' AND RECDT.NEXTSTEPTIME > DEF.CANCELTIME)
)
) SELECT MON,SUM(DELAYTASKCOUNT) AS DELAYTASKCOUNT FROM (
SELECT 1 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 2 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 3 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 4 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 5 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 6 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 7 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 8 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 9 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 10 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 11 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT 12 AS MON,0 AS DELAYTASKCOUNT FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT MONTH(DELAYTASKS.NEXTSTEPTIME) MON,COUNT(1) AS DELAYTASKCOUNT FROM DELAYTASKS LEFT JOIN FINISHMAINT ON DELAYTASKS.FRAMENO=FINISHMAINT.FRAMENO WHERE FINISHMAINT.DELIVEREDDATE > DELAYTASKS.NEXTSTEPTIME
GROUP BY MONTH(DELAYTASKS.NEXTSTEPTIME)
) T GROUP BY MON --------------------------------------------------
WITH FINISHMAINT (FRAMENO,DELIVEREDDATE) AS
(
SELECT DISTINCT RP.FRAMENO, MAX(PRC.DELIVEREDDATE) OVER(PARTITION BY RP.FRAMENO) FROM RT_REPAIR RP
LEFT JOIN RT_REPAIRPART P ON RP.REPAIRNO=P.REPAIRNO
LEFT JOIN RT_REPAIRPROCESS PRC ON RP.REPAIRNO=PRC.REPAIRNO
WHERE RP.STATUSCODE = ''AND VALUE(RP.DELETED,'') = ''
AND P.PARTNO LIKE '15400%' AND VALUE(P.ACTUALOUTQTY,0)-VALUE(P.RETURNEDQTY,0)>0
), TBACK(FRAMENO,EXPECTSTARTDATE) AS
(
SELECT DEF.FRAMENO,DEF.EXPECTSTARTDATE FROM RT_CALLTASKDEF DEF
WHERE DEF.EXPECTSTARTDATE >= '2014-12-01' AND DEF.EXPECTSTARTDATE<='2015-11-30'
) SELECT MONTH(TBACK.EXPECTSTARTDATE + 1 MONTH) AS MON, COUNT(1) AS TBACKCOUNT FROM TBACK LEFT JOIN FINISHMAINT ON TBACK.FRAMENO=FINISHMAINT.FRAMENO
WHERE DATE(FINISHMAINT.DELIVEREDDATE) >= TBACK.EXPECTSTARTDATE-7 DAYS AND DATE(FINISHMAINT.DELIVEREDDATE) <= TBACK.EXPECTSTARTDATE +30 DAYS
GROUP BY MONTH(TBACK.EXPECTSTARTDATE + 1 MONTH)
------------------------------------------------- WITH FINISHMAINT (FRAMENO,DELIVEREDDATE) AS
(
SELECT DISTINCT RP.FRAMENO, MAX(PRC.DELIVEREDDATE) OVER(PARTITION BY RP.FRAMENO) FROM RT_REPAIR RP
LEFT JOIN RT_REPAIRPART P ON RP.REPAIRNO=P.REPAIRNO
LEFT JOIN RT_REPAIRPROCESS PRC ON RP.REPAIRNO=PRC.REPAIRNO
WHERE RP.STATUSCODE = ''AND VALUE(RP.DELETED,'') = ''
AND P.PARTNO LIKE '15400%' AND VALUE(P.ACTUALOUTQTY,0)-VALUE(P.RETURNEDQTY,0)>0
), TBACK(FRAMENO,EXPECTSTARTDATE,TASKID) AS
(
SELECT DEF.FRAMENO,DEF.EXPECTSTARTDATE,DEF.TASKID FROM RT_CALLTASKDEF DEF
WHERE DEF.EXPECTSTARTDATE >= '2014-12-01' AND DEF.EXPECTSTARTDATE<='2015-11-30'
), TIMEPERTASK (TASKID,CALLTIMES) AS
(
SELECT DEF.TASKID, COUNT(1) AS CALLTIMES
FROM RT_CALLTASKRECDT RECDT LEFT JOIN RT_CALLTASKDEF DEF ON RECDT.TASKID=DEF.TASKID
WHERE RECDT.ACTIONMETHOD='PH'
GROUP BY DEF.TASKID
), ABC(TASKID, EXPECTSTARTDATE) AS
(
SELECT TBACK.TASKID,TBACK.EXPECTSTARTDATE FROM TBACK LEFT JOIN FINISHMAINT ON TBACK.FRAMENO=FINISHMAINT.FRAMENO
WHERE DATE(FINISHMAINT.DELIVEREDDATE) >= TBACK.EXPECTSTARTDATE-7 DAYS AND DATE(FINISHMAINT.DELIVEREDDATE) <= TBACK.EXPECTSTARTDATE +30 DAYS
) SELECT MONTH(EXPECTSTARTDATE + 1 MONTH) AS MON, SUM(TIMEPERTASK.CALLTIMES) AS CALLTIMES FROM ABC INNER JOIN TIMEPERTASK ON ABC.TASKID=TIMEPERTASK.TASKID
GROUP BY MONTH(EXPECTSTARTDATE + 1 MONTH)
SQL 高级查询的更多相关文章
- SQL 高级查询(层次化查询,递归)
SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...
- SQL高级查询技巧
SQL高级查询技巧 1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重 ...
- SQL高级查询基础
1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...
- MYSQL SQL高级查询技巧
1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...
- SQL————高级查询
高级查询 --连接查询 select * from 表1,表2 ————形成笛卡尔积 select * from 表1,表2 where 表1.主键=表2.外键 ————主外键位置可以互换 --jo ...
- SQL高级查询
高级查询: 一.多表链接 1,普通查询 select * from 表名,表名 where 表名.列名 = 表名.列名 2,join链接 select * from 表名 join 表名 on 表名. ...
- SQL高级查询——50句查询(含答案) ---参考别人的,感觉很好就记录下来留着自己看。
--一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ---------------- ...
- SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open ...
- SQL高级查询——50句查询(含答案)
-一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ----------------- ...
- Oracle数据库——SQL高级查询
一.涉及内容 1.掌握SELECT语句的多表连接查询. 2.掌握SELECT语句的子查询. 二.具体操作 (一)根据Oracle数据库scott方案下的emp表和dept表,完成下列操作: 1.查询所 ...
随机推荐
- <span>和<a>的margin上下和padding上下不起作用的原因和解决
使用到了<span>和<a>标签,发现在样式里面直接写margin-top.margin-bottom和padding-top.padding-bottom都不起作用,页面样式 ...
- Android SDK安装Android4.0“冰激淋三明治”(IceCreamSandwich)教程(转载)
昨天,Google举行了发布会,发布了Nexus Prime手机和Android4.0-IceCreamSandwich手机系统.作为Google旗下Android的最新版本手机系 统,Android ...
- 回家前的挣扎——SQLite增删改查
引言 最后一天,公司就两个人,也不知道弄点什么,就在网上找了Sqlite的文档,看了看,这里也是现学现卖,给自己找点事做,感觉时间过得还是比较快的,不然焦急等待,滋味不好受啊. SQLite简介 SQ ...
- tcpdump 时报ServFail 0/0/1 (97)
ServFail 结合业务应该是dns server fail 0/0/1 1/0/0表示机器号/槽位号/子接口号 ...
- [Effective JavaScript 笔记] 第9条:始终声明局部变量
如果忘记将变量声明为局部变量,该变量将会隐式地转变为全局变量 function swap(a,i,j){ temp=a[i]; a[i]=a[j]; a[j]=temp; } 尽管该程序没有使用var ...
- UITapGestureRecognizer
UITapGestureRecognizer IOS的手势非常多, 但是特别容易其他视图起冲突的手势,要数UITapGestureRecognizer 于是有了gestureRecognizerSho ...
- Opencv Cookbook阅读笔记(四):用直方图统计像素
灰度直方图的定义 灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率). #include <open ...
- linux 使用 ionice 限制 Xen 虚拟机磁盘 IO
作为 VPS 服务商我们需要保证每个 VPS 公平的使用 host(服务器)的资源,避免某个 VPS 因为程序死循环.挂起.滥用等因素 “拖累” 其他 VPS,如果出现这个情况如何临时限制这个 VPS ...
- Linux运维相关目录
- Smarty s02
保留变量 方便使用php 不用assign {$smarty} get {$smarty.get.page} session {$smarty.session.user.name} server c ...