这是我的代码
SELECT sum(qty) as "sumqty", shipdate, groupnumber
from test
where (shipdate = #5/30/2014# and groupnumber = "A30") OR ( shipdate #5/31/2014# and groupnumber ="A31")
group by shipdate, groupnumber
order by sum(qty) desc;
有没有办法缩短where子句?因为我想添加更多的shipdate和groupnumber组合。
答案 0 :(得分:2)
如果我理解正确,您的问题不是关于当前查询,而是关于扩展查询以包含shipdate
和groupnumber
的更多组合。显然,如果你只需要添加更多这样的组合,那么添加它们并不是什么大不了的事。但是,如果您需要添加许多更多此类组合,请考虑使用连接。
你还没有说过你正在使用哪个数据库服务器和版本,所以我必须尝试一般。
shipdate
和groupnumber
列使用WHERE EXISTS
子句:
SELECT sum(qty) as "sumqty", shipdate, groupnumber
from test
where exists (
select shipdate,groupnumber
from #Temp_Table as tt
where tt.shipdate = test.shipdate and tt.groupnumber = test.groupnumber)
group by shipdate, groupnumber
order by sum(qty) desc;
答案 1 :(得分:-1)
删除所有出现的" test。"前缀,因为查询中有一个表。 您可以使用所选字段的短别名。
答案 2 :(得分:-1)
我会创建一个存储过程,然后将不同的发货日期和组号传递给它,然后查询将成为
SELECT sum(qty) as "sumqty", shipdate, groupnumber
from test
where (shipdate = @ShipDate and groupnumber = @GroupNumber)
group by shipdate, groupnumber
order by sum(qty) desc;
如果您需要为多组ShipDate / GroupNumber组合获取结果集,则可以根据您的要求将结果统一为UNION或UNION。
请注意,这不是解决此问题的唯一方法,如果您发现需要查询大量组合,常见的表表达式甚至动态SQL可能会表现得更好