2013-09-26 2 views
0

제 질문을 보러와 주셔서 감사합니다.보고서 데이터 집합에서 함수를 집계에 매개 변수를 추가하는 방법

매개 변수를 추가하려는 기능별 SQL 그룹이 있습니다. (가능하다면)

필자는 테이블에서 함수로 두 개의 열을 매개 변수로 연결하려고 시도했지만 올바른 결과를 얻지 못했습니다.

이 함수는 레코드를 계산하는 테이블을 만들고 '팀'및 '위치'별로 매개 변수를 필터링 할 수 있기를 원합니다. 필터링 할 수 있도록이 정보를 데이터 집합에 추가하는 방법은 무엇입니까?

나는 일반적으로 사용하여 추가 할 수 :

select 
i.Team 
,i.Location 
From 
incident i 
Where i.Team in (@Team) 
and i.Location in (@Location) 

표는 사건이라고 모든 정보는 같은 테이블에서입니다.

이 작업을 수행해 주셔서 감사합니다. 고맙습니다.

아, 내가 SQL에 보고서 작성기 3을 사용하고 2008 R2

declare @st_date datetime; 
declare @en_date datetime; 
declare @days int; 
declare @offset int; 
set @en_date = (@en_datein); 
set @offset = (@BrowserTimezoneOffset); 
set @days = -6; 
set @st_date = DATEADD(dd, @days, @en_date); 

with daterange(dt) as 
(select 
@st_date dt 
union all 
select 
DATEADD(dd, 1, dt) dt 
from daterange 
where dt <= DATEADD(dd, -1, @en_date) 
) 
select 
      left(DATENAME(dw, dt), 3) as weekday 
      ,ISNULL(sum(inc.createdc), 0) as createdcount 
      ,ISNULL(sum(inr.resolvedclosedc), 0) as resolvedclosedcount 
from daterange left outer join 
(select 
left(DATENAME(dw,DATEADD(mi,@offset,CreatedDateTime)), 3) as createddatetime 
,count(recid) as createdc 
from Incident 
where DATEADD(mi,@offset,CreatedDateTime) >= @st_date 
and DATEADD(mi,@offset,CreatedDateTime) <= @en_date 
group by left(DATENAME(dw, DATEADD(mi,@offset,CreatedDateTime)), 3) 
) as inc 
on inc.CreatedDateTime = left(DATENAME(dw, dt), 3) 
left outer join 
(select 
left(DATENAME(dw, DATEADD(mi,@offset,ResolvedDateTime)), 3) as ResolvedDateTime 
,count(case when status in ('Resolved', 'Closed') then 1 end) as resolvedclosedc 
from Incident 
where DATEADD(mi,@offset,ResolvedDateTime) between @st_date and @en_date 
group by left(DATENAME(dw, DATEADD(mi,@offset,ResolvedDateTime)), 3) 
) as inr 
on inr.ResolvedDateTime = left(DATENAME(dw, dt), 3) 
group by dt 
order by dt 

답변

0

당신은뿐만 아니라 데이터 세트로 묶을 수있는 하나 개 많은 값을 사용하는 것입니다 매개 변수를 사용하여.

