2017-09-26 65 views
-2
Emp_id, sal, age, exp 
1  2 21 9 
2  2 21 9 
3  2 22 9 
4  2 33 9 
5  2 33 10 


select sum(sal) from emp_table where age in (21,22,33,...); 

Need to add some condition 
for age 21 No condition 
for age 22 No condition 
for age 33 exp > 10; 

所需的輸出:SUM(SAL):8 我怎麼能在Oracle中實現這一單查詢的Oralce凡克勞斯在查詢

+0

添加一些示例表數據和預期結果。 (如格式化文本,而不是圖像) – jarlh

+0

爲什麼IN如此重要? – jarlh

+0

年齡參數是動態的,這就是爲什麼 –

回答

0

你需要用的線東西分裂IN語句:

select sum(sal) from emp_table where (age = 21 AND some_condition) OR age = 22 OR (age = 33 AND exp>10) 
+0

我們可以使用IN查詢來做到這一點嗎? –

1

你的條件可以改寫成如下的形式:

select sum(sal) 
from emp_table 
where age = 21 or age = 22 or age = 33; 

因此,如果您需要任何後續條件添加到每個age表達,那麼你將其添加到括號,並使用AND例如像這樣

select sum(sal) 
from emp_table 
where age = 21 or 
     age = 22 or 
     (age = 33 AND exp > 10); 

編輯:如果你想在保持那麼我會做到以下幾點:

SELECT sum(sal) 
FROM emp_table 
WHERE age IN (21, 22) OR 
     (age = 33 AND exp > 10); 
+0

我們可以使用IN查詢來做到這一點嗎? –

2
SELECT sum(sal) 
FROM emp_table 
WHERE age IN (21, 22) OR 
(age = 33 AND exp > 10); 

試試這個。