UFN_KPIINSTANCE_GETFOLDERS
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.[UFN_KPIINSTANCE_GETFOLDERS]
(
@CURRENTAPPUSERID uniqueidentifier = null
)
returns @FOLDERS table
(
[FOLDERID] uniqueidentifier,
[PARENTFOLDERID] uniqueidentifier,
[FOLDERNAME] nvarchar(255),
[DISPLAYORDER] int,
[COUNT] int
)
as
begin
declare @KPISTOINCLUDE table
(
[FOLDERID] uniqueidentifier,
[PARENTFOLDERID] uniqueidentifier,
[FOLDERNAME] nvarchar(max),
[DISPLAYORDER] int,
[COUNT] int
);
insert into @KPISTOINCLUDE ([FOLDERID], [PARENTFOLDERID], [FOLDERNAME], [DISPLAYORDER], [COUNT])
select
isnull(f.[ID], '00000000-0000-0000-0000-000000000000') as [FOLDERID],
isnull([PARENTFOLDERID], '00000000-0000-0000-0000-000000000000') as [PARENTFOLDERID],
f.[NAME] as [FOLDERNAME],
f.[DISPLAYORDER],
count(distinct k.[ID]) as [COUNT]
from dbo.[KPIINSTANCEFOLDER] f
left join dbo.[KPIINSTANCE] k on f.[ID] = k.[FOLDERID]
group by
f.[ID],
f.[PARENTFOLDERID],
f.[NAME],
f.[DISPLAYORDER];
/* rollup node counts */
with [ROLLUP] as
(
select
[FOLDERID],
[FOLDERID] as [PARENTFOLDERID],
[FOLDERNAME],
[DISPLAYORDER],
[COUNT]
from @KPISTOINCLUDE f
union all
select
f.[FOLDERID],
r.[PARENTFOLDERID],
f.[FOLDERNAME],
f.[DISPLAYORDER],
f.[COUNT]
from @KPISTOINCLUDE f
inner join [ROLLUP] r on f.[PARENTFOLDERID] = r.[FOLDERID]
)
insert into @FOLDERS ([FOLDERID],[PARENTFOLDERID], [FOLDERNAME], [DISPLAYORDER], [COUNT])
select
f.[FOLDERID],
f.[PARENTFOLDERID],
f.[FOLDERNAME],
f.[DISPLAYORDER],
sum(r.[COUNT]) [COUNT]
from [ROLLUP] r
inner join @KPISTOINCLUDE f on r.[PARENTFOLDERID] = f.[FOLDERID]
group by
f.[FOLDERID],
f.[PARENTFOLDERID],
f.[FOLDERNAME],
f.[DISPLAYORDER]
return
end