在 Where 中使用子查詢
select 中還有另一個 select,這樣的寫法稱為「子查詢」。
子查詢當中,內側的 select 會先被執行,然後其結果將會傳給母查詢進行處理。
1
2
3
4
--取得販賣單價最高之商品的商品名稱
select [商品名稱]
from [商品清單]
where [販賣單價]=(select max([販賣單價]) from [商品清單])
在這範例中,先從商品清單中取得販賣單價的最大值,然後將擁有與該值相同之販賣單價的商品名稱輸出。
在 Form 中使用子查詢
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--請輸出商品別的販賣單價合計與全部商品之販賣單價合計的比率(%)
--這裡的購買單價合計是指:購買單價*數量
select T2.商品名稱, T2.商品別總計, (T2.商品別總計/T1.總計)*100 '%'
from
(
--總計
select sum([數量]*B.販賣單價) 總計
from [販賣資料] A
join [商品清單] B on B.商品ID = A.商品ID
) T1,
(
--計算商品別總數量、商品別總計
select B.商品名稱, sum(A.數量) 商品別總數量, (B.販賣單價 * sum(A.數量)) 商品別總計
from [販賣資料] A
right join [商品清單] B on B.商品ID = A.商品ID
group by B.商品名稱,B.販賣單價
) T2
執行結果
1
2
3
4
5
6
7
8
9
10
11
商品名稱 商品別總計 %
數位相機 NULL NULL
HUB 35000 0.756700
網路卡 40000 0.864800
印表機 25000 0.540500
掃描器 30000 0.648600
17吋螢幕 250000 5.405400
19吋螢幕 285000 6.162100
15吋液晶螢幕 720000 15.567500
桌上型電腦 1080000 23.351300
筆記型電腦 2160000 46.702700