我知道这听起来有点傻,但截至目前我需要一个解决方案。假设我有一张桌子:
userid | category
-------+---------
derkv2 | Batch
markj | HTFS
marjk | TERMK
如何返回唯一行,只获取用户所属的第一个类别? 所以它看起来像:
userid | category
-------+---------
markj | HTFS
derkv2 | BATCH
答案 0 :(得分:0)
您必须完全标识要检索的每一行。假设您的桌子精心制作并具有独特的PK,那么您可以沿着这些方向做点什么:
select
*
from
table
where
pk in (select min(pk) from table group by userid)
答案 1 :(得分:0)
我会使用分区。让我们聚合而不撕开表格。将分区添加到源表中,它将成为该过程中的唯一约束。
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 -
等