TOP记录与子顶级记录sql

时间:2013-02-16 14:20:13

标签: sql oracle

我需要一个可以提取前100条记录的查询,其中50条记录必须来自名为“Name”的列,其值为“house”,而在同一列中则另外50条记录的值为“plane”。

下面是它的示例表:

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

2 个答案:

答案 0 :(得分:4)

您已标记Oracle但使用专有的TSQL语法接受了答案,该语法在Oracle中无效。假设您使用Oracle作为标记,那么您可以使用

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

答案 1 :(得分:-7)

您可以使用:

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