【发布时间】:2016-12-28 07:37:20
【问题描述】:
我正在从表中计算历史金额(例如 2015-2016、2014-2015 等)。我想寻求专业知识,如果批量执行或多次重复查询更有效按所需日期过滤。
提前致谢!
选项 1:
select
id,
sum(case when year(getdate()) - year(txndate) between 5 and 6 then amt else 0 end) as amt_6_5,
...
sum(case when year(getdate()) - year(txndate) between 0 and 1 then amt else 0 end) as amt_1_0,
from
mytable
group by
id
选项 2:
select
id, sum(amt) as amt_6_5
from
mytable
group by
id
where
year(getdate()) - year(txndate) between 5 and 6
...
select
id, sum(amt) as amt_1_0
from
mytable
group by
id
where
year(getdate()) - year(txndate) between 0 and 1
【问题讨论】:
-
好吧,你可以试试这两个版本,然后自己看看……我赌的是版本 1。
标签: sql sql-server processing-efficiency