Tsql 选择不同的子字符串值
我有一个类似于MAC地址的字段,第一部分是组ID,第二部分是序列号。我的字段是字母数字,长度为5位,前3位是组ID 我需要一个查询,该查询按字典顺序为我提供所有不同的组ID和第一个序列号。以下是示例数据:Tsql 选择不同的子字符串值,tsql,substring,distinct,Tsql,Substring,Distinct,我有一个类似于MAC地址的字段,第一部分是组ID,第二部分是序列号。我的字段是字母数字,长度为5位,前3位是组ID 我需要一个查询,该查询按字典顺序为我提供所有不同的组ID和第一个序列号。以下是示例数据: ID ----- X4MCC X4MEE X4MFF V21DD 8Z6BB 8Z6FF 期望输出: ID ----- X4MCC V21DD 8Z6BB 我知道我可以选择不同的子字符串(ID,1,3),但我不知道如何按字典顺序获取第一个子字符串。另一种方法似乎与gbn的查询成本相同: S
ID
-----
X4MCC
X4MEE
X4MFF
V21DD
8Z6BB
8Z6FF
期望输出:
ID
-----
X4MCC
V21DD
8Z6BB
我知道我可以选择不同的子字符串(ID,1,3),但我不知道如何按字典顺序获取第一个子字符串。另一种方法似乎与gbn的查询成本相同:
SELECT
ID
FROM
(
SELECT
ID,
ROW_NUMBER() OVER (PARTITION BY SUBSTRING(ID, 1, 3) ORDER BY ID) AS rn
FROM MyTable
) oops
WHERE
rn = 1
SELECT MIN(id)
FROM your_table
GROUP BY SUBSTRING(id, 1, 3);
我会根据相似的组id进行分组,并根据行id选择第一个。在我处理查询时只是一个提示。这告诉我在何处附近的语法不正确。我复制并粘贴,然后将字段名和表更改为真实的表。。。检查了打字错误,我不知道我做错了什么。如果我只运行内部查询,它将运行fine@SupremeDud派生表上需要一个别名。@Mikael Eriksson:oops,我匆忙中错过了。Thanks@gbn不客气。我真的很喜欢你的别名。在一个80%的表名都是MyTable或YourTable的世界(SO),表别名
oops
非常合适。