我有一个名字和电话号码的列表。两列都有重复
使用以下代码,我按电话对表进行排序,但如果有任何名称重复,则将它们聚集在一起:SELECT
a.[name],
a.phone
FROM
Tests.dbo.sort_test6 AS a
JOIN
(
SELECT
[name],
MIN(phone) AS min_phone_by_name
FROM
Tests.dbo.sort_test6
GROUP BY
[name]
) AS dt
ON a.[name] = dt.[name]
ORDER BY min_phone_by_name, [name], phone
结果非常好;这些都是按照phone的顺序排列的,但是如果有任何重复的名字是聚集在一起的:
<表类>名称 手机 tbody><<tr>前夕 098 前夕 365 前夕 789 Nack 098 亚当123 亚当345 亚当346 Oiu 145 汤姆145 网卡 146 詹姆斯156 山姆177 山姆443 山姆777 蒂姆256 256 莎拉 333 Dav 345 表类>
有几种方法可以做到这一点。以下是我对这个问题的看法。此外,你还有"大卫"。根据你的解释,在你想要的输出中的错误位置。
with SortedResults as
(
select *
, RowNum = ROW_NUMBER() over (partition by name order by phone)
from SortDemo
)
select sd.name
, sd.phone
from SortedResults sr
join SortDemo sd on sd.name = sr.name
where sr.RowNum = 1
order by sr.phone
, sd.name