2013-02-16 6 views
-1

"house"라는 값을 가진 "Name"이라는 열에서 50이어야하고 동일한 열에서 다른 50 개 레코드를 가져올 수있는 쿼리가 필요합니다. 가치 "비행기"의 기록. 다음은 하위 레코드가있는 TOP 레코드 sql

그것의 샘플 테이블 :

ID Item_Code Name Source 
1 987   House PG 
2 988   House TES 
3 989   Plane ASD 
4 990   House WAL 
5 991   Plane PG 
6 992   Plane TES 
+1

사용할 수 있습니다 사용하고 있다고 가정하면 의미-암시는 당신이 순서를 원하지만 당신이 무엇을 지정하지 않는다는 것입니다? (예 : ID, Item_Code, Source, 다른 것 또는 50 개를 원하고 50 개를 상관하지 않습니까?) –

+2

Oracle 또는 SQL Server를 사용합니까? SQL 서버를 사용하는 경우 태그를 수정하거나 Oracle을 사용하는 경우 내 대답에서 accept를 제거하십시오. 오라클에서 작동하지 않기 때문입니다. –

답변

-7

이 사용할 수 있습니다 : 당신은 오라클 태그하지만 오라클에서 작동하지 않습니다 독점 TSQL 구문을 사용하여 대답을 수락

SELECT TOP 50 * 
FROM sample_table 
WHERE Name = 'House' 
UNION ALL 
SELECT TOP 50 * 
FROM sample_table 
WHERE Name = 'Plane' 
+5

'TOP'이 유효하지 않습니다. 오라클 구문 –

+0

OK :) 태그'Oracle'을 놓쳤습니다. 그러나 downvotes vs accept에 대해서는 어떻게 생각하십니까? –

4

. 당신은 다음 태그로 오라클은 당신이 "100 기록을"무엇

SELECT "ID", 
     "Item_Code", 
     "Name", 
     "Source" 
FROM (SELECT YourTable.*, 
       ROW_NUMBER() OVER (PARTITION BY "Name" ORDER BY "Item_Code") rn 
     FROM YourTable 
     WHERE "Name" IN ('House', 'Plane')) 
WHERE rn <= 50; 

SQL Fiddle

+4

OP가'UNION ALL'을 선호한다면 [this] (http://www.sqlfiddle.com/#!4/74f7d/22) –

+0

@ JackDouglas - 고마워요! –

+0

.. 그가 매우 오래된 오라클 버전에 있다면. –

관련 문제