我需要一个可以提取前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
答案 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;
答案 1 :(得分:-7)
您可以使用:
SELECT TOP 50 *
FROM sample_table
WHERE Name = 'House'
UNION ALL
SELECT TOP 50 *
FROM sample_table
WHERE Name = 'Plane'