|
发表于 2024-1-2 15:33:50
|
显示全部楼层
首先,你可以使用 SUBSTRING 函数来截取字符串的前后几个字符。以下是实现此任务的 SQL 查询语句:
- SELECT
- SUBSTRING(Id, 1, 10) AS A,
- SUBSTRING(Id, LEN(Id) - 6, 7) AS B,
- Name,
- PWpId,
- RegDate
- FROM
- YourTableName
复制代码
这将返回一个结果集,包含 A 列、B 列、Name 列、PWpId 列和 RegDate 列。
接下来,我们需要按照 A 列进行分组,然后找出 B 列值最大的那行数据。可以使用 ROW_NUMBER() 函数以及 OVER 子句来实现此目标。以下是相应的 SQL 查询语句:
- WITH CTE AS (
- SELECT
- SUBSTRING(Id, 1, 10) AS A,
- SUBSTRING(Id, LEN(Id) - 6, 7) AS B,
- Name,
- PWpId,
- RegDate,
- ROW_NUMBER() OVER (PARTITION BY SUBSTRING(Id, 1, 10) ORDER BY B DESC) AS RN
- FROM
- YourTableName
- )
- SELECT
- A,
- B,
- Name,
- PWpId,
- RegDate
- FROM
- CTE
- WHERE
- RN = 1
复制代码
这将返回一个结果集,其中包含 A 列、B 列、Name 列、PWpId 列和 RegDate 列。只有在 B 列的值是每个 A 列分组中最大的情况下,才会返回该行数据。
请确保将 `YourTableName` 替换为你实际的表名。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|