2016-07-16 30 views
0

私は以下を参照してください、私はすでに私のクエリで算出された3つの新しい列から新しい「合計」欄を計算するために訓練しています:複数の列の合計値を計算する方法は?

SELECT TOP 500 request_key 
     ,request_id 
     ,CreatedTime 
     ,AssignTime 
     ,IssueTime 
     ,CloseTime 
     ,RequestDetails 
     ,request_type 
     ,Product 
     ,SiteName 
     ,DATEDIFF(MINUTE, createdtime, AssignTime + 1) AS Idle 
     ,DATEDIFF(MINUTE, AssignTime, IssueTime + 1) AS Assign 
     ,DATEDIFF(MINUTE, IssueTime, CloseTime +1) AS Delegate 

FROM [wombat].[dbo].[VwWombatCrossSiteCorrelationReport] 

新しい「合計」欄には、次のデータが必要です:アイドル+を不潔...だけでなく、+委任は

+1

私は構文に基づいて、質問のSQL Serverをタグ付け。 –

答えて

0
(DATEDIFF(MINUTE, createdtime, AssignTime + 1) AS Idle 
     + DATEDIFF(MINUTE, AssignTime, IssueTime + 1) AS Assign 
     + DATEDIFF(MINUTE, IssueTime, CloseTime +1) AS Delegate) AS total 
+0

"アイドル、代理&代理"は私が計算した新しい列なので、私はこれを行うことはできません。 –

+0

テストしましたか? –

1

あなたは、もちろん、ただIdleAssignDelegateを生産し、計算を繰り返すことができ割り当て、しかし。別の計算列

SELECT *, Idle + Assign + Delegate AS Total 
FROM (SELECT TOP 500 request_key, 
         request_id, 
         CreatedTime, 
         AssignTime, 
         IssueTime, 
         CloseTime, 
         RequestDetails, 
         request_type, 
         Product, 
         SiteName, 
         DATEDIFF(MINUTE, createdtime, AssignTime + 1) AS Idle, 
         DATEDIFF(MINUTE, AssignTime, IssueTime + 1) AS Assign, 
         DATEDIFF(MINUTE, IssueTime, CloseTime +1) AS Delegate 
     FROM [wombat].[dbo].[VwWombatCrossSiteCorrelationReport]) t 
+0

ありがとう!!私は一日中何をしようとしたのか、私は最後に "t"を忘れてしまった。 ここの目的は何ですか? –

+0

't'は内部クエリのテーブルエイリアスです。一部の[tag:rdbms](Oracleなど)では、直接使用しないと省略することができます。しかし、MS SQL Serverでは、それを指定することが必須です。 – Mureinik

0

私はちょうどそれがシンプルになるだろうし、追加します:

SELECT TOP 500 request_key 
     ,request_id 
     ,CreatedTime 
     ,AssignTime 
     ,IssueTime 
     ,CloseTime 
     ,RequestDetails 
     ,request_type 
     ,Product 
     ,SiteName 
     ,DATEDIFF(MINUTE, createdtime, AssignTime + 1) AS Idle 
     ,DATEDIFF(MINUTE, AssignTime, IssueTime + 1) AS Assign 
     ,DATEDIFF(MINUTE, IssueTime, CloseTime +1) AS Delegate 
    , Total = DATEDIFF(MINUTE, createdtime, AssignTime + 1) + DATEDIFF(MINUTE, AssignTime, IssueTime + 1) + DATEDIFF(MINUTE, IssueTime, CloseTime +1) 
FROM [wombat].[dbo].[VwWombatCrossSiteCorrelationReport] 
+0

作品!!ありがとう。 –

0

これを行うための興味深い方法を別のオプションは、計算を繰り返すことを避けるために、サブクエリとしてこのクエリを使用することですouter applyを使用しています。

SELECT TOP 500 cr.*, v.idle, v.assign, v.delegate, 
     (v.idle + v.assign + v.delegate) as Total 
FROM [wombat].[dbo].[VwWombatCrossSiteCorrelationReport] cr outer apply 
    (select DATEDIFF(MINUTE, createdtime, AssignTime + 1) as Idle, 
      DATEDIFF(MINUTE, AssignTime, IssueTime + 1) as Assign, 
      DATEDIFF(MINUTE, IssueTime, CloseTime +1) as Delegate 
    ) v; 
関連する問題