sql - 使用sql server添加每月的所有金额

标签 sql sql-server

这是我的数据

date           amount
2017-07-10     15.00
2017-07-10     15.00
2017-07-28     25.00
2017-08-01     100.00
2017-08-12     15.00
2017-08-29     200.00
2017-09-18     105.00
2017-09-21     200.00
2017-09-23     25.00
2017-10-12     15.00
2017-10-14     500.00
2017-11-01     200.00
2017-11-02     200.00

我想按月添加,所以我们会得到什么,六月我总共得到 55 个,八月我将得到 315 个,九月 330 个,十月 515 个,十一月 400 个,过去没有金额的日期将为 0 如何我会这样做吗?

这是我的临时表代码:

create table #TempTable
    (month varchar(50),
    amount decimal(18,2))


insert into #TempTable (month)
SELECT TOP 12
DATENAME(MONTH, DATEADD(MONTH,ROW_NUMBER() OVER (ORDER BY object_id) - 1,0))
FROM sys.columns

create table #Data
    (date date,
    amount decimal(18,2))
  insert into #Data(date,amount) values('2017-07-10',15.00)
  insert into #Data(date,amount) values('2017-07-10',15.00)
  insert into #Data(date,amount) values('2017-07-28',25.00)
  insert into #Data(date,amount) values('2017-08-01',100.00)
  insert into #Data(date,amount) values('2017-08-12',15.00)
  insert into #Data(date,amount) values('2017-08-29',200.00)
  insert into #Data(date,amount) values('2017-09-18',105.00)
  insert into #Data(date,amount) values('2017-09-21',200.00)
  insert into #Data(date,amount) values('2017-09-23',25.00)
  insert into #Data(date,amount) values('2017-10-12',15.00)
  insert into #Data(date,amount) values('2017-10-14',500.00)
  insert into #Data(date,amount) values('2017-11-01',200.00)
  insert into #Data(date,amount) values('2017-11-02',200.00)

  select * from #Data
  select * from #TempTable
drop table #TempTable
drop table #Data
PS。只需更新#TempTable 并将总计放在上面即可,谢谢:)

最佳答案

使用下面的代码:

SELECT Res1.[Month]
         ,ISNULL(Res2.Amount,0)
  FROM #TempTable Res1
  LEFT JOIN
  (
  select DATENAME(MONTH,Res1.date) AS [Month]
         ,SUM(amount) AS Amount 
  from #Data Res1
  GROUP BY DATENAME(MONTH,Res1.date) 
  )Res2 ON Res2.[Month] = Res1.[Month]

关于sql - 使用sql server添加每月的所有金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47077137/

相关文章:

php - CakePHP:编号分页结果

mysql - 从预排序表中选择

sql - 查看是什么导致了 SQL 触发器?

c# - 24 小时后的 asp.net c# 网站表单操作

sql - 列出 SQL 中两个日期之间的所有工作日期

sql - 在一台 SQL Server 上拥有 1000 个 SQL 用户/登录名是否需要考虑性能问题?

sql - pgSQL FULL OUTER JOIN 'WHERE' 条件

sql-server - 在 LINQ to SQL for NOLOCK 中使用 TransactionScope 更改隔离级别是否会影响连接?

java - 如何对使用该程序的人隐藏 MySQL 数据库的密码

sql-server - 将 logstash 与 Sql Server 一起使用