2011-10-17 11 views
1

これで、StartDateTimeとEndDateTimeの間の分数(分)である新しい列(合計)を作成しています。私が本当にやりたいことは、これらの数を返すことではなく、これらの数の和だけを返すことです。 (基本的にクエリは「合計」列の合計である1つの数値を返します)。以下のスナップショットを参照してください。また、変更するためのクエリをここに入力します。ありがとう!サブクエリの列の値の合計を返します。

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 

enter image description here

+0

参照してみてください[この質問/回答] [1]。 [1]:http://stackoverflow.com/questions/2508338/getting-the-sum-of-a-datediff-result –

答えて

3

私が正しく質問を理解している場合、ただ一つだけの数、合計のすべての総計を計算するには、次のにクエリを変更します。少し簡略化され、再フォーマット、ここでのクエリは次のとおりです。

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()) 

あなた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()) 
1

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())) 
関連する問題