我會需要一個查詢,可以拉前100名記錄,其中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
我會需要一個查詢,可以拉前100名記錄,其中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
您可以使用此:
SELECT TOP 50 *
FROM sample_table
WHERE Name = 'House'
UNION ALL
SELECT TOP 50 *
FROM sample_table
WHERE Name = 'Plane'
'TOP'無效Oracle語法 – 2013-02-16 20:10:22
OK :)我錯過了標籤'Oracle'。但是如何降低贊成vs接受:) – 2013-02-16 21:58:51
您已經標記了甲骨文,但使用專用的T-SQL語法,不會在甲骨文工作,接受一個答案。假設您正在使用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;
或者[這](http://www.sqlfiddle.com/#!4/74f7d/22)如果OP更喜歡使用'聯盟所有' – 2013-02-16 20:46:14
@傑克杜格拉斯 - 謝謝! – 2013-02-16 20:49:07
..或者如果他在一個非常非常古老的Oracle版本。 – 2013-02-16 21:12:05
什麼是「前100條記錄」的意思,其含義是要排序,但你不指定什麼? (例如ID,Item_Code,Source,其他東西,或者你只是想每個50而不關心哪50個?) – 2013-02-16 20:44:02
你使用Oracle或SQL Server嗎?如果您使用SQL服務器,請更正您的標記,或者如果您使用Oracle,請從我的答案中刪除接受,因爲它不適用於Oracle。 – 2013-02-16 22:07:35