SELECT DISTINCT 按字段的出现顺序对行进行排序

SELECT DISTINCT ordering rows by order of appearance of the field

我有这个数据

Id          Campo
----------- ----------
1           id_recibo
2           col_2
3           col_65
4           UNDCAP
5           id_recibo
6           col_2
7           col_65
8           UNDCAP

而且我需要做类似 SELECT DISTINCT 的事情,以出现的顺序获取数据,而不是默认获取的升序。

如果我做 SELECT DISTINCT 我得到这个:

campo
--------
col_2
col_65
id_recibo
UNDCAP

这里是代码:

IF OBJECT_ID('tempdb..#tmp') IS NOT NULL 
     DROP TABLE #tmp

CREATE TABLE #tmp
(
    Id INT IDENTITY,
    Campo VARCHAR(MAX)
)

INSERT INTO #tmp (Campo)
VALUES ('id_recibo'), ('col_2'), ('col_65'), ('UNDCAP'),
       ('id_recibo'), ('col_2'), ('col_65'), ('UNDCAP')

SELECT * FROM #tmp

SELECT DISTINCT campo FROM #tmp 

我需要的结果是这样的:

campo
----------
id_recibo
col_2
col_65
UNDCAP

我试过一些这样的,但它不起作用,因为顺序是可变的:

SELECT 
    A.Campo AS NuevoOrden
FROM
    (SELECT DISTINCT 
         CAMPO
     FROM 
         #tmp) A
ORDER BY NEWID()

我想你只是想要:

select campo
from t
group by campo
order by min(id);