0

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

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

1900 年 1 月 1 日 | | 5.5

当 1900 年 1 月 1 日的条目为 2.5 时,主表中有一个条目为 3,因此将当天的值加在一起?

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

选择不同的日期并将其与一个表格连接起来,该表格获取日期所在的小数列的总和......这就是我不太确定的地方?

任何帮助都会很棒!谢谢

4

6 回答 6

2

如果您的表被命名为日志,其数据如下

log_date     | value
1900-01-01   | 2.5
1900-01-01   | 3

那么你的查询是

SELECT sum(value) FROM logs GROUP BY log_date
于 2012-09-25T11:30:25.553 回答
1

您正在寻找的可能是一个 GROUP BY 子句。

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

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

于 2012-09-25T11:31:10.190 回答
1
SELECT log_date,sum(value) FROM logs GROUP BY log_date
于 2012-09-25T11:33:03.080 回答
0
CREATE VIEW Summary
AS
SELECT
    DateValue,
    SUM(DecimalValue) DayTotal
FROM
    EventTable
GROUP BY
    DateValue;

然后

SELECT
    *
FROM
    Summary
WHERE
    DateValue = '1900-01-01'
于 2012-09-25T11:31:04.467 回答
0

试试这个 :

SELECT CONVERT(VARCHAR, DateColumn, 103) AS OutputDate, SUM(ValueColumn) AS TotalValue
FROM YourTable
GROUP BY CONVERT(VARCHAR, DateColumn, 103) 
于 2012-09-25T11:36:11.850 回答
0

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

使用 SQL Server 2008,您可以执行以下操作(这是一种名为 date 的类型,没有时间部分):

SELECT 
CAST(logdate as date) as TheDay, 
SUM(logdecimal) as TheSum 
FROM logTable
GROUP BY CAST(logdatetime as date)

使用没有日期类型的 SQL 服务器,可能类似于:

SELECT 
CONVERT(varchar(10), logdate, 101) as TheDay, 
SUM(logdecimal) as TheSum 
FROM logTable
GROUP BY  CONVERT(varchar(10), logdate , 101)

问候, Olle

编辑:如果它是您想要分组为日期(不包括时间部分)的 DateTime(包括时间部分),则此选项将起作用。看起来这个问题不是这种情况。

于 2012-09-25T11:45:34.243 回答