SSRS에서 필드를 소수점 이하 자릿수로 반올림하는 방법을 찾으려고합니다. 나는 그것을 동적으로 포맷 할 수 있다는 것을 알고 있으며 결국에는 그렇게 될지 모르지만 많은 사용자들이이 보고서를 Excel로 직접 가져 와서 실제 숫자 필드를 원할 것입니다.SSRS에서 소수점 이하의 가변 개수로 반올림
내 T-SQL 코드는이 선언 된 변수를 포함
이 NumLong01 DECIMAL(23,8)
, NumLongDP01 INTEGER
이 테이블의 항목의 첫 번째 세트는 헤더와 반올림 매개 변수입니다. 다음
NULL
,4
나는대로 실제 테이블 값을 추가 : 그래서 두 이들에 대한 값을 추가 나는 테이블에 숫자의 전체 시리즈를 넣을 수 있습니다
987654321.87654321
,NULL
그 방법하지만 그들은 모두가 같은 방식으로 서식을 지정해야합니다.
실행이 쿼리 수율 :
내가 보고서 작성 도구로 이동, 내 필드는이 표현이 있습니다
=Fields!NumLong01.Value
내가 소수점 이하 자릿수의 특정 숫자를 포맷하려면 , 나는 이것을 할 수 있습니다 :
=Round(Fields!NumLong01.Value,2)
또는 일부. 내가 할 노력은 무엇하지만, 그것은 동적 만드는 것이었다 :
=Round(Fields!NumLong01.Value,First(Fields!NumLongDP01.Value, "DataSet1"))
이 0 소수점 반올림 끝났다. 나는 이후에 - 내 필드에서 후반부를 사용함으로써 - 이것이 NULL 값이라는 것을 알게되었습니다. 그래서 나는 단지 대신에 합계를 시도했는데, 단지 내 분야에서 - 그리고 내가 예상했던 4 점을 얻었다. 좋아, 그래서 지금은 내 번호가 있고, 난 그냥 내 반올림으로 그것을 넣어 :
=Round(Fields!NumLong01.Value,Sum(Fields!NumLongDP01.Value, "DataSet1"))
만 문제가이 오류를 얻을 수 있습니다. 다음으로 나는 어떤 이유로이 숫자를 숫자로 보지 않는지 스스로에게 물었다. 그래서 저는 그것을 제 분야에 추가했습니다. 아무 문제 없습니다. 그래서 나는 정말로 그것이 무엇을하는지 모른다. 이 필드가 너무 길어서 불법적 인 소수 자리로 반올림 될 수 있다고 생각합니까?
=IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 8,Round(Fields!NumLong01.Value,8),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 7,Round(Fields!NumLong01.Value,7),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 6,Round(Fields!NumLong01.Value,6),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 5,Round(Fields!NumLong01.Value,5),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 4,Round(Fields!NumLong01.Value,4),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 3,Round(Fields!NumLong01.Value,3),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 2,Round(Fields!NumLong01.Value,2),IIf(Sum(Fields!NumLongDP01.Value, "DataSet1") = 1,Round(Fields!NumLong01.Value,1),Round(Fields!NumLong01.Value,0)))))))))
을 ... 그리고 그 작동 :
지금, 나는이 작업을 수행 할 수 있습니다. 그러나 그것은 그것에 관해가는 그런 우스운 길과 같게 보인다.
t-SQL에서 반올림 한 숫자 만 전달하는 것도 편안합니다. 그러나 숫자 형식에서 소수점 이하 자릿수를 사용할 수 없기 때문에 보고서에 소수점 이하 자리 만 표시하는 문제가 발생합니다.
모든 아이디어를 얻을 수 있습니다.
이후, 나는 서식으로 "N4"을 사용했는데, 실제로 I로 지금까지 Excel에서 근무 :
이 작업을 수행하려면, 표현과 데이터 집합에 계산 필드를 추가 말할 수있다.이전에는 다른 보고서를 수정할 때 항상 그런 것은 아니지만 그 이유는 모르겠습니다. 그래서 내가 그렇게 작동하게 만들 수 있다면 나는 만족한다. 그러나 나는 내가 기대했던 것처럼 내 초기 반올림 접근 방식이 왜 작동하지 않는지 여전히 알고 싶다. – DaveX
새로운 업데이트 : 이전에도 Excel에서 동일한 문제가 발생했습니다. 단 한 줄로 추가 할 것이 없었으므로 이제 4와 같은 고정 숫자를 추가하면 합계가 생깁니다. 따라서 Excel의 숫자 필드 여야합니다. 잘못된. 여러 줄을 할 때, 오른쪽 아래 구석에 셀 수 (합계가 아닙니다)가 생기고 제 숫자의 합이 0이됩니다. 그래서 저는 제 IIf의 제 정신을 잃었습니다. – DaveX
몇 가지 간단한 질문이 있기 전에 해결책을 제안하십시오. 소수 자릿수를 데이터 집합의 첫 번째 행으로 지정해야하며 테이블 구조를 변경할 수 있습니까? 마지막으로 왜 왜 소수점 자리수가 가변적 인 (동적) 숫자가 필요합니까? 0 패딩을 피하는 것입니까? –