如何根据另一列添加列的值

时间:2012-09-25 11:24:47

标签: sql join

解释起来相当困难,但可能(希望)很容易解决,所以我只是解释一下我想要实现的目标。

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

01/01/1900 | | 5.5

当01/01/1900有一个条目有2.5时,一个条目在主表中有3个,所以当天将这些值加在一起?

如果日期相同,我唯一的问题是将日期添加到一起,我在想像

选择不同的日期并将其与一个表格连接起来,该表格获取十进制列的总和,其中日期是...而且那是我不太确定的地方?

任何帮助都会很棒!感谢

6 个答案:

答案 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

编辑:如果您想要将日期(包括时间部分)分组为日期(不包括时间部分),则此项将起作用。在这个问题中看起来并非如此。