2017-05-03 63 views
0

我一直在解決一個問題,我卡住了。我有兩個表:SQL IF..ELSE方案

S# Sname StatusNum City 
s1 Smith 20 London     
s2 Jones 10 Paris      
s3 Blake 30 Paris      
s4 Clark 20 London     
s5 Adams 30 Athens  


S# P# J# QTY 
s1 p1 j1 200 
s1 p1 j4 700 
s2 p3 j1 400 
s2 p3 j2 200 
s2 p3 j3 200 
s2 p3 j4 500 
s2 p3 j5 600 
s2 p3 j6 400 
s2 p3 j7 800 
s2 p5 j2 100 
s3 p3 j1 200 
s3 p4 j2 500 
s4 p6 j3 300 
s4 p6 j7 300 
s5 p1 j4 100 
s5 p2 j2 200 
s5 p2 j4 100 
s5 p3 j4 200 
s5 p4 j4 800 
s5 p5 j4 400 
s5 p5 j5 500 
s5 p5 j7 100 
s5 p6 j2 200 
s5 p6 j4 500 

我需要從表2總結的數量,並列出他們,但也如果數量超過1000名單SNAME從表1

我所做過目前是:

Select SUM(qty) as total_sales, S# 
From SPJ 
Group by S#; 

其中給出:

total_sales S# 
900   s1 
3200  s2 
700   s3 
600   s4 
3100  s5 

這會給我的款項,但我停留在如何讓名s與S2和S5,任何幫助將不勝感激。謝謝!

回答

3

你可以加入的第一個表的派生表由你聚集的查詢,並使用case表達式顯示的名稱在銷售額大於1000:

select 
    t.S# 
    , case 
     when s.total_sales >= 1000 
     then t.SName 
     else '' 
     end as SName 
    , s.total_sales 
from (
    Select SUM(qty) as total_sales, S# 
    From SPJ 
    Group by S# 
    ) s 
    inner join table1 t 
    on s.S# = t.S# 
+0

哇,完美的作品!非常感謝! –

+0

@R_Lothbrok樂意幫忙! – SqlZim