开发者社区> 问答> 正文

SQL查询帮助-任务排序,分组和状态+日期条件问题

希望我能公正地解决问题,因为很难在标题中概括它!(建议欢迎在评论中提出) 对,所以这里是我的表: Tasks task_id (number) job_id (number) to_do_by_date (date) task_name (varchar / text) status (number) completed_date (date) 为了论证,让我们确定status的值: 1 = New 2 = InProgress 3 = Done 我在尝试执行时遇到的麻烦是创建一个可以拉回所有任务的查询: 其中任何一项任务job_id的status<>完成 除非a的所有任务job_id均已完成,但一个或多个任务completed_date的今天为a 按to_be_done_by日期排序,但将所有job_id任务分组在一起 因此,job_id首先显示下一个“ to_do_by_date”任务的 有关数据的一些信息: 一个job_id可以有任意数量的任务 这是我尝试获取的输出示例: task_id job_id to_do_by_date task_name status completed_date 1 1 yesterday - 3 yesterday 2 1 today - 3 today 3 2 now - 3 today 4 2 2 hours time - 2 {null} 5 2 4 hours time - 2 {null} 6 2 tomorrow - 1 {null} 7 3 3 hours time - 2 {null} 8 3 tomorrow - 1 {null} 9 3 tomorrow - 1 {null} 我使用的是Oracle 10g,因此对于Oracle或ANSI SQL的答案,或有关如何实现此方法的提示将是理想的,并且如果您的解决方案需要,我可以创建视图或将其包装在存储过程中以从应用程序中卸载逻辑。它。 这是一个SQL脚本,它将创建上面显示的示例测试数据: create table tasks (task_id number, job_id number, to_do_by_date date, task_name varchar2(50), status number, completed_date date); insert into tasks values (0,0,sysdate -2, 'Job 0, Task 1 - dont return!', 3, sysdate -2); insert into tasks values (1,1,sysdate -1, 'Job 1, Task 1', 3, sysdate -1); insert into tasks values (2,1,sysdate -2/24, 'Job 1, Task 2', 3, sysdate -2/24); insert into tasks values (3,2,sysdate, 'Job 2, Task 1', 3, sysdate); insert into tasks values (4,2,sysdate +2/24, 'Job 2, Task 2', 2, null); insert into tasks values (5,2,sysdate +4/24, 'Job 2, Task 3', 2, null); insert into tasks values (6,2,sysdate +1, 'Job 2, Task 4', 1, null); insert into tasks values (7,3,sysdate +3/24, 'Job 3, Task 1', 2, null); insert into tasks values (8,3,sysdate +1, 'Job 3, Task 2', 1, null); insert into tasks values (9,3,sysdate +1, 'Job 3, Task 3', 1, null); commit; 非常感谢您的帮助:o)

展开
收起
SONGYiiiD 2019-12-03 22:54:33 936 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载