我知道这听起来有点傻,但现在我需要一个解决方案。假设我有一张桌子:
userid | category
-------+---------
derkv2 | Batch
markj | HTFS
marjk | TERMK
如何返回唯一行,只获取用户所属的第一个类别?因此,它将看起来像:
userid | category
-------+---------
markj | HTFS
derkv2 | BATCH
发布于 2010-11-26 11:13:27
您必须完全标识要检索的每一行。假设您的表是精心制作的,并且有一个唯一的PK,那么您可以按照以下方式做一些事情:
select
*
from
table
where
pk in (select min(pk) from table group by userid)
发布于 2013-04-12 04:59:21
我会使用分区。让我们在不撕裂表格的情况下进行聚合。将分区添加到源表中,它将成为进程中的唯一约束。
select col1,
col2,
row_number() OVER (Partition BY col1 order by col2) ID
From dbo.Example
结果
--x--|--y--
--A--|--1--
--A--|--2--
--A--|--3--
--B-|--1--
--C--|--1--
--C--|--2--
等
https://stackoverflow.com/questions/4282260
复制相似问题