UFN_MKTSOURCECODE_GETPOSITION
Returns the position for a given source code item.
Return
Return Type |
---|
nvarchar(7) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCECODEITEMID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.[UFN_MKTSOURCECODE_GETPOSITION]
(
@SOURCECODEITEMID uniqueidentifier
)
/*
Returns a table of all of the source code items that have been assigned to the given source code layout
*/
returns nvarchar(7)
as
begin
declare @SOURCECODEID uniqueidentifier;
declare @SEQUENCE int;
declare @LENGTH int;
declare @TOTALLENGTH int;
declare @PREVIOUSTOTALLENGTH int;
select
@SOURCECODEID = [ITEM].[SOURCECODEID],
@SEQUENCE = [ITEM].[SEQUENCE],
@LENGTH = [ITEM].[TOTALLENGTH]
from
(select top 1
[MKTSOURCECODEITEM].[SOURCECODEID],
[MKTSOURCECODEITEM].[SEQUENCE],
case when len([MKTSOURCECODEPARTDEFINITIONVALUES].[DELIM]) > 0 then [MKTSOURCECODEPARTDEFINITIONVALUES].[LENGTH] + len([MKTSOURCECODEPARTDEFINITIONVALUES].[DELIM]) else [MKTSOURCECODEPARTDEFINITIONVALUES].[LENGTH] end as [TOTALLENGTH]
from dbo.[MKTSOURCECODEITEM]
inner join dbo.[MKTSOURCECODEVALIDPARTVALUES] on [MKTSOURCECODEVALIDPARTVALUES].MKTSOURCECODEITEMID = [MKTSOURCECODEITEM].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITIONVALUES] on [MKTSOURCECODEPARTDEFINITIONVALUES].[ID] = [MKTSOURCECODEVALIDPARTVALUES].[MKTSOURCECODEPARTDEFINITIONVALUESID]
where [MKTSOURCECODEITEM].[ID] = @SOURCECODEITEMID
group by [MKTSOURCECODEITEM].[SOURCECODEID], [MKTSOURCECODEITEM].[SEQUENCE], [MKTSOURCECODEPARTDEFINITIONVALUES].[LENGTH], [MKTSOURCECODEPARTDEFINITIONVALUES].[DELIM]
order by [TOTALLENGTH] desc) as [ITEM];
with [PREVIOUSITEMS] ([SOURCECODEID], [SEQUENCE], [TOTALLENGTH]) as
(
select
[MKTSOURCECODEITEM].[SOURCECODEID],
[MKTSOURCECODEITEM].[SEQUENCE],
max(case when len([MKTSOURCECODEPARTDEFINITIONVALUES].[DELIM]) > 0 then [MKTSOURCECODEPARTDEFINITIONVALUES].[LENGTH] + len([MKTSOURCECODEPARTDEFINITIONVALUES].[DELIM]) else [MKTSOURCECODEPARTDEFINITIONVALUES].[LENGTH] end) as [TOTALLENGTH]
from dbo.[MKTSOURCECODEITEM]
inner join dbo.[MKTSOURCECODEVALIDPARTVALUES] on [MKTSOURCECODEVALIDPARTVALUES].MKTSOURCECODEITEMID = [MKTSOURCECODEITEM].[ID]
inner join dbo.[MKTSOURCECODEPARTDEFINITIONVALUES] on [MKTSOURCECODEPARTDEFINITIONVALUES].[ID] = [MKTSOURCECODEVALIDPARTVALUES].[MKTSOURCECODEPARTDEFINITIONVALUESID]
where [SOURCECODEID] = @SOURCECODEID and [SEQUENCE] < @SEQUENCE
group by [MKTSOURCECODEITEM].[SOURCECODEID], [MKTSOURCECODEITEM].[SEQUENCE], [MKTSOURCECODEPARTDEFINITIONVALUES].[LENGTH]
)
select @PREVIOUSTOTALLENGTH = sum([TOTALLENGTH])
from [PREVIOUSITEMS];
set @PREVIOUSTOTALLENGTH = isnull(@PREVIOUSTOTALLENGTH, 0);
return cast(@PREVIOUSTOTALLENGTH + 1 as nvarchar(3))+' - '+ cast(@PREVIOUSTOTALLENGTH + @LENGTH as nvarchar(3));
end