Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle-如何对不同的行进行排序?_Sql_Oracle - Fatal编程技术网

Sql Oracle-如何对不同的行进行排序?

Sql Oracle-如何对不同的行进行排序?,sql,oracle,Sql,Oracle,我试图先对记录进行排序,然后使用oracle上的单个查询对它们进行区分(区分PersonID,但获取整行内容时不使用重复的PersonID) 在示例中:按记录类型排序(首先是p),然后获取不同的PersonID列表 情况1的预期结果: (1,'John', 'Doe', 2,'P' ); (2,'Scot', 'Mic', 1,'P' ); 情况2的预期结果: (1,'John', 'Doe', 1,'S' ); (2,'Scot', 'Mic', 1,'P' ) Sql: 我想你需要的

我试图先对记录进行排序,然后使用oracle上的单个查询对它们进行区分(区分PersonID,但获取整行内容时不使用重复的PersonID)


在示例中:按记录类型排序(首先是p),然后获取不同的PersonID列表
情况1的预期结果:

(1,'John', 'Doe', 2,'P' );
(2,'Scot', 'Mic', 1,'P' );

情况2的预期结果:

(1,'John', 'Doe', 1,'S' );  
(2,'Scot', 'Mic', 1,'P' )
Sql:


我想你需要的是一个分析性的
行号()

SELECT PersonID, LastName, FirstName, RecordId, RecordType
FROM   (SELECT PersonID, LastName, FirstName, RecordId, RecordType,
               ROW_NUMBER() OVER (PARTITION BY PersonID ORDER BY RecordType ASC) AS rn
        FROM   test_records) t
WHERE  rn = 1

您正在使用什么RDBMS?该问题当前标记为,但也标记为,表示使用MS SQL Server或Sybase。如果您使用的是Oracle(如本文所述),则应使用
varchar2()
,而不是
varchar()
。我正在删除
tsql
标记,因为它(通常)不用于Oracle数据库。
SELECT PersonID, LastName, FirstName, RecordId, RecordType
FROM   (SELECT PersonID, LastName, FirstName, RecordId, RecordType,
               ROW_NUMBER() OVER (PARTITION BY PersonID ORDER BY RecordType ASC) AS rn
        FROM   test_records) t
WHERE  rn = 1