如何在没有聚合的情况下按列分组?

How to group by a column without aggregate?

我有一个 table“table1”,如下所示,其中包含有关捐款的数据,例如捐款承诺及其付款等。这些将包括承诺,他们的承诺付款以及还有个人付款捐款,如最后 3 行所示:

ID     Type            Amount     Date             ParentID       Application
-----------------------------------------------------------------------------
10     Pledge          50000      1/2/2020         50             Donation
20     Pledge          20000      5/2/2019         100            Donation
30     Payment         10000      2/1/2020         50             Pledge
40     Payment         15000      3/2/2020         50             Pledge
50     Payment         25000      4/5/2020         50             Pledge
60     Payment         10000      5/9/2019         100            Pledge
70     Payment         10000      6/8/2019         100            Pledge
80     Payment         5000       10/5/2020        200            Donation
90     Payment         9000       12/5/2019        250            Donation
100    Payment         8000       1/1/2020         230            Donation

我正在尝试按 Date 按 DESC 顺序排序,如下所示:

SELECT * 
FROM table1
ORDER BY 
    Date DESC, 
    CASE WHEN Type = 'Pledge' THEN 1 ELSE 0 END DESC,
    CASE WHEN Type = 'Payment' AND Application = 'Pledge' THEN 1 ELSE 0 END DESC,
    Amount

这似乎是 return 想要的结果,但我还想确保所有相关交易始终彼此相邻分组。

例如,所有相关交易将始终具有与 table 示例中相同的 ParentID。我尝试在 ORDER BY 子句之前添加一个 GROUP BY ParentID,但出现错误“未包含在聚合函数中”。

有没有其他不使用 GROUP BY 的方法,这样我就可以像现在一样使用 ORDER BY,而且还添加逻辑以确保基于 ParentID 的所有相关交易始终在下一个分组对彼此?

期望的结果如下所示。基本上,认捐应该始终排在第一位,然后按照日期降序顺序进行相应的付款。任何不相关的个​​人付款然后按日期的降序排列:

    ID     Type            Amount     Date             ParentID       Application
    -----------------------------------------------------------------------------
    10     Pledge          50000      1/2/2020         50             Donation
    50     Payment         25000      4/5/2020         50             Pledge
    40     Payment         15000      3/2/2020         50             Pledge
    30     Payment         10000      2/1/2020         50             Pledge
    20     Pledge          20000      5/2/2019         100            Donation
    70     Payment         10000      6/8/2019         100            Pledge        
    60     Payment         10000      5/9/2019         100            Pledge
    80     Payment         5000       10/5/2020        200            Donation
    100    Payment         8000       1/1/2020         230            Donation
    90     Payment         9000       12/5/2019        250            Donation

ORDER BY 中使用 parentid

...
ORDER BY parentid ASC,
         type DESC,
         date DESC
...