-1

我需要一个可以提取前 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
4

2 回答 2

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小提琴

于 2013-02-16T20:37:23.233 回答
-7

你可以使用这个:

SELECT TOP 50 *
FROM sample_table
WHERE Name = 'House'
UNION ALL
SELECT TOP 50 *
FROM sample_table
WHERE Name = 'Plane'
于 2013-02-16T14:34:27.653 回答