DECLARE @BeginDate datetime = '2023-09-28';
DECLARE @from datetime;
DECLARE @to datetime;
DECLARE @Include BIT = 1;
SET @from = DATEADD(dd, DATEDIFF(dd, 0, @BeginDate), 0);
SET @to = DATEADD(dd, DATEDIFF(dd, -1, @BeginDate), 0);
IF OBJECT_ID('tempdb..#results') IS NOT NULL DROP TABLE #results;
CREATE TABLE #results
(
[BPID] [nvarchar](32) NOT NULL,
[DId] [bigint] NULL,
[Number] [nvarchar](32) NULL,
[Account] [nvarchar](32) NULL,
[LineOfBusinessDesc] [nvarchar](4) NULL,
[LineOfBusiness] [varchar](35) NULL,
[Channel] [varchar](35) NULL,
[ProductLine] [varchar](35) NULL,
[BusinessSegment] [varchar](35) NULL,
[LineOfBusinessType] [varchar](35) NULL
);
INSERT INTO #results
SELECT [PID]
,[DId]
,[Number]
,[Account]
,NULL
,NULL
,NULL
,NULL
,NULL
FROM dbo.DailyDataInfo
WHERE CreatedDate >= @from AND CreatedDate < @to;
IF @Include = 1
BEGIN
INSERT INTO #results
SELECT a.[PID]
,[DId]
,a.[Number]
,a.[Account]
,a.[LineOfBusiness]
,b.[LineOfBusiness]
,b.[Channel]
,b.[ProductLine]
,b.[BusinessSegment]
FROM dbo.OtherDailyData a
OUTER APPLY
(
SELECT TOP 1
Id,
x.Data.value('(//Data/Company/LineOfBusiness)[1]', 'varchar(30)') as LineOfBusiness,
x.Data.value('(//Data/Company/Channel)[1]', 'varchar(30)') as Channel,
x.Data.value('(//Data/Company/ProductLine)[1]', 'varchar(25)') as ProductLine,
x.Data.value('(//Data/Company/BusinessSegment)[1]', 'varchar(25)') as BusinessSegment
FROM dbo.TermData x
WHERE x.Reference = a.Number
ORDER BY x.Id DESC
) b
WHERE CreatedDate >= @from AND CreatedDate < @to;
END;
-- Select only the necessary columns
SELECT [BPID], [DId], [Number], [Account], [LineOfBusinessDesc], [LineOfBusiness], [Channel], [ProductLine], [BusinessSegment], [LineOfBusinessType] FROM #results;