简体   繁体   English

返回子查询中列的值的总和

[英]Return sum of values in column from a subquery

Ok, So I have this query that is creating a new column (total) which is the timespan (in minutes) between StartDateTime and EndDateTime. 好的,所以我有这个查询创建一个新列(总计),它是StartDateTime和EndDateTime之间的时间跨度(以分钟为单位)。 What I really want to do is not to return these few numbers but return only the sum of these few numbers. 我真正想做的不是返回这几个数字,而只返回这几个数字的总和。 (basically the query will return one number, the sum of the 'Total' column). (基本上查询将返回一个数字,即“总计”列的总和)。 See the snapshot below and I also put the query here for you to modify. 请参阅下面的快照,我也将查询放在这里供您修改。 Thanks! 谢谢!

SELECT     ID, StartDateTime, EndDateTime, DATEDIFF(mi, StartDateTime, EndDateTime) AS Total
FROM         tEvent
WHERE     (EventDefinitionID = '1427' OR
                      EventDefinitionID = '1428' OR
                      EventDefinitionID = '1429' OR
                      EventDefinitionID = '1430' OR
                      EventDefinitionID = '1432' OR
                      EventDefinitionID = '1434' OR
                      EventDefinitionID = '1435' OR
                      EventDefinitionID = '1436' OR
                      EventDefinitionID = '1437' OR
                      EventDefinitionID = '1438' OR
                      EventDefinitionID = '1439' OR
                      EventDefinitionID = '1440' OR
                      EventDefinitionID = '1441' OR
                      EventDefinitionID = '1442' OR
                      EventDefinitionID = '1443' OR
                      EventDefinitionID = '1444' OR
                      EventDefinitionID = '1445' OR
                      EventDefinitionID = '1446') AND (EndDateTime IS NOT NULL) AND (DAY(StartDateTime) = DAY(GETDATE()))
ORDER BY StartDateTime DESC

在此输入图像描述

If I understood the question correctly, just change your query to the following to only calculate a single number, the grand total of all of the totals. 如果我正确理解了问题,只需将查询更改为以下内容即可只计算一个数字,即所有总数的总计。 Slightly simplified and reformatted, here is the query: 稍微简化并重新格式化,这是查询:

SELECT     SUM(DATEDIFF(mi, StartDateTime, EndDateTime)) AS GrandTotal 
FROM       tEvent 
WHERE     (EventDefinitionID IN ('1427','1428','1429','1430','1432','1434',
                                 '1435','1436','1437','1438','1439','1440',
                                 '1441','1442','1443','1444','1445'))
       AND EndDateTime IS NOT NULL
       AND DAY(StartDateTime) = DAY(GETDATE())

If your EventDefinitionID is numeric, you can make the query even more readable by using BETWEEN : 如果您的EventDefinitionID是数字,则可以使用BETWEEN使查询更具可读性:

SELECT     SUM(DATEDIFF(mi, StartDateTime, EndDateTime)) AS GrandTotal 
FROM       tEvent 
WHERE     (EventDefinitionID BETWEEN 1427 AND 1430
        OR EventDefinitionID = 1432
        OR EventDefinitionID BETWEEN 1434 AND 1445)
       AND EndDateTime IS NOT NULL
       AND DAY(StartDateTime) = DAY(GETDATE())

try 尝试

SELECT     SUM(DATEDIFF(mi, StartDateTime, EndDateTime)) AS Total
FROM         tEvent
WHERE     (EventDefinitionID = '1427' OR
                      EventDefinitionID = '1428' OR
                      EventDefinitionID = '1429' OR
                      EventDefinitionID = '1430' OR
                      EventDefinitionID = '1432' OR
                      EventDefinitionID = '1434' OR
                      EventDefinitionID = '1435' OR
                      EventDefinitionID = '1436' OR
                      EventDefinitionID = '1437' OR
                      EventDefinitionID = '1438' OR
                      EventDefinitionID = '1439' OR
                      EventDefinitionID = '1440' OR
                      EventDefinitionID = '1441' OR
                      EventDefinitionID = '1442' OR
                      EventDefinitionID = '1443' OR
                      EventDefinitionID = '1444' OR
                      EventDefinitionID = '1445' OR
                      EventDefinitionID = '1446') AND (EndDateTime IS NOT NULL) AND (DAY(StartDateTime) = DAY(GETDATE()))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM