UFN_SELECTIONMERGE_BUILDIDSELECTSQL
Return
Return Type |
---|
nvarchar(max) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SELECTIONID1 | uniqueidentifier | IN | |
@SELECTIONID2 | uniqueidentifier | IN | |
@MERGETYPECODE | tinyint | IN |
Definition
Copy
create function dbo.[UFN_SELECTIONMERGE_BUILDIDSELECTSQL]
(
@SELECTIONID1 uniqueidentifier,
@SELECTIONID2 uniqueidentifier,
@MERGETYPECODE tinyint = 0
)
returns nvarchar(max)
as
begin
declare @SELECTIONSQL1 nvarchar(max);
declare @SELECTIONSQL2 nvarchar(max);
declare @SQL nvarchar(max);
if @MERGETYPECODE is null
set @MERGETYPECODE = 0;
--Get the "select" statement sql for each selection...
select
@SELECTIONSQL1 = dbo.[UFN_SELECTIONHELPER_BUILDIDSELECTSQL](@SELECTIONID1),
@SELECTIONSQL2 = dbo.[UFN_SELECTIONHELPER_BUILDIDSELECTSQL](@SELECTIONID2);
--Build the selection merge sql...
if @SELECTIONSQL1 is not null and @SELECTIONSQL2 is not null
begin
if @MERGETYPECODE = 0 --Union
set @SQL = ' ' + @SELECTIONSQL1 + char(13) +
' union' + char(13) +
' ' + @SELECTIONSQL2 + char(13);
else if @MERGETYPECODE = 1 --Intersection
set @SQL = ' ' + @SELECTIONSQL1 + char(13) +
' intersect' + char(13) +
' ' + @SELECTIONSQL2 + char(13);
else if @MERGETYPECODE = 2 --Only in first (left minus right)
set @SQL = ' ' + @SELECTIONSQL1 + char(13) +
' except' + char(13) +
' ' + @SELECTIONSQL2 + char(13);
else if @MERGETYPECODE = 3 --Only in second (right minus left)
set @SQL = ' ' + @SELECTIONSQL2 + char(13) +
' except' + char(13) +
' ' + @SELECTIONSQL1 + char(13);
else if @MERGETYPECODE = 4 --Exclusive Or
set @SQL = ' (' + char(13) +
' ' + @SELECTIONSQL1 + char(13) +
' union' + char(13) +
' ' + @SELECTIONSQL2 + char(13) +
' )' + char(13) +
' except' + char(13) +
' (' + char(13) +
' ' + @SELECTIONSQL1 + char(13) +
' intersect' + char(13) +
' ' + @SELECTIONSQL2 + char(13) +
' )' + char(13);
end
return @SQL;
end