2011-08-06 5 views
0

저는 tsql과 ssrs에 대해 매우 익숙합니다. 지금까지 3 일간의 교육 만 받았기 때문에 온화합니다! 나는 매월 주문 횟수가 늦은 시간을 보여주는 보고서를 작성하려고 노력 중이며 시간이 얼마 남지 않았는지 보여줍니다.tsql ssrs 지연 주문의 백분율

SELECT 
    COUNT(*) AS NoOfWo, 
    CASE WHEN DATEDIFF(d, CompletionDate, LastActualCompDate) <= 0 THEN 'OnTime' ELSE 'Late' END AS Performance, 
    DATENAME(mm, LastActualCompDate) AS month 
FROM   WipHeader 
WHERE  (LastActualCompDate >= CAST(DATEPART(year, GETDATE()) AS varchar) + '-01-01') 
GROUP BY 
    CASE WHEN DATEDIFF(d, CompletionDate, LastActualCompDate) <= 0 THEN 'OnTime' ELSE 'Late' END, MONTH(LastActualCompDate), DATENAME(mm, LastActualCompDate) 
ORDER BY 
    MONTH(LastActualCompDate) 

이 늦게 및 숫자 올해 현재까지 각 달의 시간과 주문의 총 수에 수를 반환하지만 비율을 반환하는 방법을 해결하지 못할 : 지금까지 나는이 문제를 가지고있다? 도움이 될 것입니다. 감사합니다. .

답변

0

고맙지 만 gbn은 작동하지 않습니다. 어쩌면 그것은 내가 초보자 였고 그것을 붙여 넣을 방법을 알 수 없었을 것입니다. SQL 옵션을 사용했지만 데이터가 좋지 않은 경우 백분율이 100 %를 넘었습니다. 이는 불가능합니다. 이렇게 수정했습니다.

SELECT  COUNT(*) AS NoOfWo, DATENAME(mm, LastActualCompDate) AS month, LastActualCompDate, CompletionDate, JobNo 
FROM   WipHeader 
WHERE  (LastActualCompDate >= CAST(DATEPART(year, GETDATE()) AS varchar) + '-01-01') AND (NOT (LastActualCompDate IS NULL)) 
GROUP BY MONTH(LastActualCompDate), DATENAME(mm, LastActualCompDate), LastActualCompDate, CompletionDate, JobNo 
HAVING  (NOT (LastActualCompDate IS NULL)) AND (NOT (LastActualCompDate IS NULL)) AND (NOT (MONTH(LastActualCompDate) IS NULL)) 
ORDER BY MONTH(LastActualCompDate) 

그런 다음 SSRS에서 나는이 표현과 CalcDateDiff라는 데이터 세트에 새로운 계산 필드를 추가 : 표에서 다음

=datediff("d",Fields!CompletionDate.Value,Fields!LastActualCompDate.Value) 

내가 '늦은'라는 새로운 열을 추가처럼 쿼리는 이제 보이는 '시간에'와 '시간에 %'와 아래에 각각 표현을 추가 :

=count(iif (fields!CalcDateDiff.Value>0,1,nothing)) 
=count(iif (fields!CalcDateDiff.Value<=0,1,nothing)) 
=count(iif (fields!CalcDateDiff.Value<=0,1,nothing))/Sum(Fields!NoOfWo.Value) 

는 그런 비율로 마지막 하나의 텍스트 상자 속성을 설정하고 월별로 그룹을 추가했다.

안녕하세요. 그것은 단지 나에게 4 일 걸렸다!

3

가장 쉬운 방법은 당신이 그것을 원하는 경우, 일부 중첩을 요구할 수있다 (SQL에서,하지 SSRS

에서 다음 수행 늦은 + OnTime의 총을주고 OVER와
SELECT 
    COUNT(*) OVER() AS Total, 
    COUNT(*) AS NoOfWo, 
    CASE WHEN DATEDIFF ... blah 

을 백분율이 COUNT를 추가하는 것입니다 테스트 됨)

SELECT 
    COUNT(*) OVER() AS Total, 
    COUNT(*) AS NoOfWo, 
    CAST(100 AS float) * COUNT(*)/COUNT(*) OVER() AS percentage 
    CASE WHEN DATEDIFF ... blah