0

我必须在另一列的一组行中显示一列第一行的列表

基本查询:

SELECT * FROM Table_Example cxp

我的桌子

    |plan   |code   |des   |month   |
----+-------+-------+------+--------+
    | 150B  | Alpha | etc.a| 1      |
----+-------+-------+------+--------+
    | 150B  | Beta  | etc.b| 2      |
----+-------+-------+------+--------+
    | 2600C | Alpha | etc.a| 6      |
----+-------+-------+------+--------+
    | 2600C | Alpha | etc.a| 7      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 3      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 7      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 9      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 2      |
----+-------+-------+------+--------+
    | 2600C | Gama  | etc.c| 4      |
----+-------+-------+------+--------+
    | 2600C | Gama  | etc.c| 12     |
----+-------+-------+------+--------+
    | 2600C | Delta | etc.d| 22     |
----+-------+-------+------+--------+
    | 42F   | Alpha | etc.a| 15     |

预期结果

    |plan   |code   |des   |month   |
----+-------+-------+------+--------+
    | 2600C | Alpha | etc.a| 6      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 3      |
----+-------+-------+------+--------+
    | 2600C | Gama  | etc.g| 4      |
----+-------+-------+------+--------+
    | 2600C | Delta | etc.d| 22     |
----+-------+-------+------+--------+

成绩单结果:具有变量“@plan”,仅显示与该值匹配的行(例如:如果“@plan”为 2600C)并且在该组行中,仅显示每个不同“代码”值的第一行

我试图做什么

SELECT * FROM Table_Example cxp WHERE plan = '2600C'

    |plan   |code   |des   |month   |
----+-------+-------+------+--------+
    | 2600C | Alpha | etc.a| 6      |
----+-------+-------+------+--------+
    | 2600C | Alpha | etc.a| 7      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 3      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 7      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 9      |
----+-------+-------+------+--------+
    | 2600C | Beta  | etc.b| 2      |
----+-------+-------+------+--------+
    | 2600C | Gama  | etc.c| 4      |
----+-------+-------+------+--------+
    | 2600C | Gama  | etc.c| 12     |
----+-------+-------+------+--------+
    | 2600C | Delta | etc.d| 22     |

但是我不能只得到我在子查询中考虑的每个不同“代码”的第一行,但我尝试了很多,但我无法得到正确的结果,或者它只返回“代码”列而没有其他列,如:

|code   |
+-------+
| Alpha |     
+-------+
| Beta  |       
+-------+
| Gama  |      
+-------+
| Delta |      
+-------+
4

1 回答 1

0

您可以使用row_number()

select * from
(
  SELECT *,row_number() over(partition by code order by month) as rnk
  FROM Table_Example cxp
  WHERE plan = '2600C'
)A where rnk=1
于 2020-11-01T03:50:55.530 回答