在日常的SQL查詢中,我們需要對要查詢的數據進行事先處理,然后再在預先處理好的數據里面進行查詢。此時我們就需要用到臨時表了,將數據預先處理好放到臨時表里面,然后再在臨時表里根據我們需要的條件進行查詢。
假設我們有一個收入表 :incoming ,里面的字段分別為:id,name,amt,cur 我們要求每個人的amt換算成RMB之后的和。由於幣種有區別,我們需要事先將amt對應幣種按照匯率換算成人民幣再進行計算。
另一個表時xrt表,存放每個幣種對應人民幣牌價。
有兩種方法,一種是用with as方法,事先生成一個臨時表temp,然后再在這個臨時表里查。
with temp as ( select name, amt*(select cnyrate from xrt x where x.cur=i.cur ) from incoming ) select name, sum(amt) from incoming group by name
第二個方法是使用select方法
select name,sum(amt) from (select name,amt*(selct cnyrate from xrt x where x.cur=i.cur) from incoming) temp group by name;
