This should allow optional selection by OBS with 'unit only' or 'unit and descendants, it is untested
SELECT
@SELECT:DIM:USER_DEF:IMPLIED:ISSUE:UNIQUE_KEY:UNIQUE_KEY@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:INV_INT_ID:INV_INT_ID@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:INV_CODE:INV_CODE@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:INV_NAME:INV_NAME@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:OBS_INT_ID:OBS_INT_ID@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:OBS_NAME:OBS_NAME@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:ISSUE_INT_ID:ISSUE_INT_ID@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:ISSUE_ID:ISSUE_ID@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:ISSUE_NAME:ISSUE_NAME@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:ISSUE_DESCRIPTION:ISSUE_DESCRIPTION@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:STATUS_CODE:STATUS_CODE@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:PRIORITY_CODE:PRIORITY_CODE@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:AGING:AGING@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:RESOLUTION:RESOLUTION@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:CREATED_DATE:CREATED_DATE@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:CREATED_BY_NAME:CREATED_BY_NAME@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:TARGET_RESOLVE_DATE:TARGET_RESOLVE_DATE@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:RESOLVED_DATE:RESOLVED_DATE@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:PARENT_RISK_ISSUE_INT_ID:PARENT_RISK_ISSUE_INT_ID@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:PARENT_RISK_ISSUE_ID:PARENT_RISK_ISSUE_ID@
, @SELECT:DIM_PROP:USER_DEF:IMPLIED:ISSUE:SCHEDULE:SCHEDULE@
FROM (
SELECT
I.CODE + ISS.RIM_RISK_ISSUE_CODE UNIQUE_KEY
, I.ID INV_INT_ID
, I.CODE INV_CODE
, I.NAME INV_NAME
, O1.OBS_INT_ID
, O1.OBS_NAME
, ISS.ODF_PK ISSUE_INT_ID
, ISS.RIM_RISK_ISSUE_CODE ISSUE_ID
, ISS.NAME ISSUE_NAME
, ISS.DESCRIPTION ISSUE_DESCRIPTION
, ISS.STATUS_CODE STATUS_CODE
, ISS.PRIORITY_CODE PRIORITY_CODE
, DATEDIFF(DD,NIKU.COP_CALC_FINISH_FCT(ISS.CREATED_DATE), GETDATE()) AGING
, ISS.RESOLUTION RESOLUTION
, ISS.CREATED_DATE CREATED_DATE
, ISS.CREATED_BY CREATED_BY_NAME
, ISS.TARGET_RESOLVE_DATE TARGET_RESOLVE_DATE
, ISS.RESOLVED_DATE RESOLVED_DATE
, ISS.PARENT_RISK_ISSUE_ID PARENT_RISK_ISSUE_INT_ID
, ISS.P_RISK_ISSUE_NAME PARENT_RISK_ISSUE_ID
, DATEDIFF(Y,NIKU.CAL_TRUNC_DATE_FCT(ISS.TARGET_RESOLVE_DATE), NIKU.CAL_TRUNC_DATE_FCT(GETDATE())) SCHEDULE
/* BELOW ARE ALIAS REFERENCES NOT FOUND */
--, C.NAME CATEGORY
--, S.NAME STATUS_NAME
--, PR.NAME PRIORITY_NAME
--, A.ID ASSIGNED_TO_INT_ID
--, A.LAST_NAME + ', ' + A.FIRST_NAME ASSIGNED_TO
--, NOTES.SUBJECT NOTE_SUBJECT
--, NOTES.DESCRIPTION NOTE_DESC
FROM NIKU.ODF_ISSUE_V2 ISS (NOLOCK)
INNER JOIN NIKU.INV_INVESTMENTS I (NOLOCK) ON ISS.PK_UNIQUE_NAME = I.CODE
INNER JOIN NIKU.INV_PROJECTS P (NOLOCK) ON (I.ID = P.PRID AND P.IS_TEMPLATE 1 AND (i.is_active 0))
left join
(
select oass.record_id, ounit.name OBS_NAME, oflat.branch_unit_id OBS_INT_ID
from prj_obs_associations oass
inner join prj_obs_units ounit on (oass.unit_id = ounit.id )
and ounit.TYPE_ID = (
select top 1 type_id from prj_obs_units where id = @WHERE:PARAM:USER_DEF:INTEGER:WHICH_OBS_UNIT@
/*
if the parameter is null then no match is made and the left join allows the overall query to continue
if the parameter is not null, then the ONE related OBS TYPE is considered = no row repitition
*/
)
inner join prj_obs_units_flat oflat on oass.unit_id = oflat.unit_id
and isnull(@WHERE:PARAM:USER_DEF:INTEGER:WHICH_OBS_UNIT@, oass.unit_id) = oflat.branch_unit_id
/*
above: we are using 'ISNULL' as a branching mechanism in a join instruction
if parameter is null join is via field 'oass.unit_id'
if parameter holds a value, join is restricted to only that specific value
*/
and (
case
when @WHERE:PARAM:USER_DEF:STRING:INCL_CHILD@ = '0' then oass.unit_id
else oflat.branch_unit_id
end
) = oflat.branch_unit_id
/*
above: now we are using a case statement to allow or deny 'descendants'
0 (deny) oass unit_id must equal oflat unit_id
1 (allow, & default) oflat unit_id = oflat unit_id (i.e. will always be equal)
here INCL_CHILD parameter is based on a lookup that returns '0' for Unit Only or '1' for Unit and Descendent
*/
where oass.table_name = 'SRM_PROJECTS'
) O1 on I.ID = O1.record_id
) SQL_INNER_BIT
where (
@WHERE:PARAM:USER_DEF:INTEGER:WHICH_OBS_UNIT@ is null
OR @WHERE:PARAM:USER_DEF:INTEGER:WHICH_OBS_UNIT@ = sponsor_obs_id
)
and @filter@
/*
QUERY ID = ???
*/