Sql 如何根据另一列将一列的值相加

Sql 如何根据另一列将一列的值相加,sql,join,Sql,Join,这是一个很难解释的问题,但可能(希望)是一个很容易解决的问题,所以我只想解释一下我试图实现的目标 我有一个表格,可以在其中输入一天的多个日志,每个日志作为一个单独的行,然后我有一个十进制作为另一列,我试图创建一个每天的摘要,类似于 1900年1月1日| | 5.5 当1900年1月1日有一个条目为2.5,主表中有一个条目为3,那么将当天的值相加 我唯一的问题是把日期加在一起,如果日期相同,我想 选择distinct date并将其与一个表连接,该表获取date所在的十进制列的总和。。。那就是我不

这是一个很难解释的问题,但可能(希望)是一个很容易解决的问题,所以我只想解释一下我试图实现的目标

我有一个表格,可以在其中输入一天的多个日志,每个日志作为一个单独的行,然后我有一个十进制作为另一列,我试图创建一个每天的摘要,类似于

1900年1月1日| | 5.5

当1900年1月1日有一个条目为2.5,主表中有一个条目为3,那么将当天的值相加

我唯一的问题是把日期加在一起,如果日期相同,我想

选择distinct date并将其与一个表连接,该表获取date所在的十进制列的总和。。。那就是我不太确定的地方


任何帮助都会很好!如果您的表名为logs,并且包含以下数据,请感谢

log_date     | value
1900-01-01   | 2.5
1900-01-01   | 3
那么你的问题是

SELECT sum(value) FROM logs GROUP BY log_date

如果您的表名为logs,则包含以下数据

log_date     | value
1900-01-01   | 2.5
1900-01-01   | 3
那么你的问题是

SELECT sum(value) FROM logs GROUP BY log_date
然后

然后


你要找的可能是一个GROUPBY子句

SELECT [ yourdatecol, ] sum(yourdecimalcol) FROM yourtable
  [ WHERE yourdatecol = .. ] 
     GROUP BY [ get_ymd_from_date(yourdatecol) | yourdatecol ] ;

使用这种语法,您将获得由相同的datecol值选择的行集的总和。如果日期包含H/M/ss,并且您需要的是每天的总和,则您可能还需要估计日期(例如,仅从中提取Y/M/D部分)。可选部分我用方括号括起来。

您要查找的可能是GROUP BY子句

SELECT [ yourdatecol, ] sum(yourdecimalcol) FROM yourtable
  [ WHERE yourdatecol = .. ] 
     GROUP BY [ get_ymd_from_date(yourdatecol) | yourdatecol ] ;
SELECT log_date,sum(value) FROM logs GROUP BY log_date
使用这种语法,您将获得由相同的datecol值选择的行集的总和。如果日期包含H/M/ss,并且您需要的是每天的总和,则您可能还需要估计日期(例如,仅从中提取Y/M/D部分)。可选部分我用方括号括起来。

试试这个:

SELECT log_date,sum(value) FROM logs GROUP BY log_date
SELECT CONVERT(VARCHAR, DateColumn, 103) AS OutputDate, SUM(ValueColumn) AS TotalValue
FROM YourTable
GROUP BY CONVERT(VARCHAR, DateColumn, 103) 
试试这个:

SELECT CONVERT(VARCHAR, DateColumn, 103) AS OutputDate, SUM(ValueColumn) AS TotalValue
FROM YourTable
GROUP BY CONVERT(VARCHAR, DateColumn, 103) 

我假设使用了DateTime,我们称之为logdate。我还假设另一个是十进制,我们称之为logdecimal

使用SQL server 2008,您可以执行以下操作(类型为date,没有时间部分):

选择
铸造(将日期记录为日期)为日期,
总和(对数十进制)为总和
从日志表
按类型分组(logdatetime作为日期)
使用不带日期类型的SQL server,可能类似于:

选择
将(varchar(10),logdate,101)转换为日期,
总和(对数十进制)为总和
从日志表
按转换分组(varchar(10),logdate,101)
你好,奥利


编辑:如果它是要分组为日期(不包括时间部分)的日期时间(包括时间部分),则此选项有效。看起来这个问题不是这样的。

我假设使用了DateTime,我们称之为logdate。我还假设另一个是十进制,我们称之为logdecimal

使用SQL server 2008,您可以执行以下操作(类型为date,没有时间部分):

选择
铸造(将日期记录为日期)为日期,
总和(对数十进制)为总和
从日志表
按类型分组(logdatetime作为日期)
使用不带日期类型的SQL server,可能类似于:

选择
将(varchar(10),logdate,101)转换为日期,
总和(对数十进制)为总和
从日志表
按转换分组(varchar(10),logdate,101)
你好,奥利


编辑:如果它是要分组为日期(不包括时间部分)的日期时间(包括时间部分),则此选项有效。看起来这个问题不是这样。

查找您可以使用“分组依据”。它是日期列还是日期时间列?查找您可以使用分组依据。是日期栏还是日期时间栏?太好了!我知道这比我想象的要容易,谢谢!完美的我知道这比我想象的要容易,谢谢!