要按最短开始日期排序,您可以创建一个窗口
min()
在
order by
条款:
SELECT Id, Day, Start_Date, End_Date
FROM Table
-- GROUP BY Id, Day, Start_Date, End_Date
ORDER BY
MIN(Start_Date) OVER(PARTITION BY Id),
Id,
Day,
Start_Date,
End_date
SELECT
条款让我怀疑你实际上不需要
GROUP BY
条款。我对查询的这一部分进行了评论,如果出于某种我无法想象的原因,您确实需要它,请随意添加它(如果您只需要删除一些重复项,请使用
SELECT DISTINCT
,这使得意图更加清晰)。
Demo on DB Fiddle
:
Id | Day | Start_Date | End_Date
:----------------------------------- | --: | :------------------ | :------------------
13D377E8-7674-4BE8-ACDF-472B634342D3 | 1 | 26/11/2019 00:00:00 | 26/11/2019 00:00:00
13D377E8-7674-4BE8-ACDF-472B634342D3 | 2 | 27/11/2019 00:00:00 | 27/11/2019 00:00:00
13D377E8-7674-4BE8-ACDF-472B634342D3 | 3 | 28/11/2019 00:00:00 | 28/11/2019 00:00:00
78C8F3AD-DE5B-48BD-849A-6E39C7EC6200 | 1 | 27/11/2019 00:00:00 | 27/11/2019 00:00:00
78C8F3AD-DE5B-48BD-849A-6E39C7EC6200 | 2 | 28/11/2019 00:00:00 | 28/11/2019 00:00:00
78C8F3AD-DE5B-48BD-849A-6E39C7EC6200 | 3 | 29/11/2019 00:00:00 | 29/11/2019 00:00:00
B73ECD8B-5760-4F92-94E5-CF5270AEE36B | 1 | 28/11/2019 00:00:00 | 28/11/2019 00:00:00
B73ECD8B-5760-4F92-94E5-CF5270AEE36B | 2 | 29/11/2019 00:00:00 | 29/11/2019 00:00:00
B73ECD8B-5760-4F92-94E5-CF5270AEE36B | 3 | 30/11/2019 00:00:00 | 30/11/2019 00:00:00