我正在使用具有约50个列和100,000行的表。
称为TypeID的一列有10个可能的值:
1时10。
可以有10,000条TypeID = 1的记录,以及10,000条TypeID = 2的记录,依此类推。
我想运行一个SELECT语句,该语句将返回每个不同TypeID的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数据库。
任何建议将不胜感激; 谢谢!
您可以使用ROW_NUMBER()获得每个组的前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选择一行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句