在单独的 ID 中选择行,直到第一次出现给定值

Selecting Rows within Separate IDs until a first occurrence of given value

我尝试获取每个单独 ID 中的所有行,直到第一次出现给定值,在本例中 "CR" 但必须颠倒行的顺序。以下是数据在 table 上的存储方式:

ID    DebtMth    YearMth    Status   Balance
1         5      2015-02      DR      10.00
1         4      2015-03      DR      10.00
1         3      2015-04      CR      00.00
1         2      2015-06      DR      10.00
1         1      2015-07      DR      10.00
2        10      2011-01      DR      20.00
2         9      2011-02      DR      20.00
2         8      2011-03      CR      20.00
3        11      2012-02      DR      30.00
3        10      2012-03      DR      30.00
3         8      2012-05      CR      00.00
3         7      2012-06      CR      00.00
3         6      2012-07      DR      30.00

我需要颠倒顺序,使每个 ID 组中的最后一行成为第一行,依此类推。所以 table 将按如下方式排序。

ID    DebtMth    YearMth    Status   Balance
1         1      2015-07      DR      10.00
1         2      2015-06      DR      10.00
1         3      2015-04      CR      00.00
1         4      2015-03      DR      10.00
1         5      2015-02      DR      10.00
2         8      2011-03      CR      20.00
2         9      2011-02      DR      20.00
2        10      2011-01      DR      20.00
3         6      2012-07      DR      30.00
3         7      2012-06      CR      00.00
3         8      2012-05      CR      00.00
3        10      2012-03      DR      30.00
3        11      2012-02      DR      30.00

现在我需要每个 ID 组中的 select 行,直到状态为 'CR' 并排除第一行为 'CR' 的任何 ID。所以输出看起来像这样。

ID    DebtMth    YearMth    Status   Balance
1         1      2015-07      DR      10.00
1         2      2015-06      DR      10.00
3         6      2012-07      DR      30.00

我在连接到 Microsoft SQL2012 Server 的 Report Builder 3 中使用查询设计器。

如果有任何建议,我将不胜感激。

马丁

SELECT
    id , DebtMth , YearMth , Status , Balance 
FROM
(
    SELECT
        *
        , MAX(CASE WHEN status = 'CR' THEN YearMth END) OVER(PARTITION BY id) AS first_cr_yearMth
    FROM YourTable
) AS T
WHERE YearMth > first_cr_yearMth OR first_cr_yearMth IS NULL