我的实际表比这更深入,但让我们假设我有一个像这样的表...
Record_ID Due_Date Style
========= ========== =====
100 2018-01-01 10
101 2018-01-02 20
102 2018-01-03 12
103 2018-01-04 10
104 2018-01-05 20
105 2018-01-06 12
106 2018-01-02 10
我想要的是一个查询,该查询将确定第一个到期日,然后将其与其他所有具有相同样式的记录一起返回,而与到期日无关。然后应在下一个其他样式的到期日期之后继续操作。成功的输出将按此顺序...
Record_ID Due_Date Style
========= ========== =====
100 2018-01-01 10
106 2018-01-02 10
103 2018-01-04 10
101 2018-01-02 20
104 2018-01-05 20
102 2018-01-03 12
105 2018-01-06 12
如果仅查看每个Style
的第一条记录,则输出是有序的。
查看记录100,101,102
如果查看给定Style
的所有记录,则输出将按日期排序。
查看记录100,106,103
如果仅查看Style
列,则输出将所有类似的Style
在一起,但不一定是数字顺序。
通过具有此输出,可以很容易地看出Style
首先应该是什么,但是同一Style
中的所有记录将在继续进行下一个Style
之前完成< / p>
答案 0 :(得分:2)
这里是使用子查询的一个选项,该子查询使用相应的min(duedate)
创建样式的分组。然后,您join
回到原始表并order by
那个日期。
select *
from yourtable t join (
select min(duedate) minduedate, style
from yourtable
group by style) t2 on t.style = t2.style
order by t2.minduedate, t.duedate