UFN_MKTSEGMENTATIONASKLADDER_JOINSQL
Returns a SQL statement that can be used to join to the entry amount table/view for a given Ask Ladder.
Return
Return Type |
---|
nvarchar(4000) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ASKLADDERID | uniqueidentifier | IN | |
@PARENTTABLE | nvarchar(128) | IN | |
@PARENTPKFIELD | nvarchar(128) | IN | |
@PARENTALIAS | nvarchar(128) | IN | |
@JOINALIAS | nvarchar(128) | IN | |
@TABLENAME | nvarchar(128) | IN | |
@PKFIELDNAME | nvarchar(128) | IN |
Definition
Copy
CREATE function dbo.[UFN_MKTSEGMENTATIONASKLADDER_JOINSQL]
(
@ASKLADDERID uniqueidentifier,
@PARENTTABLE sysname,
@PARENTPKFIELD sysname,
@PARENTALIAS nvarchar(128),
@JOINALIAS nvarchar(128),
@TABLENAME nvarchar(128),
@PKFIELDNAME nvarchar(128)
)
returns nvarchar(4000)
as
begin
declare @ret nvarchar(4000);
declare @OBJECTKEY nvarchar(400);
select
@OBJECTKEY = isnull([OBJECTKEY], '')
from dbo.[MKTASKLADDER]
where [ID] = @ASKLADDERID;
if len(@OBJECTKEY) = 0 or @OBJECTKEY = '<none>' -- 2 = Fixed ladder
set @ret = null;
else
begin
declare @type1 int;
declare @type2 int;
select @type1 = [system_type_id] from sys.columns where [object_id] = object_id(@TABLENAME) and [name] = @PKFIELDNAME;
select @type2 = [system_type_id] from sys.columns where [object_id] = object_id(@PARENTTABLE) and [name] = @PARENTPKFIELD;
if @type1 = @type2
set @ret = 'left join dbo.[' + @TABLENAME + '] as [' + @JOINALIAS + '] on [' + @JOINALIAS + '].[' + @PKFIELDNAME + '] = [' + @PARENTALIAS + '].[' + @PARENTPKFIELD + ']';
else
set @ret = 'left join dbo.[' + @TABLENAME + '] as [' + @JOINALIAS + '] on cast([' + @JOINALIAS + '].[' + @PKFIELDNAME + '] as varchar(36)) = cast([' + @PARENTALIAS + '].[' + @PARENTPKFIELD + '] as varchar(36))';
end
return @ret;
end;