2016-10-18 12 views
0

説明に基づいて時間カラムのデータを合計し、スーパーバイザカラムに基づいて時間を合計するコードがあります。私は最初の合計を取る計算された列を追加し、2番目の合計で私にパーセンテージを与えるためにそれを分割したいと思います。ここで私のコードは%の列の正しいパスだと思いますが、それを動作させることはできません。どんな助けもありがとう!他の計算カラムに基づく計算カラム

SELECT sap.Description, 
     Sum(main.Hours) AS SumOfHours, 
     main.supervisor1email AS SupervisorEmail, 
     (SELECT SUM(sub.hours) 
     FROM v_MES_TcActivities sub 
     WHERE sub.costctr = '106330' 
     AND sub.AttCode Not Like 'MEAL' 
     AND sub.clockin Between dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) and dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 
     AND sub.supervisor1email = main.supervisor1email 
     ) AS TotalHours, 
     (SELECT Sum(subsub.hours)/TotalHours AS 'Percent' 
     ) AS Percent 
FROM v_MES_TcActivities AS main 
    LEFT JOIN t_SAP_AttCodes AS sap ON main.AttCode = sap.Code 
WHERE main.AttCode Not Like 'MEAL' 
AND main.CostCtr Like '106330' 
AND main.ClockIn Between dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) and dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 

GROUP BY sap.Description, 
     main.supervisor1email, 
     Percent 
ORDER BY main.supervisor1email 

Here is the before code

Here is what I am looking to see

+0

これを試すことができますか?エラーが発生していますか?値は間違っていますか?投稿されているので、このクエリはほとんど不可能です。なぜなら、フォーマットはかなり難しいからです。質問を改善するためにこちらをご覧ください。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

サブクエリまたはウィンドウ関数は計算列には使用できないため、必要になる場合がありますこのためのビューを作成する –

+0

@ KannanKandasamy計算カラムではなく、派生カラムを意味すると思います。 –

答えて

0

あなたにも、 "それは仕事を得ることができない" どういう意味

SELECT Description, 
     SumOfHours, 
     SupervisorEmail, 
     TotalHours, 
     SumSubsubHr/TotalHours AS 'Percentage' 
FROM (
      SELECT sap.Description, 
        Sum(main.Hours) AS SumOfHours, 
        main.supervisor1email AS SupervisorEmail, 
        (SELECT SUM(sub.hours) 
        FROM v_MES_TcActivities sub 
        WHERE sub.costctr='106330' AND sub.AttCode Not Like 'MEAL' AND sub.clockin Between dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) and dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 
        AND sub.supervisor1email = main.supervisor1email 
        ) AS TotalHours, 
        Sum(sub.hours) AS 'SumSubsubHr' 

      FROM v_MES_TcActivities AS main 
      LEFT JOIN t_SAP_AttCodes AS sap ON main.AttCode = sap.Code 
      WHERE main.AttCode Not Like 'MEAL' 
      AND main.CostCtr Like '106330' 
      AND main.ClockIn Between dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) and dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 
      GROUP BY sap.Description, main.supervisor1email 
)t 
+0

"マルチパート識別子" subsub.hours "はバインドできませんでした"というエラーが表示されました – Michael

+0

@Michaelは 'sub.hours'を使用しました。更新されたスクリプト –

+0

を試してみましょう今、 "sub.hours"と同じことが縛られないと言います – Michael

関連する問題