使用JOINS编写查询

时间:2015-04-17 04:52:22

标签: sql join

select 
    store, sum(value) 
from 
    rms.sa_tran_head 
where
    store_day_seq_no in (select store_day_seq_no 
                         from rms.sa_store_day 
                         where store in (3003)
                           and business_date = '01-JAN-2015') 
    and tran_type in ('SALE', 'RETURN') 
group by 
    store;

如何使用JOINS编写上述查询..

SELECT 
    sd.store, 
    SUM(TH.VALUE) AS GROSS , 
    SUM(ti.qty) AS QTY
FROM rms.sa_tran_head AS th
    JOIN rms.sa_store_day AS sd 
        ON th.store_day_seq_no = sd.store_day_seq_no
    JOIN rms.sa_tran_item AS ti
        ON ti.tran_seq_no = th.tran_seq_no
WHERE sd.store in (3003) --in (3003) use in if more than 1 value
    AND sd.business_date = '01-JAN-2015'
    AND th.tran_type IN ('SALE','RETURN') 
GROUP BY 
    sd.store;

当我添加另一个表的其他列时,它显示不同的值......

2 个答案:

答案 0 :(得分:2)

我认为store_day_seq_no表是rms.sa_store_day的FK,而JOIN的查询是这样的,

SELECT 
    sd.store, 
    SUM(sd.value) AS [Sum]
FROM rms.sa_tran_head AS th
    JOIN rms.sa_store_day AS sd 
        ON th.store_day_seq_no = sd.store_day_seq_no
WHERE 
    sd.store = 3003 --in (3003) use in if more than 1 value
    AND sd.business_date = '01-JAN-2015'
    AND th.tran_type IN ('SALE','RETURN') 
GROUP BY 
    sd.store;

答案 1 :(得分:1)

我认为这没问题。

SELECT 
    t1.store,
    SUM(t1.Value) AS Sum_Value
FROM rms.sa_tran_head t1
INNER JOIN sa_store_day t2 ON t1.store_day_seq_no = t2.store_day_seq_no 
WHERE t2.store IN ( 3003 )
  AND t2.business_date = '01-JAN-2015'
  AND t1.tran_type IN ( 'SALE' , 'RETURN' ) 
GROUP BY t1.store