我的表名是 C_Payment_Service_Fee ,而且表中包含的数据
select top 10 * from c_payment_service_fee
amount crn_dt payment_mode
19.99 2015-08-11 23:06:58.877 CC
19.99 2015-05-11 13:30:59.603 CC
39.95 2016-06-29 10:26:09.380 CC
29.99 2015-09-13 22:22:57.703 CC
24.99 2016-04-15 14:59:22.130 CC
22.49 2014-08-29 15:09:39.230 CC
24.99 2013-01-15 15:51:22.097 CC
26.95 2016-07-06 10:26:04.507 CC
14.99 2011-12-15 17:53:17.527 CC
15.99 2014-04-09 11:51:27.377 CC
现在我需要从每年的1月1日到3月31日总和(金额)。
答案 0 :(得分:0)
DATEDIFF(dd, @from, @to)
这将给出两个日期之间的天数
答案 1 :(得分:0)
怎么样
<div id="mailPreviewTarget" style="padding: 10px; overflow: auto;">
Sample Text
<p></p>
<img src="http://.../track/0/0.png">
<div>
<a href="http://.../unsubscribe/0/0">Unsubscribe</a>
</div>
</div>
能让你更近一点吗?
答案 2 :(得分:0)
措辞&#34;每年&#34;有点不清楚 - 我不能告诉你是否要按年分组。
如果您只想一次性支付所有1月至3月的金额:
SELECT SUM(amount) AS total_amount
FROM c_payment_service_fee
WHERE MONTH(crn_dt) BETWEEN 1 AND 3;
如果您想分别查看每年的1月至3月总计,请添加年份和GROUP BY子句:
SELECT SUM(amount) AS total_amount, YEAR(crn_dt) as crn_yr
FROM c_payment_service_fee
WHERE MONTH(crn_dt) BETWEEN 1 AND 3
GROUP BY YEAR(crn_dt);
请注意,在WHERE子句中使用MONTH()函数会使查询成为非SARGable。 SQL Server无法在不提取每个crn_dt值然后对它们运行MONTH()的情况下评估WHERE子句。基础表越大,非SARGability的性能损失就越严重。