解释起来相当困难,但可能(希望)很容易解决,所以我只是解释一下我想要实现的目标。
我有一个表可以输入多个日志,每天作为一个单独的行,然后我有一个小数作为另一列,我正在尝试为每一天创建一个类似
01/01/1900 | | 5.5
当01/01/1900有一个条目有2.5时,一个条目在主表中有3个,所以当天将这些值加在一起?
如果日期相同,我唯一的问题是将日期添加到一起,我在想像
选择不同的日期并将其与一个表格连接起来,该表格获取十进制列的总和,其中日期是...而且那是我不太确定的地方?
任何帮助都会很棒!感谢
答案 0 :(得分:2)
如果您的表是带有
等数据的命名日志log_date | value
1900-01-01 | 2.5
1900-01-01 | 3
然后您的查询
SELECT sum(value) FROM logs GROUP BY log_date
答案 1 :(得分:1)
您正在寻找的可能是GROUP BY子句。
SELECT [ yourdatecol, ] sum(yourdecimalcol) FROM yourtable
[ WHERE yourdatecol = .. ]
GROUP BY [ get_ymd_from_date(yourdatecol) | yourdatecol ] ;
使用这样的语法,您将获得由相同datecol值选择的行集的总和。您可能还想要近似日期(例如,只从中获取Y / M / D部分),如果日期包含H / M / s,您想要的是每日总和。我用方括号括起来的可选部件。
答案 2 :(得分:1)
SELECT log_date,sum(value) FROM logs GROUP BY log_date
答案 3 :(得分:0)
CREATE VIEW Summary
AS
SELECT
DateValue,
SUM(DecimalValue) DayTotal
FROM
EventTable
GROUP BY
DateValue;
然后
SELECT
*
FROM
Summary
WHERE
DateValue = '1900-01-01'
答案 4 :(得分:0)
试试这个:
SELECT CONVERT(VARCHAR, DateColumn, 103) AS OutputDate, SUM(ValueColumn) AS TotalValue
FROM YourTable
GROUP BY CONVERT(VARCHAR, DateColumn, 103)
答案 5 :(得分: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
编辑:如果您想要将日期(包括时间部分)分组为日期(不包括时间部分),则此项将起作用。在这个问题中看起来并非如此。