T-SQL 솔루션 (가장 쉬운 당신의 데이터 소스는 데이터베이스이고 당신은 불가능한 저장 프로 시저를 사용하도록 제한되지 않은 경우) 데이터 소스 당신이 T-SQL 쿼리에서 쉽게 처리 할 수있는 데이터베이스 인 경우
을 두 테이블간에 JOIN을 수행하고 WHERE 절을 지정하여 조건과 일치하는 행만 선택합니다. effectivedate < = buildDate = < obsoletedate.
SELECT a.Productnumber,
a.Builddate,
b.Secondarynumber
FROM Dataset1table a
INNER JOIN Dataset2table b
ON a.Productnumber = b.Productnumber
WHERE a.Builddate BETWEEN b.Effectivedate AND b.Obsoletedate
SSRS 해결 방법 : 코드 탭에서 Report
메뉴/Report properties...
에
이동은 다음과 VB 기능을 추가 할 수 있습니다.
Public Function GetSecondaryNumber(buildDate As Date ,
effectiveDate As Object, obsoleteDate As Object, secondaryNumber As Object) As String
Dim i As Integer
For i = 0 To effectiveDate.Length -1
if buildDate >= effectiveDate(i) and buildDate <= obsoleteDate(i) then
Return secondaryNumber(i)
End If
Next
Return ""
End Function
그런 다음 테이블 릭스 사용중인 secondarynumber
열에 : 당신이 EFFECTIVEDATE에 널 (null)과 obsoleteDate 열이없는 경우
=Code.GetSecondaryNumber(
Fields!builddate.Value,
LookupSet(Fields!productnumber.Value,Fields!productnumber.Value,Fields!effectivedate.Value,"DataSet2"),
LookupSet(Fields!productnumber.Value,Fields!productnumber.Value,Fields!obsoletedate.Value,"DataSet2"),
LookupSet(Fields!productnumber.Value,Fields!productnumber.Value,Fields!secondarynumber.Value,"DataSet2")
)
그것은 작동합니다. 그렇지 않으면 VB 함수 또는 SSRS에서 null 유효성 검증을 처리해야합니다.
이 정보가 도움이되는지 알려주십시오.
이'= Lookup (Fields! productnumber.Value, Fields! productnumber.Value, Fields! secondarynumber.Value, "Table2DataSet")'을 시도 했습니까? –
보조 번호의 반환은 조회에 포함되지 않은 builddate에 따라 다릅니다. LookupSet을 사용하면 각 builddate에 대해 하나씩 두 개의 레코드가 생성됩니다. 그 시점에서 저는 2 차 번호 만 가지고 있습니다, 나는 builddate가 없습니다. – tzerb
Lookup은 찾은 첫 번째 값을 반환하므로 두 행 모두에 대해 '999'를 'secondarynumber'로 반환합니다. 두 번째 데이터 세트에서 builddate를 어떻게 관련 이차 번호를 얻으려고합니까? –