USP_BBDW_ATTRIBUTE_GETDIMVALUES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@OLAPDATASOURCEID | uniqueidentifier | IN | |
@OPENWINDOW | datetime | IN | |
@CLOSEWINDOW | datetime | IN |
Definition
Copy
create procedure dbo.[USP_BBDW_ATTRIBUTE_GETDIMVALUES](
@OLAPDATASOURCEID uniqueidentifier,
@OPENWINDOW datetime,
@CLOSEWINDOW datetime
) as
set nocount on;
declare @ATTRIBUTEVALUES table(
[ATTRIBUTESYSTEMID] uniqueidentifier,
[ATTRIBUTEVALUESYSTEMID] uniqueidentifier,
[ATTRIBUTEVALUE] nvarchar(100),
[ACTIVE] bit,
[DATECHANGED] datetime
)
declare @SQL nvarchar(500);
declare @ATTRIBUTEID uniqueidentifier;
declare @CODETABLENAME nvarchar(100);
--Get all code table values
declare ATTRIBUTECURSOR cursor local fast_forward for
select a.[ID], c.[DBTABLENAME]
from dbo.[ATTRIBUTECATEGORY] a
left join dbo.[CODETABLECATALOG] c on a.[CODETABLECATALOGID] = c.[ID]
where a.[DATATYPECODE] = 5;
open ATTRIBUTECURSOR;
fetch next from ATTRIBUTECURSOR into @ATTRIBUTEID, @CODETABLENAME;
while (@@FETCH_STATUS = 0)
begin
set @sql = 'select @ATTRIBUTEID, [ID], [DESCRIPTION], [ACTIVE], [DATECHANGED]' + char(13) +
'from dbo.[' + @CODETABLENAME + '];';
insert into @ATTRIBUTEVALUES([ATTRIBUTESYSTEMID],[ATTRIBUTEVALUESYSTEMID], [ATTRIBUTEVALUE], [ACTIVE],[DATECHANGED])
exec sp_executesql @SQL, N'@ATTRIBUTEID uniqueidentifier', @ATTRIBUTEID=@ATTRIBUTEID;
fetch next from ATTRIBUTECURSOR into @ATTRIBUTEID, @CODETABLENAME;
end
close ATTRIBUTECURSOR;
deallocate ATTRIBUTECURSOR;
------
--Default row for all attributes
select
ac.[ID] [ATTRIBUTESYSTEMID],
av.[ATTRIBUTEVALUESYSTEMID] [ATTRIBUTEVALUESYSTEMID],
isnull(agc.[DESCRIPTION],'No Attribute Group') [ATTRIBUTEGROUP],
rt.[NAME] [ATTRIBUTETYPE],
ac.[NAME] [ATTRIBUTENAME],
ac.[DATATYPE] [ATTRIBUTEDATATYPE],
av.[ATTRIBUTEVALUE] [ATTRIBUTEVALUE],
cast(0 as bit) [ATTRIBUTEVALUEACTIVE],
ac.[ONLYALLOWONEPERRECORD] [ATTRIBUTEONLYALLOWONEPERRECORD],
cast(case when ac.[DATATYPECODE] in (5, 4) then 1 else 0 end as bit) [ATTRIBUTEHASCODETABLE],
cast(case when o.[ID] is not null then 1 else 0 end as bit) [ATTRIBUTEFORREPORTING]
from dbo.[ATTRIBUTECATEGORY] ac
inner join dbo.[ATTRIBUTERECORDTYPE] art on ac.[ATTRIBUTERECORDTYPEID] = art.[ID]
inner join dbo.[RECORDTYPE] rt on art.[RECORDTYPEID] = rt.[ID]
left join dbo.[ATTRIBUTEGROUPCODE] agc on ac.[ATTRIBUTEGROUPCODEID] = agc.[ID]
left join dbo.[OLAPDATASOURCEATTRIBUTECATEGORY] o on ac.[ID] = o.[ATTRIBUTECATEGORYID] and o.[OLAPDATASOURCEID] = @OLAPDATASOURCEID
cross join (
select cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier) [ATTRIBUTEVALUESYSTEMID], 'No Value' [ATTRIBUTEVALUE]
) as [av]
where
(ac.[DATECHANGED] > @OPENWINDOW and ac.[DATECHANGED] <= @CLOSEWINDOW) or
(agc.[DATECHANGED] > @OPENWINDOW and agc.[DATECHANGED] <= @CLOSEWINDOW) or
(rt.[DATECHANGED] > @OPENWINDOW and rt.[DATECHANGED] <= @CLOSEWINDOW) or
(o.[DATECHANGED] > @OPENWINDOW and o.[DATECHANGED] <= @CLOSEWINDOW)
union all
--All attribute value rows
select
ac.[ID] [ATTRIBUTESYSTEMID],
av.[ATTRIBUTEVALUESYSTEMID] [ATTRIBUTEVALUESYSTEMID],
isnull(agc.[DESCRIPTION],'No Attribute Group') [ATTRIBUTEGROUP],
rt.[NAME] [ATTRIBUTETYPE],
ac.[NAME] [ATTRIBUTENAME],
ac.[DATATYPE] [ATTRIBUTEDATATYPE],
av.[ATTRIBUTEVALUE] [ATTRIBUTEVALUE],
av.[ACTIVE] [ATTRIBUTEVALUE],
ac.[ONLYALLOWONEPERRECORD] [ATTRIBUTEONLYALLOWONEPERRECORD],
cast(1 as bit) [ATTRIBUTEHASCODETABLE],
cast(case when o.[ID] is not null then 1 else 0 end as bit) [ATTRIBUTEFORREPORTING]
from dbo.[ATTRIBUTECATEGORY] ac
inner join @ATTRIBUTEVALUES av on ac.[ID] = av.[ATTRIBUTESYSTEMID]
inner join dbo.[ATTRIBUTERECORDTYPE] art on ac.[ATTRIBUTERECORDTYPEID] = art.[ID]
inner join dbo.[RECORDTYPE] rt on art.[RECORDTYPEID] = rt.[ID]
left join dbo.[ATTRIBUTEGROUPCODE] agc on ac.[ATTRIBUTEGROUPCODEID] = agc.[ID]
left join dbo.[OLAPDATASOURCEATTRIBUTECATEGORY] o on ac.[ID] = o.[ATTRIBUTECATEGORYID] and o.[OLAPDATASOURCEID] = @OLAPDATASOURCEID
where
(ac.[DATECHANGED] > @OPENWINDOW and ac.[DATECHANGED] <= @CLOSEWINDOW) or
(av.[DATECHANGED] > @OPENWINDOW and av.[DATECHANGED] <= @CLOSEWINDOW) or
(agc.[DATECHANGED] > @OPENWINDOW and agc.[DATECHANGED] <= @CLOSEWINDOW) or
(rt.[DATECHANGED] > @OPENWINDOW and rt.[DATECHANGED] <= @CLOSEWINDOW) or
(o.[DATECHANGED] > @OPENWINDOW and o.[DATECHANGED] <= @CLOSEWINDOW)
union all
--All boolean rows (Yes/No)
select
ac.[ID] [ATTRIBUTESYSTEMID],
av.[ATTRIBUTEVALUESYSTEMID] [ATTRIBUTEVALUESYSTEMID],
isnull(agc.[DESCRIPTION],'No Attribute Group') [ATTRIBUTEGROUP],
rt.[NAME] [ATTRIBUTETYPE],
ac.[NAME] [ATTRIBUTENAME],
ac.[DATATYPE] [ATTRIBUTEDATATYPE],
av.[ATTRIBUTEVALUE] [ATTRIBUTEVALUE],
cast(1 as bit) [ATTRIBUTEVALUEACTIVE],
ac.[ONLYALLOWONEPERRECORD] [ATTRIBUTEONLYALLOWONEPERRECORD],
cast(1 as bit) [ATTRIBUTEHASCODETABLE],
cast(case when o.[ID] is not null then 1 else 0 end as bit) [ATTRIBUTEFORREPORTING]
from dbo.[ATTRIBUTECATEGORY] ac
inner join dbo.[ATTRIBUTERECORDTYPE] art on ac.[ATTRIBUTERECORDTYPEID] = art.[ID]
inner join dbo.[RECORDTYPE] rt on art.[RECORDTYPEID] = rt.[ID]
left join dbo.[ATTRIBUTEGROUPCODE] agc on ac.[ATTRIBUTEGROUPCODEID] = agc.[ID]
left join dbo.[OLAPDATASOURCEATTRIBUTECATEGORY] o on ac.[ID] = o.[ATTRIBUTECATEGORYID] and o.[OLAPDATASOURCEID] = @OLAPDATASOURCEID
cross join (
select cast('00000000-0000-0000-0000-000000000001' as uniqueidentifier) [ATTRIBUTEVALUESYSTEMID], cast('No' as nvarchar(100)) [ATTRIBUTEVALUE] union all
select cast('00000000-0000-0000-0000-000000000002' as uniqueidentifier), cast('Yes' as nvarchar(100))
) as [av]
where
ac.[DATATYPECODE] = 4 and
(
(ac.[DATECHANGED] > @OPENWINDOW and ac.[DATECHANGED] <= @CLOSEWINDOW) or
(agc.[DATECHANGED] > @OPENWINDOW and agc.[DATECHANGED] <= @CLOSEWINDOW) or
(rt.[DATECHANGED] > @OPENWINDOW and rt.[DATECHANGED] <= @CLOSEWINDOW) or
(o.[DATECHANGED] > @OPENWINDOW and o.[DATECHANGED] <= @CLOSEWINDOW)
)