Ern*_*nst 7 grouping sql-server-2000
我有一个表格,其中列a不一定具有不同的值,列b具有多个不同值的每个值.我想得到一个结果,每个值只出现一次,并得到a的第一个找到的值为a的值.我如何在sql server 2000中执行此操作?
示例表:
a b
1 aa
1 bb
2 zz
3 aa
3 zz
3 bb
4 bb
4 aa
Run Code Online (Sandbox Code Playgroud)
通缉结果:
a b
1 aa
2 zz
3 aa
4 bb
Run Code Online (Sandbox Code Playgroud)
另外,我必须补充一点,b列中的值都是文本值.我更新了示例以反映这一点.谢谢
;with cte as
(
select *,
row_number() over(partition by a order by a) as rn
from yourtablename
)
select
a,b
from cte
where rn = 1
Run Code Online (Sandbox Code Playgroud)
SQL不知道按表行排序.您需要在表结构中引入顺序(通常使用id列).也就是说,一旦你有一个id列,它就很容易了:
SELECT a, b FROM test WHERE id in (SELECT MIN(id) FROM test GROUP BY a)
Run Code Online (Sandbox Code Playgroud)
使用内部SQL Server函数可能有一种方法可以做到这一点.但是这个解决方案是可移植的,并且任何知道SQL的人都更容易理解.