2016-12-04 130 views
-4

我在數據庫中的表看起來像這種:-(一部開拓創新的一個包含超過5000條記錄)SQL或子查詢,如果可能,而無需使用功能

n_event_key n_txn_type_key  n_transaction_amount 
1234    4      6000 
1234    6      4000 
1234    6      500 
1234    4      600 
1234    4      200 
1235    4      3000 
1235    6      4000 
1235    4      500 
1235    6      1000 
1236    4      2000 
1236    6      2000 
1237    4      3500 
1238    6      2400 

我想這給了我下面的結果

查詢

(ⅰ)n_event_key其中

總(n_transaction_amount)爲n_txn_type_key(4)> n_txn_type_key(6)

n_event_key n_txn_type_key  total(n_transaction_amount) 
1234   4     6800 

(ⅱ)n_event_key

總(n_transaction_amount)爲n_txn_type_key(6)> n_txn_type_key(4)

n_event_key n_txn_type_key  total(n_transaction_amount) 
1235   6      5000 

(ⅲ)n_event_key

總(n_transaction_amount)爲n_txn_type_key(4)= n_txn_type_key (6)

n_event_key n_txn_type_key total(n_transaction_amount) 
1236     4     2000 
1236     6     2000 

(ⅳ)n_event_key存在的僅用於n_txn_type_key = 4

n_event_key n_txn_type_key  total(n_transaction_amount) 
1237    4      3500 

(V)n_event_key存在的只爲n_txn_type_key = 6

n_event_key n_txn_type_key  total(n_transaction_amount) 
1238    6     2400   
+0

GROUP BY with SUM()。 – jarlh

+0

,但它顯示了4和6的結果...... – nadeem

回答

0

你應該和和使用組,但在這之前,你應該根據n_txn_type_key創建兩個子查詢,然後比較:

select txn_type_4.n_event_key, txn_type_4.tran_amount from 
(
    select n_event_key, sum(n_transaction_amount) as tran_amount from TABLE_NAME where 
    n_txn_type_key = 4 group by n_event_key 
) txn_type_4 
inner join 
(
    select n_event_key, sum(n_transaction_amount) as tran_amount from TABLE_NAME where 
    n_txn_type_key = 6 group by n_event_key 
) txn_type_6 on txn_type_4.n_event_key = txn_type_6.n_event_key 
where txn_type_4.tran_amount > txn_type_4.tran_amount 

此查詢適用於n_txn_type_key(4)> n_txn_type_key(6)。通過改變where子句,你可以達到你想要的。