내가 명령과 사람을 가장하는 순서로 있지만 특정 사람 만 명령을 찾고 싶다고 말하면됩니다. 자기가 실행하는 테이블 변수를 사용하여 데이터 집합이 '쿼리'상자를 배치 난 단지 매개 변수에 대한 데이터 세트를 생성하고이 예제를 위해 '사람'을 부를 것이다

  1. 수 있습니다 : 나는 몇 가지 단계를 수행 할 .

    declare @People Table (personID int identity, person varchar(8)); 
    
    insert into @People values ('Brett'),('Sean'),('Chad'),('Michael') 
    ,('Ray'),('Erik'),('Queyn'); 
    
    select * From @People 
    
  2. I는 I는 정수로 설정 변수 @Person 인 제 의존성으로 시작 '여러 값을 허용'을 검사 할 것이다. 그런 다음 변수의 왼쪽 창에서 '사용 가능한 값'을 선택합니다. '쿼리에서 값 가져 오기'를 선택하고 1에서 내 '사람'데이터 세트를 선택하고 값 필드로 PersonID를 선택하고 레이블로 사람을 선택합니다.

  3. 지금 내 매개 변수가 바인딩되어 있으므로 주문 세트로 이동할 수 있습니다. 다시 Dataset을 만들지 만 'OrdersMain'을 호출하고 자체 추출 테이블 변수를 사용합니다. 그러나 위의 변수를 참조하는 조건자를 추가하고 있습니다. 테이블 릭스 항목 내 보고서를 채우고 사용자가 등 브렛 션, 대한 레이블가 표시되는 테이블 릭스의 'OrdersMain'의 값을 넣어 ..하지만 ID가 사용되는 경우 이제

    declare @Orders table (OrderID int identity, PersonID int, Desciption varchar(32), Amount int); 
    
    insert into @Orders values (1, 'Shirt', 20),(1, 'Shoes', 50),(2, 'Shirt', 22), 
    (2, 'Shoes', 52),(3, 'Shirt', 20),(3, 'Shoes', 50),(3, 'Hat', 20), 
    (4, 'Shirt', 20),(5, 'Shirt', 20),(5, 'Pants', 30), (6, 'Shirt', 20), 
    (6, 'RunningShoes', 70),(7, 'Shirt', 22),(7, 'Shoes', 40),(7, 'Coat', 80) 
    
    Select * from @Orders where PersonID in (@Person) 
    
  4. 명령은 데이터 집합의 범위를 제한합니다.

    옵션

당신은 다른 데이터 세트에있는 사람들의 일부에 대한 1 단계를 반복 할 수 있습니다와 '기본값'을 부른다. 그런 다음 2 단계의 창을 통해 모든 것을 그대로두고 쿼리에서 '기본값'가져 오기에이 새 데이터 집합을 추가합니다. 이렇게하면 임시 테이블을 만들어서 가장 자주 사용하는 사람들을 얻고 대신 기본값으로 설정할 수 있습니다. 그러면 보고서가 호출 될 때 자동으로 실행됩니다.

필터링은 SSRS에서도 다른 것들을 의미 할 수 있습니다. 모든 데이터 세트에서 왼쪽 창에 '필터'가 표시되어이를 적용 할 수 있습니다. 전체 표현식을 먼저 평가 한 다음 필터링합니다. 이 IMHO는 작고 빠른 공유 데이터 세트를 사용하는 것이 가장 좋습니다. 또는 tablix 요소에서 filter 절을 사용할 수도 있습니다.이 세 가지 객체는 동일한 집합이지만 런타임 이후에 평가되는 다른 조건자는 있지만 많은 객체에 대해 하나의 데이터 집합을 다시 사용하여 범위를 제한 할 때 자주 사용됩니다.

+0

대단히 감사합니다. 장고 재즈. 이것은 매개 변수를 훨씬 잘 이해하는 데 도움이되었습니다. 이 보고서의 차트를 가지고 일하고 있습니다. 귀하가 조언 한 것과 관련하여 고려해야 할 사항이 있습니까? 내 그룹 쿼리를 사용하면 위에서 설명한 것처럼 다른 매개 변수를 쉽게 추가 할 수 있습니까? –

+0

예, SSRS의 데이터 세트는 프레젠테이션을 위해 필요하지 않습니다. 변수를 채우는 용도로만 사용할 수 있습니다. 사용자를 위해 다중 또는 단일 선택 콤보 매개 변수에 대해이 작업을 많이 수행합니다. 그것들은 내가 알고있는 하드 한도가 아니며, 하나의 디스플레이를 위해 8 개의 데이터 세트를 가지고 있다는 일부 보고서가있다. 또한 종속 변수가있는 다른 목록을 먼저 목록에서 결정할 수도 있습니다. 예 : 매개 변수 부서를 구성한 다음 Dept in (@Depts)에서 @People의 select *와 같은 값에서 사용되는 값을 선택합니다. 이것은 하나의 매개 변수가 또 다른 하나에 의존적이라는 것을 의미합니다. – djangojazz

+0

기술적 매개 변수도 표현을위한 것이지만 제가 말한 의미는 데이터 세트가 그리드 나 차트에있을 필요가 없다는 것입니다. 변수를 채우거나 내부적으로 워크 플로 프로세스를 결정하거나 데이터를 더 자세히 필터링하는 데 사용할 수 있습니다. – djangojazz

관련 문제