Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 选择唯一的记录_Sql_Oracle_Greatest N Per Group - Fatal编程技术网

Sql 选择唯一的记录

Sql 选择唯一的记录,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,我正在使用一个大约有50列和100000行的桌子 其中一列称为TypeID,有10个可能的值: 1索尔10 可以有10000条TypeID=1的记录,10000条TypeID=2的记录,依此类推 我想运行一个SELECT语句,它将返回每个不同类型ID的1条记录 大概是 TypeID JobID Language BillingDt etc ------------------------------------------------ 1 123

我正在使用一个大约有50列和100000行的桌子

其中一列称为TypeID,有10个可能的值:

1索尔10

可以有10000条TypeID=1的记录,10000条TypeID=2的记录,依此类推

我想运行一个SELECT语句,它将返回每个不同类型ID的1条记录

大概是

TypeID    JobID    Language    BillingDt    etc
------------------------------------------------
1         123      EN          20130103     etc
2         541      FR          20120228     etc
3         133      FR          20110916     etc
4         532      SP          20130822     etc
5         980      EN          20120714     etc
6         189      EN          20131009     etc
7         980      SP          20131227     etc
8         855      EN          20111228     etc
9         035      JP          20130615     etc
10        103      EN          20100218     etc
我试过:

SELECT DISTINCT TypeID, JobID, Language, BillingDt, etc
但这会产生多个具有相同值的TypeID行。我得到一大堆“4”,“10”等等

这是我正在使用的ORACLE数据库

如有任何建议,将不胜感激;谢谢

您可以使用来获得每组前n名:

SELECT  TypeID, 
        JobID, 
        Language, 
        BillingDt, 
        etc
FROM    (   SELECT  TypeID, 
                    JobID, 
                    Language, 
                    BillingDt, 
                    etc,
                    ROW_NUMBER() OVER(PARTITION BY TypeID ORDER BY JobID) RowNumber
            FROM    T
        ) T
WHERE   RowNumber = 1;

您可能需要更改
ORDER BY
子句以满足您的需求,因为您没有说过如何为每个TypeID选择一行,我不得不猜测

WITH RankedQuery AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY TypeID ORDER BY [ordercolumn] DESC) AS rn
   FROM         [table]
)
SELECT *
FROM RankedQuery
WHERE rn = 1;

这将返回每个类型id的顶行,您可以添加一个订单,如果您想要一个特定的行,而不仅仅是任何一行。

如果是Oracle,为什么
MySQL
tag?但是每个不同类型id的哪一条记录?@raina77ow,我的错误,建议弹出了MySQL,我一定是看错了并点击了它。分组给我错误。我将进一步调查,看看问题在哪里。很可能我的某些地方格式不好。@Moob,没关系。任何一行都可以,我只需要一个样本。