2016-10-18 7 views
0

설명에 기반하여 시간 열에 대한 데이터를 합한 코드가 있으며 감독자 열을 기준으로 시간이 합계됩니다. 첫 번째 합계를 취하여 두 번째 합계로 나누어 계산 된 열을 추가하여 비율을 지정하고 싶습니다. 여기 내 코드는 % 열의 올바른 경로라고 생각하지만 작동하도록 설정할 수는 없습니다. 어떤 도움을 주셔서 감사합니다!다른 계산 된 열을 기반으로 계산 된 열

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

관련 문제