UFN_SMARTQUERY_MULTILEVELEVENTREGISTRANT
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@IDSETREGISTERID | uniqueidentifier | IN | |
@EVENTID | uniqueidentifier | IN | |
@MAXROWS | int | IN |
Definition
Copy
create function dbo.UFN_SMARTQUERY_MULTILEVELEVENTREGISTRANT
(
@IDSETREGISTERID uniqueidentifier = null,
@EVENTID uniqueidentifier = null,
@MAXROWS int = 500
)
returns @T table
(
ID uniqueidentifier not null,
CONSTITUENTID uniqueidentifier,
EVENTID uniqueidentifier,
REGISTRANTNAME nvarchar(700),
EVENTNAME nvarchar(100)
)
as
begin
declare @EVENTHIERARCHYID hierarchyid;
select @EVENTHIERARCHYID = HIERARCHYPATH
from dbo.EVENTHIERARCHY
where ID = @EVENTID;
with REGISTRANT_CTE as (
select
REGISTRANT.ID,
REGISTRANT.CONSTITUENTID,
REGISTRANT.EVENTID,
row_number() over(partition by REGISTRANT.CONSTITUENTID order by REGISTRANT.ID) as OCCURANCERANK
from dbo.REGISTRANT
inner join dbo.EVENTHIERARCHY on EVENTHIERARCHY.ID = REGISTRANT.EVENTID and EVENTHIERARCHY.HIERARCHYPATH.IsDescendantOf(@EVENTHIERARCHYID) = 1
left join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@IDSETREGISTERID) as IDSETFILTER on IDSETFILTER.ID = REGISTRANT.ID
where
REGISTRANT.CONSTITUENTID is not null
and (@IDSETREGISTERID is null or IDSETFILTER.ID is not null)
)
insert into @T (ID, CONSTITUENTID, EVENTID, REGISTRANTNAME, EVENTNAME)
select
REGISTRANT_CTE.ID,
REGISTRANT_CTE.CONSTITUENTID,
REGISTRANT_CTE.EVENTID,
dbo.UFN_REGISTRANT_GETNAME(REGISTRANT_CTE.ID),
EVENT.NAME
from REGISTRANT_CTE
inner join dbo.EVENT on EVENT.ID = REGISTRANT_CTE.EVENTID
where REGISTRANT_CTE.OCCURANCERANK = 1;
return;
end;