我一直在解决问题而且我被困住了。我有两张桌子:
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则列出表1中的Sname。
我目前所做的是:
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
这将给我总和,但我坚持如何获得S2和S5的名称,任何帮助将不胜感激。谢谢!
答案 0 :(得分: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#