rc-migration-tests/ef-migration/infrastructure/sql-server/schemas/fw_schema_database_statements.sql

31822 lines
1.3 MiB

-- SCHEMA: fw
---------------------------------------------
-- TABLES
---------------------------------------------
---------------------------------------------
-- fw.ABBBudgetedCostPerRVU ------------------
---------------------------------------------
CREATE TABLE [fw].[ABBBudgetedCostPerRVU] (
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayCodeID] int NOT NULL,
[CostComponentID] int NOT NULL,
[CostingConfigGuid] uniqueidentifier NOT NULL,
[VariableDirectUnitCostPerRVU] decimal NULL,
[TotalVariableDirectCost] decimal NULL,
[TotalCost] decimal NULL
);
GO
---------------------------------------------
---------------------------------------------
-- fw.ABBFlexingReconciliation ------------------
---------------------------------------------
CREATE TABLE [fw].[ABBFlexingReconciliation] (
[RowID] int NOT NULL,
[CostingConfigGUID] uniqueidentifier NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[EntityID] int NOT NULL,
[DepartmentID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[AccountID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayCodeID] int NOT NULL,
[CostComponentID] int NOT NULL,
[ActualChargeUnits] decimal NOT NULL,
[ActualChargeUnitsYTD] decimal NOT NULL,
[ActualVariableDirectCost] decimal NOT NULL,
[ActualVariableDirectCostYTD] decimal NOT NULL,
[ActualFixedDirectCost] decimal NOT NULL,
[ActualFixedDirectCostYTD] decimal NOT NULL,
[BudgetChargeUnits] decimal NOT NULL,
[BudgetChargeUnitsYTD] decimal NOT NULL,
[BudgetVariableDirectCost] decimal NOT NULL,
[BudgetVariableDirectCostYTD] decimal NOT NULL,
[BudgetFixedDirectCost] decimal NOT NULL,
[BudgetFixedDirectCostYTD] decimal NOT NULL,
[FlexedVariableDirectCost] decimal NOT NULL,
[FlexedVariableDirectCostYTD] decimal NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE UNIQUE CLUSTERED INDEX [IX_Unique] ON [fw].[ABBFlexingReconciliation] ([CostingConfigGUID], [FiscalYearID], [FiscalMonthID], [EntityID], [DepartmentID], [ChargeCodeID], [AccountID], [JobCodeID], [PayCodeID], [CostComponentID]);
GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Costi__2637F561] DEFAULT (newid()) FOR [CostingConfigGUID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Fisca__272C199A] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Fisca__28203DD3] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Entit__2914620C] DEFAULT ((0)) FOR [EntityID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Depar__2A088645] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Charg__2AFCAA7E] DEFAULT ((0)) FOR [ChargeCodeID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Accou__2BF0CEB7] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__JobCo__2CE4F2F0] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__PayCo__2DD91729] DEFAULT ((0)) FOR [PayCodeID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__CostC__2ECD3B62] DEFAULT ((0)) FOR [CostComponentID]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Actua__2FC15F9B] DEFAULT ((0)) FOR [ActualChargeUnits]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Actua__30B583D4] DEFAULT ((0)) FOR [ActualChargeUnitsYTD]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Actua__31A9A80D] DEFAULT ((0)) FOR [ActualVariableDirectCost]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Actua__329DCC46] DEFAULT ((0)) FOR [ActualVariableDirectCostYTD]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Actua__3391F07F] DEFAULT ((0)) FOR [ActualFixedDirectCost]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Actua__348614B8] DEFAULT ((0)) FOR [ActualFixedDirectCostYTD]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Budge__357A38F1] DEFAULT ((0)) FOR [BudgetChargeUnits]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Budge__366E5D2A] DEFAULT ((0)) FOR [BudgetChargeUnitsYTD]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Budge__37628163] DEFAULT ((0)) FOR [BudgetVariableDirectCost]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Budge__3856A59C] DEFAULT ((0)) FOR [BudgetVariableDirectCostYTD]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Budge__394AC9D5] DEFAULT ((0)) FOR [BudgetFixedDirectCost]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Budge__3A3EEE0E] DEFAULT ((0)) FOR [BudgetFixedDirectCostYTD]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Flexe__3B331247] DEFAULT ((0)) FOR [FlexedVariableDirectCost]; GO
ALTER TABLE [fw].[ABBFlexingReconciliation] ADD CONSTRAINT [DF__ABBFlexin__Flexe__3C273680] DEFAULT ((0)) FOR [FlexedVariableDirectCostYTD]; GO
---------------------------------------------
---------------------------------------------
-- fw.ABBFlexingReconciliationCostingData ------------------
---------------------------------------------
CREATE TABLE [fw].[ABBFlexingReconciliationCostingData] (
[CostingConfigGUID] uniqueidentifier NOT NULL,
[EntityID] int NOT NULL,
[OriginalDepartmentID] int NOT NULL,
[OriginalJobCodeID] int NOT NULL,
[OriginalPayCodeID] int NOT NULL,
[OriginalAccountID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[FiscalYearID] int NOT NULL,
[FiscalMonthID] int NOT NULL,
[CostComponentID] int NOT NULL,
[FixedDirectUnitCost] decimal NOT NULL,
[VariableDirectUnitCost] decimal NOT NULL,
[BudgetFixedDirectUnitCost] decimal NOT NULL,
[BudgetVariableDirectUnitCost] decimal NOT NULL,
[ActualMonthlyVolume] decimal NOT NULL,
[BudgetedMonthlyVolume] decimal NOT NULL,
[RVU] money NOT NULL
);
CREATE NONCLUSTERED INDEX [IX_BudgetedMonthlyVolume] ON [fw].[ABBFlexingReconciliationCostingData] ([CostingConfigGUID], [OriginalDepartmentID], [OriginalJobCodeID], [OriginalPayCodeID], [OriginalAccountID], [ChargeCodeID], [FiscalYearID], [CostComponentID], [FiscalMonthID]) INCLUDE ([BudgetFixedDirectUnitCost], [BudgetedMonthlyVolume]);
CREATE NONCLUSTERED INDEX [IX_OriginalDepartmentID] ON [fw].[ABBFlexingReconciliationCostingData] ([OriginalDepartmentID]) INCLUDE ([CostingConfigGUID], [EntityID], [OriginalJobCodeID], [OriginalPayCodeID], [OriginalAccountID], [ChargeCodeID], [FiscalYearID], [FiscalMonthID], [CostComponentID], [FixedDirectUnitCost], [VariableDirectUnitCost], [BudgetFixedDirectUnitCost], [BudgetVariableDirectUnitCost], [ActualMonthlyVolume], [BudgetedMonthlyVolume]);
CREATE NONCLUSTERED INDEX [IX_viewABBFlexingReconciliation] ON [fw].[ABBFlexingReconciliationCostingData] ([EntityID], [OriginalDepartmentID], [ChargeCodeID], [FiscalYearID], [FiscalMonthID]) INCLUDE ([CostingConfigGUID], [OriginalJobCodeID], [OriginalPayCodeID], [OriginalAccountID], [CostComponentID], [FixedDirectUnitCost], [VariableDirectUnitCost], [BudgetFixedDirectUnitCost], [BudgetVariableDirectUnitCost], [ActualMonthlyVolume], [BudgetedMonthlyVolume]);
CREATE NONCLUSTERED INDEX [IX_ABBFlexingReconciliationCostingData_Perf1] ON [fw].[ABBFlexingReconciliationCostingData] ([CostingConfigGUID], [EntityID], [OriginalDepartmentID], [OriginalJobCodeID], [OriginalPayCodeID], [OriginalAccountID], [ChargeCodeID], [FiscalYearID], [CostComponentID], [FiscalMonthID]) INCLUDE ([BudgetFixedDirectUnitCost], [BudgetedMonthlyVolume]);
CREATE NONCLUSTERED INDEX [IX_ABBFlexingReconciliationCostingData_Perf2] ON [fw].[ABBFlexingReconciliationCostingData] ([CostingConfigGUID], [OriginalDepartmentID], [OriginalAccountID], [ChargeCodeID], [FiscalYearID]) INCLUDE ([EntityID], [OriginalJobCodeID], [OriginalPayCodeID], [FiscalMonthID], [CostComponentID], [FixedDirectUnitCost], [VariableDirectUnitCost], [BudgetFixedDirectUnitCost], [BudgetVariableDirectUnitCost], [ActualMonthlyVolume], [BudgetedMonthlyVolume], [RVU]);
GO
ALTER TABLE [fw].[ABBFlexingReconciliationCostingData] ADD CONSTRAINT [DF__ABBFlexingR__RVU__4C32B5C0] DEFAULT ((0.0)) FOR [RVU]; GO
---------------------------------------------
---------------------------------------------
-- fw.ABBFlexingReconciliationEncounterInfoData ------------------
---------------------------------------------
CREATE TABLE [fw].[ABBFlexingReconciliationEncounterInfoData] (
[DepartmentID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[ServiceLineID] int NOT NULL,
[FiscalYearID] int NOT NULL,
[PatientClassID] int NOT NULL,
[FiscalMonthID] int NOT NULL,
[EncounterCount] int NOT NULL
);
GO
---------------------------------------------
---------------------------------------------
-- fw.DepartmentChargeCodePrimaryStatisticMappingCache ------------------
---------------------------------------------
CREATE TABLE [fw].[DepartmentChargeCodePrimaryStatisticMappingCache] (
[RowID] bigint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[DepartmentID] int NOT NULL,
[OriginalDepartmentID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[PatientTypeRollupID] int NOT NULL,
[AccountID] int NOT NULL,
[Weight] decimal NOT NULL,
[IsStaffing] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [CORE_OriginalDepartmentID_FiscalYearID_ChargeCodeID_PatientTypeRollupID_IsStaffing] ON [fw].[DepartmentChargeCodePrimaryStatisticMappingCache] ([OriginalDepartmentID], [FiscalYearID], [ChargeCodeID], [PatientTypeRollupID], [IsStaffing]);
GO
---------------------------------------------
---------------------------------------------
-- fw.DepartmentChargeCodeStatisticMapping ------------------
---------------------------------------------
CREATE TABLE [fw].[DepartmentChargeCodeStatisticMapping] (
[RowID] bigint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[DepartmentRollupLevelMemberID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[PatientTypeRollupID] tinyint NOT NULL,
[AccountID] int NOT NULL,
[Weight] decimal NOT NULL,
[IsReviewed] bit NOT NULL,
[DepartmentRollupLevelMemberColumnName] nvarchar(64) NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [FK__Departmen__Charg__67D1ABB5] FOREIGN KEY ([ChargeCodeID]) REFERENCES [fw].[DimChargeCode] ([ChargeCodeID]); GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_DepartmentID] DEFAULT ((0)) FOR [DepartmentRollupLevelMemberID]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_ChargeCodeID] DEFAULT ((0)) FOR [ChargeCodeID]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_PatientTypeRollupID] DEFAULT ((0)) FOR [PatientTypeRollupID]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_Weight] DEFAULT ((0)) FOR [Weight]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_DepartmentRollupLevelMemberColumnName] DEFAULT ('DepartmentID') FOR [DepartmentRollupLevelMemberColumnName]; GO
ALTER TABLE [fw].[DepartmentChargeCodeStatisticMapping] ADD CONSTRAINT [DF_DepartmentChargeCodeStatisticMapping_IsReviewed] DEFAULT ((0)) FOR [IsReviewed]; GO
---------------------------------------------
---------------------------------------------
-- fw.DepartmentChargeCodeStatisticMappingCache ------------------
---------------------------------------------
CREATE TABLE [fw].[DepartmentChargeCodeStatisticMappingCache] (
[FiscalYearID] smallint NOT NULL,
[DepartmentID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[PatientTypeRollupID] int NOT NULL,
[AccountID] int NOT NULL,
[Weight] decimal NOT NULL
);
CREATE NONCLUSTERED INDEX [NCNU_DepartmentFisclaYearAccount] ON [fw].[DepartmentChargeCodeStatisticMappingCache] ([DepartmentID], [FiscalYearID], [AccountID]) INCLUDE ([ChargeCodeID], [PatientTypeRollupID], [Weight]);
GO
---------------------------------------------
---------------------------------------------
-- fw.DepartmentChargeCodeStatisticMappingStaffingCache ------------------
---------------------------------------------
CREATE TABLE [fw].[DepartmentChargeCodeStatisticMappingStaffingCache] (
[RowID] bigint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[DepartmentID] int NOT NULL,
[OriginalDepartmentID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[PatientTypeRollupID] int NOT NULL,
[AccountID] int NOT NULL,
[Weight] decimal NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [CORE_OriginalDepartmentID_FiscalYearID_ChargeCodeID_PatientTypeRollupID] ON [fw].[DepartmentChargeCodeStatisticMappingStaffingCache] ([OriginalDepartmentID], [FiscalYearID], [ChargeCodeID], [PatientTypeRollupID]);
GO
---------------------------------------------
---------------------------------------------
-- fw.DepartmentRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DepartmentRollup] (
[DepartmentRollupLevelID] tinyint NOT NULL,
[Description] nvarchar(100) NOT NULL,
PRIMARY KEY ([DepartmentRollupLevelID])
);
GO
ALTER TABLE [fw].[DepartmentRollup] ADD CONSTRAINT [CHK_FW_DepartmentRollup_DepartmentRollupLevelID] CHECK ([DepartmentRollupLevelID]>=(1) AND [DepartmentRollupLevelID]<=(9)); GO
---------------------------------------------
---------------------------------------------
-- fw.DimAccount ------------------
---------------------------------------------
CREATE TABLE [fw].[DimAccount] (
[AccountID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[AccountCode] nvarchar(40) NULL,
[Description] nvarchar(80) NOT NULL,
[GLRollup] nvarchar(100) NOT NULL,
[IsInverted] bit NOT NULL,
[Inversion] int NOT NULL,
[PatientClassID] int NOT NULL,
[PatientClass] nvarchar(100) NOT NULL,
[CAPIsDefined] bit NOT NULL,
[DSSIsDefined] bit NOT NULL,
[DSSCostComponent] nvarchar(50) NOT NULL,
[DSSStatisticDriver] nvarchar(50) NOT NULL,
[DSSAccountRollup1ID] int NOT NULL,
[DSSAccountRollup1Name] nvarchar(100) NOT NULL,
[DSSAccountRollup1Category] nvarchar(100) NOT NULL,
[DSSAccountRollup2ID] int NOT NULL,
[DSSAccountRollup2Name] nvarchar(100) NOT NULL,
[DSSAccountRollup3ID] int NOT NULL,
[DSSAccountRollup3Name] nvarchar(100) NOT NULL,
[MRIsDefined] bit NOT NULL,
[FlexStatistic] nvarchar(100) NOT NULL,
[FlexValue] money NOT NULL,
[FlexBucketGUID] uniqueidentifier NOT NULL,
[OBIsDefined] bit NOT NULL,
[IsStat] bit NOT NULL,
[IsGlobal] bit NOT NULL,
[IsExpense] bit NOT NULL,
[Variability] money NOT NULL,
[OBDollarsFinancialReportingID] int NOT NULL,
[OBDollarsFinancialReporting] varchar(200) NOT NULL,
[OBDollarsFinancialReportingCategory] nvarchar(100) NOT NULL,
[OBDollarsFinancialReportingLineName] nvarchar(100) NOT NULL,
[OBDollarsFinancialReportingSortOrder] int NOT NULL,
[OBUnitsFinancialReportingID] int NOT NULL,
[OBUnitsFinancialReporting] varchar(200) NOT NULL,
[OBUnitsFinancialReportingCategory] nvarchar(100) NOT NULL,
[OBUnitsFinancialReportingLineName] nvarchar(100) NOT NULL,
[OBUnitsFinancialReportingSortOrder] int NOT NULL,
[OBAccountPHID] int NOT NULL,
[OBModelSectionName] nvarchar(100) NOT NULL,
[OBStatModelSectionID] int NOT NULL,
[OBStatModelSectionName] nvarchar(100) NOT NULL,
[OBStatUnitTypeID] tinyint NOT NULL,
[OBUnitType] nvarchar(100) NOT NULL,
[OBPayorID] int NOT NULL,
[OBPayor] nvarchar(100) NOT NULL,
[OBPayorGroupID] int NOT NULL,
[OBPayorGroup] nvarchar(100) NOT NULL,
[SPIsDefined] bit NOT NULL,
[PatientTypeRollupID] tinyint NOT NULL,
[PatientTypeRollupName] nvarchar(200) NOT NULL,
[SPAccountRollupID] int NOT NULL,
[SPAccountRollupName] nvarchar(200) NOT NULL,
[SPStatAccountRollup] int NOT NULL,
[SPStatAccountRollupName] nvarchar(100) NOT NULL,
[SPAccountRollupCategory] nvarchar(100) NOT NULL,
[SPPayorGroupID] int NOT NULL,
[SPPayorGroupName] nvarchar(200) NOT NULL,
[SPPhysicianGroupID] int NOT NULL,
[SPPhysicianGroupName] nvarchar(200) NOT NULL,
[SPJobCodeGroupID] int NOT NULL,
[SPJobCodeGroupName] nvarchar(200) NOT NULL,
[SPCapitalRollupID] int NOT NULL,
[SPCapitalRollupName] nvarchar(200) NOT NULL,
[SPDebtIssuanceID] int NOT NULL,
[SPDebtIssuanceName] nvarchar(200) NOT NULL,
[SPIsPhysicianOverride] bit NOT NULL,
[PatientTypeID] int NOT NULL,
[OBStaffing] nvarchar(100) NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[DSSAccountRollup4ID] int NOT NULL,
[DSSAccountRollup4] varchar(100) NOT NULL,
[DSSAccountRollup4Name] varchar(200) NOT NULL,
[Name] nvarchar(123) NOT NULL,
[DSSAccountRollup2Category] nvarchar(100) NOT NULL,
[DSSAccountRollup3Category] nvarchar(100) NOT NULL,
[DSSAccountRollup4Category] varchar(200) NOT NULL,
[FWIsDefined] bit NOT NULL,
[AccountCodeRaw] nvarchar(100) NOT NULL,
[GMAccountRollup1] nvarchar(200) NOT NULL,
[GMAccountRollup2] nvarchar(200) NOT NULL,
[GMAccountRollup3] nvarchar(200) NOT NULL,
[GMAccountRollup4] nvarchar(200) NOT NULL,
[GMAccountRollup5] nvarchar(200) NOT NULL,
[GMAccountRollup6] nvarchar(200) NOT NULL,
[DSSAccountRollup5ID] int NOT NULL,
[DSSAccountRollup5Name] nvarchar(100) NOT NULL,
[DSSAccountRollup6ID] int NOT NULL,
[DSSAccountRollup6Name] nvarchar(100) NOT NULL,
[DSSAccountRollup7ID] int NOT NULL,
[DSSAccountRollup7Name] nvarchar(100) NOT NULL,
[SPHAccountRollupID] int NOT NULL,
[SPHAccountRollupName] varchar(606) NOT NULL,
[SPHAccountRollupConfidenceScore] float NOT NULL,
[SPHVariability] decimal NOT NULL,
[SPHCostComponent] nvarchar(400) NOT NULL,
[SPHCostComponentRollup] nvarchar(400) NOT NULL,
[GMAccountRollup7] nvarchar(200) NOT NULL,
[IsSPHCostModel] bit NOT NULL,
[SPHLineItem] nvarchar(200) NOT NULL,
[SPHStatement] nvarchar(200) NOT NULL,
[SPHCategory] nvarchar(200) NOT NULL,
[SPHSection] nvarchar(200) NOT NULL,
[SPHAccountRollupIsValidated] bit NOT NULL,
[IsCBP] bit NOT NULL,
PRIMARY KEY ([AccountID])
);
CREATE NONCLUSTERED INDEX [IX_AccountID_OBRollupIDs] ON [fw].[DimAccount] ([AccountID], [OBUnitsFinancialReportingID], [OBDollarsFinancialReportingID]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_Name] ON [fw].[DimAccount] ([Name]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_AccountCode] ON [fw].[DimAccount] ([AccountCode]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_MemberGUID] ON [fw].[DimAccount] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_AccountID] ON [fw].[DimAccount] ([AccountID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_AccountCode] ON [fw].[DimAccount] ([AccountCode]) INCLUDE ([AccountID]);
GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [FK_DimAccount_DimPatientType] FOREIGN KEY ([PatientTypeID]) REFERENCES [fw].[DimPatientType] ([PatientTypeID]); GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBIsD__3981D270] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__IsSta__3ECB39DB] DEFAULT ((0)) FOR [IsStat]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_IsGlobal] DEFAULT ((0)) FOR [IsGlobal]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__IsExp__4B7B9146] DEFAULT ((0)) FOR [IsExpense]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__FWIsD__053F7F3C] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_Variability] DEFAULT ((1)) FOR [Variability]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBDol__6DE91709] DEFAULT ((0)) FOR [OBDollarsFinancialReportingID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBDol__77728143] DEFAULT ('') FOR [OBDollarsFinancialReporting]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHAc__07AD771D] DEFAULT ((0)) FOR [SPHAccountRollupIsValidated]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SDSAc__08489CE8] DEFAULT ((0)) FOR [SPHAccountRollupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBDol__7866A57C] DEFAULT ('') FOR [OBDollarsFinancialReportingCategory]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SDSAc__093CC121] DEFAULT ('') FOR [SPHAccountRollupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBDol__7A4EEDEE] DEFAULT ('') FOR [OBDollarsFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBDol__2AF88001] DEFAULT ((0)) FOR [OBDollarsFinancialReportingSortOrder]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Confi__0B250993] DEFAULT ((0)) FOR [SPHAccountRollupConfidenceScore]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBUni__6EDD3B42] DEFAULT ((0)) FOR [OBUnitsFinancialReportingID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBUni__7B431227] DEFAULT ('') FOR [OBUnitsFinancialReporting]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBUni__7C373660] DEFAULT ('') FOR [OBUnitsFinancialReportingCategory]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBUni__7E1F7ED2] DEFAULT ('') FOR [OBUnitsFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBUni__2BECA43A] DEFAULT ((0)) FOR [OBUnitsFinancialReportingSortOrder]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBAcc__1178418C] DEFAULT ((0)) FOR [OBAccountPHID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBMod__6C52D8C0] DEFAULT ('') FOR [OBModelSectionName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBSta__20484969] DEFAULT ((0)) FOR [OBStatModelSectionID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBSta__213C6DA2] DEFAULT ('') FOR [OBStatModelSectionName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBSta__6A33241F] DEFAULT ((0)) FOR [OBStatUnitTypeID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_OBUnitType] DEFAULT ('') FOR [OBUnitType]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBPay__7CBCB405] DEFAULT ((0)) FOR [OBPayorID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_OBPayor] DEFAULT ('') FOR [OBPayor]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBPay__05F1E3DB] DEFAULT ((0)) FOR [OBPayorGroupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__OBPay__06E60814] DEFAULT ('') FOR [OBPayorGroup]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPIsD__3A75F6A9] DEFAULT ((0)) FOR [SPIsDefined]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Patie__6433C725] DEFAULT ((0)) FOR [PatientTypeRollupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Patie__7EB84298] DEFAULT ('') FOR [PatientTypeRollupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_FWDIMACCOUNTSPACCOUNTROLLUPID] DEFAULT ((0)) FOR [SPAccountRollupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPAcc__7FAC66D1] DEFAULT ('') FOR [SPAccountRollupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPSta__171085C4] DEFAULT ((0)) FOR [SPStatAccountRollup]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPSta__1804A9FD] DEFAULT ('') FOR [SPStatAccountRollupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPAcc__568D8309] DEFAULT ('') FOR [SPAccountRollupCategory]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_FWDIMACCOUNTSPPAYORGROUPID] DEFAULT ((0)) FOR [SPPayorGroupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPPay__00A08B0A] DEFAULT ('') FOR [SPPayorGroupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPPhy__431DB774] DEFAULT ((0)) FOR [SPPhysicianGroupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPPhy__0194AF43] DEFAULT ('') FOR [SPPhysicianGroupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_FWDIMACCOUNTSPJOBCODEGROUPID] DEFAULT ((0)) FOR [SPJobCodeGroupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPJob__0288D37C] DEFAULT ('') FOR [SPJobCodeGroupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__26C5CC2F] DEFAULT ((0)) FOR [DSSAccountRollup4ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_FWDIMACCOUNTSPCAPITALROLLUPID] DEFAULT ((0)) FOR [SPCapitalRollupID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__27B9F068] DEFAULT ('') FOR [DSSAccountRollup4]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPCap__037CF7B5] DEFAULT ('') FOR [SPCapitalRollupName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Histo__1AB06CF4] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__28AE14A1] DEFAULT ('') FOR [DSSAccountRollup4Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_FWDIMACCOUNTSPDEBTISSUANCEID] DEFAULT ((0)) FOR [SPDebtIssuanceID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPDeb__04711BEE] DEFAULT ('') FOR [SPDebtIssuanceName]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPIsP__6985EB4D] DEFAULT ((0)) FOR [SPIsPhysicianOverride]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_PatientTypeID] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_OBAccountRollup] DEFAULT ('') FOR [OBStaffing]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__FW_DimAccount_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__337C4859] DEFAULT ((0)) FOR [DSSAccountRollup5ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_FlexMetricGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexBucketGUID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__34706C92] DEFAULT ('') FOR [DSSAccountRollup5Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__356490CB] DEFAULT ((0)) FOR [DSSAccountRollup6ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__3658B504] DEFAULT ('') FOR [DSSAccountRollup6Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHVa__36E526EE] DEFAULT ((0)) FOR [SPHVariability]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__3AE6977F] DEFAULT ('') FOR [DSSAccountRollup2Category]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__3BDABBB8] DEFAULT ('') FOR [DSSAccountRollup3Category]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__3CCEDFF1] DEFAULT ('') FOR [DSSAccountRollup4Category]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__IsSPH__490F8F78] DEFAULT ((1)) FOR [IsSPHCostModel]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHCo__55F3BDF3] DEFAULT ('') FOR [SPHCostComponent]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHCo__56E7E22C] DEFAULT ('') FOR [SPHCostComponentRollup]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Accou__5B694101] DEFAULT ('') FOR [AccountCodeRaw]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHLi__68FE0774] DEFAULT ('') FOR [SPHLineItem]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHSt__69F22BAD] DEFAULT ('') FOR [SPHStatement]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHCa__6AE64FE6] DEFAULT ('') FOR [SPHCategory]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__SPHSe__6BDA741F] DEFAULT ('') FOR [SPHSection]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Membe__19BC48BB] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__6CDEB11D] DEFAULT ('') FOR [GMAccountRollup1]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_Code] DEFAULT ('') FOR [AccountCode]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__6DD2D556] DEFAULT ('') FOR [GMAccountRollup2]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_Description] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__6EC6F98F] DEFAULT ('') FOR [GMAccountRollup3]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GLRol__7BA49B88] DEFAULT ('') FOR [GLRollup]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__6FBB1DC8] DEFAULT ('') FOR [GMAccountRollup4]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__6FF38718] DEFAULT ('') FOR [GMAccountRollup7]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_IsInverted_1] DEFAULT ((0)) FOR [IsInverted]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__70AF4201] DEFAULT ('') FOR [GMAccountRollup5]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Patie__2765843A] DEFAULT ((0)) FOR [PatientClassID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__GMAcc__71A3663A] DEFAULT ('') FOR [GMAccountRollup6]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__Patie__2859A873] DEFAULT ('') FOR [PatientClass]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__72F7AEF0] DEFAULT ((0)) FOR [DSSAccountRollup7ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__CAPIs__36A565C5] DEFAULT ((0)) FOR [CAPIsDefined]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__73EBD329] DEFAULT ('') FOR [DSSAccountRollup7Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSIs__379989FE] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSCo__64355DD3] DEFAULT ('') FOR [DSSCostComponent]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSSt__1EBE2B32] DEFAULT ('') FOR [DSSStatisticDriver]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__07C9AFF4] DEFAULT ((0)) FOR [DSSAccountRollup1ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__0AA61C9F] DEFAULT ('') FOR [DSSAccountRollup1Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__08BDD42D] DEFAULT ('') FOR [DSSAccountRollup1Category]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__09B1F866] DEFAULT ((0)) FOR [DSSAccountRollup2ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__0B9A40D8] DEFAULT ('') FOR [DSSAccountRollup2Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__0D82894A] DEFAULT ((0)) FOR [DSSAccountRollup3ID]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__DSSAc__0C8E6511] DEFAULT ('') FOR [DSSAccountRollup3Name]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__MRIsD__388DAE37] DEFAULT ((0)) FOR [MRIsDefined]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__IsCBP__7E266EE8] DEFAULT ((0)) FOR [IsCBP]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF_DimAccount_FlexStatistic] DEFAULT ('') FOR [FlexStatistic]; GO
ALTER TABLE [fw].[DimAccount] ADD CONSTRAINT [DF__DimAccoun__FlexV__5CCDD875] DEFAULT ((0)) FOR [FlexValue]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimAgeCohort ------------------
---------------------------------------------
CREATE TABLE [fw].[DimAgeCohort] (
[AgeCohortID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[TimeMin] int NOT NULL,
[TimeMax] int NOT NULL,
[TimeMinUnit] nvarchar(100) NOT NULL,
[TimeMaxUnit] nvarchar(100) NOT NULL,
PRIMARY KEY ([AgeCohortID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimAgeCohort] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimAgeCohort] ([Name]);
GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__Histo__6CAF9E17] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__TimeM__12BB0C99] DEFAULT ((0)) FOR [TimeMin]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__TimeM__13AF30D2] DEFAULT ((0)) FOR [TimeMax]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__TimeM__177FC1B6] DEFAULT ('') FOR [TimeMinUnit]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__TimeM__1873E5EF] DEFAULT ('') FOR [TimeMaxUnit]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoho__Name__6AC755A5] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__Membe__6BBB79DE] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__Trans__6DA3C250] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoho__Code__6E97E689] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimAgeCohort] ADD CONSTRAINT [DF__DimAgeCoh__SortO__6F8C0AC2] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimAssumption ------------------
---------------------------------------------
CREATE TABLE [fw].[DimAssumption] (
[MemberGUID] uniqueidentifier NOT NULL,
[AssumptionID] int NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Category] nvarchar(100) NOT NULL,
[SubCategory] nvarchar(100) NOT NULL,
[Version] timestamp NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[DisplayFormat] nvarchar(200) NOT NULL,
[SPIsPastingValues] bit NOT NULL,
[SPIsProtectingRollingValues] bit NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([AssumptionID])
);
CREATE UNIQUE NONCLUSTERED INDEX [UQ__DimAssum__A67B3853390AD6E2] ON [fw].[DimAssumption] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__Histo__3EC3B038] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__SPIsP__0D3215CF] DEFAULT ((0)) FOR [SPIsProtectingRollingValues]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__SPIsP__0FBE0EFF] DEFAULT ((0)) FOR [SPIsPastingValues]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__Membe__3AF31F54] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssumpt__Name__3BE7438D] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__Categ__3CDB67C6] DEFAULT ('') FOR [Category]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__SubCa__3DCF8BFF] DEFAULT ('') FOR [SubCategory]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__FW_DimAssumption_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimAssumption] ADD CONSTRAINT [DF__DimAssump__Displ__7895EE7B] DEFAULT ('') FOR [DisplayFormat]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimCareSetting ------------------
---------------------------------------------
CREATE TABLE [fw].[DimCareSetting] (
[CareSettingID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[IsActive] bit NOT NULL,
PRIMARY KEY ([CareSettingID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimCareSetting] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimCareSetting] ([Name]);
GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSet__Name__2EBC8D3F] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSet__Code__2FB0B178] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSe__SortO__30A4D5B1] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSe__Membe__3198F9EA] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSe__Trans__3381425C] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSe__Histo__328D1E23] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimCareSetting] ADD CONSTRAINT [DF__DimCareSe__IsAct__77A48FDB] DEFAULT ((1)) FOR [IsActive]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimCareSettingPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimCareSettingPH] (
[CareSettingPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([CareSettingPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimCareSettingPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimCareSettingPH] ADD CONSTRAINT [DF__DimCareSet__Name__3E5F8ED9] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimCareSettingPH] ADD CONSTRAINT [DF__DimCareSe__Membe__3F53B312] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimCareSettingPH] ADD CONSTRAINT [DF__DimCareSe__Trans__413BFB84] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimCareSettingPH] ADD CONSTRAINT [DF__DimCareSe__Histo__4047D74B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimChargeCode ------------------
---------------------------------------------
CREATE TABLE [fw].[DimChargeCode] (
[ChargeCodeID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[ChargeCode] nvarchar(100) NOT NULL,
[Description] nvarchar(400) NOT NULL,
[IsDefined] bit NOT NULL,
[OBIsDefined] bit NOT NULL,
[IsRVU] bit NOT NULL,
[IsStatDriver] bit NOT NULL,
[ChargeIncrease] decimal NOT NULL,
[Category] nvarchar(200) NOT NULL,
[RVUWeight] decimal NOT NULL,
[StatType] nvarchar(50) NOT NULL,
[PatientTypeID] int NOT NULL,
[DSSIsDefined] bit NOT NULL,
[DayTypeID] int NOT NULL,
[DayType2ID] int NOT NULL,
[DayType3ID] int NOT NULL,
[UBRevenueCodeID] int NOT NULL,
[CPTID] int NOT NULL,
[IsActivityCost] bit NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[CostDriver] nvarchar(100) NOT NULL,
[Rollup] nvarchar(200) NOT NULL,
[IsPatientSpecific] bit NOT NULL,
[FWIsDefined] bit NOT NULL,
[DayType] nvarchar(443) NOT NULL,
[DayType2] nvarchar(443) NOT NULL,
[DayType3] nvarchar(443) NOT NULL,
[TimeStampWeight] decimal NOT NULL,
[IsTimeStamp] bit NOT NULL,
[TimeStampPrecedent] int NOT NULL,
[Name] nvarchar(503) NOT NULL,
[IsSPHSupplyCosting] bit NOT NULL,
[IsSPHTDCosting] bit NOT NULL,
[SPHChargeCodePrefix] nvarchar(100) NOT NULL,
PRIMARY KEY ([ChargeCodeID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_ChargeCode] ON [fw].[DimChargeCode] ([ChargeCode]) INCLUDE ([ChargeCodeID]);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimChargeCode] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [NCNU_DateTypeID] ON [fw].[DimChargeCode] ([DayTypeID]);
CREATE NONCLUSTERED INDEX [NUNC_ChargeCodeID_Name] ON [fw].[DimChargeCode] ([ChargeCodeID]) INCLUDE ([Name]);
CREATE NONCLUSTERED INDEX [NC_IDX_ChargeCode_IsPatntSpecifc] ON [fw].[DimChargeCode] ([IsPatientSpecific]) INCLUDE ([ChargeCodeID]);
GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF_DimChargeCode_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF_DimChargeCode_Code] DEFAULT ('') FOR [ChargeCode]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF_DimChargeCode_IsDefined] DEFAULT ((1)) FOR [IsDefined]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__FWIsD__0727C7AE] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__OBIsD__520432CE] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__IsRVU__42B8672A] DEFAULT ((0)) FOR [IsRVU]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__IsSta__7A0C62FD] DEFAULT ((1)) FOR [IsStatDriver]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__Charg__7BF4AB6F] DEFAULT ((0)) FOR [ChargeIncrease]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__Categ__78241A8B] DEFAULT ('') FOR [Category]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__RVUWe__7ED1181A] DEFAULT ((1)) FOR [RVUWeight]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF_IsPatient_Specific] DEFAULT ((1)) FOR [IsPatientSpecific]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__StatT__43AC8B63] DEFAULT ('') FOR [StatType]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__Patie__745389A7] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DSSIs__52F85707] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DayTy__19CCF6DE] DEFAULT ((0)) FOR [DayTypeID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DayTy__647D465B] DEFAULT ((0)) FOR [DayType2ID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DayTy__65716A94] DEFAULT ((0)) FOR [DayType3ID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__UBRev__6B40E931] DEFAULT ((0)) FOR [UBRevenueCodeID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__CPTID__6C350D6A] DEFAULT ((0)) FOR [CPTID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__IsAct__481D061C] DEFAULT ((0)) FOR [IsActivityCost]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__FW_DimChargeCode_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__Descr__50D54340] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__IsSPH__36460870] DEFAULT ((0)) FOR [IsSPHSupplyCosting]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF_DimChargeCode_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__IsSPH__373A2CA9] DEFAULT ((0)) FOR [IsSPHTDCosting]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__SPHCh__382E50E2] DEFAULT ('') FOR [SPHChargeCodePrefix]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__TimeS__38FC1ED2] DEFAULT ((0)) FOR [TimeStampWeight]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__TimeS__39F0430B] DEFAULT ((0)) FOR [IsTimeStamp]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__TimeS__3AE46744] DEFAULT ((0)) FOR [TimeStampPrecedent]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF_DimChargeCode_Rollup] DEFAULT ('') FOR [Rollup]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DayTy__6177EB69] DEFAULT ('') FOR [DayType]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DayTy__626C0FA2] DEFAULT ('') FOR [DayType2]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__DayTy__636033DB] DEFAULT ('') FOR [DayType3]; GO
ALTER TABLE [fw].[DimChargeCode] ADD CONSTRAINT [DF__DimCharge__CostD__6D4D57B1] DEFAULT ('') FOR [CostDriver]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimChargeCodePH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimChargeCodePH] (
[ChargeCodePHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([ChargeCodePHID])
);
GO
ALTER TABLE [fw].[DimChargeCodePH] ADD CONSTRAINT [DF__DimChargeCodePH_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimChargeCodePH] ADD CONSTRAINT [DF__DimChargeCodePH_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimChargeCodePH] ADD CONSTRAINT [DF__DimChargeCodePH_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimChargeCodePH] ADD CONSTRAINT [DF__DimChargeCodePH_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimColumnHider ------------------
---------------------------------------------
CREATE TABLE [fw].[DimColumnHider] (
[ColumnHiderID] tinyint NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([ColumnHiderID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_DimColumnHider] ON [fw].[DimColumnHider] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimColumnHider] ADD CONSTRAINT [DF_DimColumnHider_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimColumnHider] ADD CONSTRAINT [DF_DimColumnHider_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimColumnHider] ADD CONSTRAINT [DF__FW_DimColumnHider_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimColumnHider] ADD CONSTRAINT [DF__fw_DimColumnHider_Name] DEFAULT ('') FOR [Name]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimCompAnDepartment ------------------
---------------------------------------------
CREATE TABLE [fw].[DimCompAnDepartment] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[CompAnDepartmentID] int NOT NULL,
[CompAnDepartmentCode] nvarchar(10) NOT NULL,
[Description] nvarchar(200) NOT NULL,
[DescriptionLong] nvarchar(400) NOT NULL,
[CompAnDepartmentRollup1] nvarchar(200) NOT NULL,
[CompAnDepartmentRollup2] nvarchar(200) NOT NULL,
[CompAnDepartmentRollup3] nvarchar(200) NOT NULL,
[CompAnDepartmentRollup4] nvarchar(200) NOT NULL,
[CompAnPrimaryStat] nvarchar(200) NOT NULL,
[SPHDepartmentRollupID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([CompAnDepartmentID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_CompAnDepartmentCode] ON [fw].[DimCompAnDepartment] ([CompAnDepartmentCode]) INCLUDE ([CompAnDepartmentID]);
GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__Histo__62E79D70] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__CompA__64CFE5E2] DEFAULT ('') FOR [CompAnDepartmentCode]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__Descr__65C40A1B] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__Descr__66B82E54] DEFAULT ('') FOR [DescriptionLong]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__CompA__67AC528D] DEFAULT ('') FOR [CompAnDepartmentRollup1]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__CompA__68A076C6] DEFAULT ('') FOR [CompAnDepartmentRollup2]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__CompA__69949AFF] DEFAULT ('') FOR [CompAnDepartmentRollup3]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__CompA__6A88BF38] DEFAULT ('') FOR [CompAnDepartmentRollup4]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__CompA__6B7CE371] DEFAULT ('') FOR [CompAnPrimaryStat]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__SPHDe__6C7107AA] DEFAULT ((0)) FOR [SPHDepartmentRollupID]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__Membe__6D652BE3] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimCompAnDepartment] ADD CONSTRAINT [DF__DimCompAn__Trans__6E59501C] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimCompAnPeerGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimCompAnPeerGroup] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[CompAnPeerGroupID] int NOT NULL,
[Name] nvarchar(300) NOT NULL,
[Description] nvarchar(500) NOT NULL,
[CompAnPeerGroupCode] nvarchar(10) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([CompAnPeerGroupID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_CompAnPeerGroupCode] ON [fw].[DimCompAnPeerGroup] ([CompAnPeerGroupCode]) INCLUDE ([CompAnPeerGroupID]);
GO
ALTER TABLE [fw].[DimCompAnPeerGroup] ADD CONSTRAINT [DF__DimCompAn__Histo__3793F66E] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimCompAnPeerGroup] ADD CONSTRAINT [DF__DimCompAnP__Name__397C3EE0] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimCompAnPeerGroup] ADD CONSTRAINT [DF__DimCompAn__Descr__3A706319] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimCompAnPeerGroup] ADD CONSTRAINT [DF__DimCompAn__CompA__3B648752] DEFAULT ('') FOR [CompAnPeerGroupCode]; GO
ALTER TABLE [fw].[DimCompAnPeerGroup] ADD CONSTRAINT [DF__DimCompAn__Trans__3C58AB8B] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimCompAnPeerGroup] ADD CONSTRAINT [DF__DimCompAn__Membe__3D4CCFC4] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimConsolidatedFinancialReporting ------------------
---------------------------------------------
CREATE TABLE [fw].[DimConsolidatedFinancialReporting] (
[ConsolidatedFinancialReportingID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Statement] nvarchar(100) NOT NULL,
[Section] nvarchar(100) NOT NULL,
[LineName] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[Name] nvarchar(306) NOT NULL,
PRIMARY KEY ([ConsolidatedFinancialReportingID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimConsolidatedFinancialReporting] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimConsolidatedFinancialReporting] ADD CONSTRAINT [DF__DimConsol__Membe__24E2AF8A] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimConsolidatedFinancialReporting] ADD CONSTRAINT [DF__DimConsol__State__26CAF7FC] DEFAULT ('') FOR [Statement]; GO
ALTER TABLE [fw].[DimConsolidatedFinancialReporting] ADD CONSTRAINT [DF__DimConsol__Secti__27BF1C35] DEFAULT ('') FOR [Section]; GO
ALTER TABLE [fw].[DimConsolidatedFinancialReporting] ADD CONSTRAINT [DF__DimConsol__LineN__28B3406E] DEFAULT ('') FOR [LineName]; GO
ALTER TABLE [fw].[DimConsolidatedFinancialReporting] ADD CONSTRAINT [DF__DimConsol__SortO__29A764A7] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimConsolidatedFinancialReporting] ADD CONSTRAINT [DF__DimConsol__Histo__25D6D3C3] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDataType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDataType] (
[DataTypeID] tinyint NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[GlobalID] varchar(32) NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([DataTypeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDataType] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimDataType] ADD CONSTRAINT [DF__DimDataTyp__Name__363E1B39] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimDataType] ADD CONSTRAINT [DF__DimDataTy__Globa__3D40E9DA] DEFAULT ('') FOR [GlobalID]; GO
ALTER TABLE [fw].[DimDataType] ADD CONSTRAINT [DF__DimDataTy__Membe__37323F72] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDataType] ADD CONSTRAINT [DF__DimDataTy__Histo__382663AB] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDataType] ADD CONSTRAINT [DF__FW_DimDataType_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDate ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDate] (
[DateID] int NOT NULL,
[DayNumberOfWeek] tinyint NOT NULL,
[DayNameOfWeek] nvarchar(10) NOT NULL,
[DayNumberOfMonth] tinyint NOT NULL,
[DayNumberOfYear] smallint NOT NULL,
[WeekNumberOfYear] tinyint NOT NULL,
[IsWeekDay] bit NOT NULL,
[CalendarQuarter] tinyint NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[CalendarDateTime] smalldatetime NOT NULL,
[CalendarYear] smallint NOT NULL,
[CalendarMonth] tinyint NOT NULL,
[CalendarMonthName] varchar(100) NOT NULL,
[FiscalYear] smallint NOT NULL,
[FiscalYearName] varchar(6) NOT NULL,
[FiscalMonth] tinyint NOT NULL,
[TransactionID] int NOT NULL,
[FiscalQuarter] varchar(15) NOT NULL,
[YearMonth] nvarchar(25) NOT NULL,
[MonthYear] nvarchar(100) NOT NULL,
[PremierMapping] varchar(8000) NULL,
[DaysInMonth] int NOT NULL,
PRIMARY KEY ([DateID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDate] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_CalendarDateTime] ON [fw].[DimDate] ([CalendarDateTime]);
GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__DaysInM__0105A55B] DEFAULT ((0)) FOR [DaysInMonth]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__FiscalQ__4E0FADA6] DEFAULT ('') FOR [FiscalQuarter]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__YearMon__11882458] DEFAULT ('') FOR [YearMonth]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__MonthYe__1CB7E171] DEFAULT ('Not Specified') FOR [MonthYear]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__FiscalM__1F65094C] DEFAULT ((0)) FOR [FiscalMonth]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__DayNumb__087F41EF] DEFAULT ((0)) FOR [DayNumberOfWeek]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__DayName__09736628] DEFAULT ((0)) FOR [DayNameOfWeek]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__DayNumb__0A678A61] DEFAULT ((0)) FOR [DayNumberOfMonth]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__DayNumb__0B5BAE9A] DEFAULT ((0)) FOR [DayNumberOfYear]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__WeekNum__0C4FD2D3] DEFAULT ((0)) FOR [WeekNumberOfYear]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__IsWeekD__0D43F70C] DEFAULT ((0)) FOR [IsWeekDay]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__Calenda__0E381B45] DEFAULT ((0)) FOR [CalendarQuarter]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__History__102063B7] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF_CalendarDateTime] DEFAULT ('1900-01-01 0:00') FOR [CalendarDateTime]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__Calenda__7EC0CD8B] DEFAULT ((0)) FOR [CalendarYear]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__Calenda__7FB4F1C4] DEFAULT ((1)) FOR [CalendarMonth]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__Calenda__00A915FD] DEFAULT ('') FOR [CalendarMonthName]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__DimDate__FiscalY__019D3A36] DEFAULT ((0)) FOR [FiscalYear]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF__FW_DimDate_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDate] ADD CONSTRAINT [DF_FWDIMDATEMEMBERGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDayType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDayType] (
[DayTypeID] int NOT NULL,
[DayTypeCode] nvarchar(40) NOT NULL,
[Description] nvarchar(400) NOT NULL,
[PrecedentOrder] int NOT NULL,
[GlobalID] nvarchar(50) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[TransactionID] int NOT NULL,
[Name] nvarchar(443) NOT NULL,
PRIMARY KEY ([DayTypeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDayType] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_DayTypeCode] ON [fw].[DimDayType] ([DayTypeCode]) INCLUDE ([DayTypeID]);
GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__DayTy__15FC65FA] DEFAULT ('') FOR [DayTypeCode]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__Prece__17E4AE6C] DEFAULT ((0)) FOR [PrecedentOrder]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__Globa__18D8D2A5] DEFAULT ('') FOR [GlobalID]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__Descr__16F08A33] DEFAULT ('Not Specified') FOR [Description]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__Membe__5AA69602] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__Rollu__69D3CAF9] DEFAULT ('') FOR [Rollup]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__DimDayTyp__Histo__5B9ABA3B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDayType] ADD CONSTRAINT [DF__FW_DimDayType_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDayofStay ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDayofStay] (
[DayofStayID] int NOT NULL,
[Name] nvarchar(50) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([DayofStayID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDayofStay] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimDayofStay] ADD CONSTRAINT [DF__DimDayofS__Histo__60C0F8B9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDayofStay] ADD CONSTRAINT [DF__DimDayofSt__Name__5ED8B047] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimDayofStay] ADD CONSTRAINT [DF__DimDayofS__Membe__5FCCD480] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDayofStay] ADD CONSTRAINT [DF__FW_DimDayofStay_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartment ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartment] (
[DepartmentID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[DepartmentCode] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[SystemID] smallint NOT NULL,
[System] nvarchar(100) NOT NULL,
[SystemSortOrder] int NOT NULL,
[EntityID] int NOT NULL,
[Entity] nvarchar(303) NULL,
[EntitySortOrder] int NOT NULL,
[EntityTypeOverride] smallint NOT NULL,
[DepartmentRollup1ID] smallint NOT NULL,
[DepartmentRollup1] nvarchar(200) NOT NULL,
[DepartmentRollup1SortOrder] int NOT NULL,
[DepartmentRollup2ID] smallint NOT NULL,
[DepartmentRollup2] nvarchar(200) NOT NULL,
[DepartmentRollup2SortOrder] int NOT NULL,
[DepartmentRollup3ID] smallint NOT NULL,
[DepartmentRollup3] nvarchar(200) NOT NULL,
[DepartmentRollup3SortOrder] int NOT NULL,
[DepartmentRollup4ID] int NOT NULL,
[DepartmentRollup4] nvarchar(200) NOT NULL,
[DepartmentRollup4SortOrder] int NOT NULL,
[DepartmentRollup5ID] smallint NOT NULL,
[DepartmentRollup5] nvarchar(200) NOT NULL,
[DepartmentRollup5SortOrder] int NOT NULL,
[DepartmentRollup6ID] smallint NOT NULL,
[DepartmentRollup6] nvarchar(200) NOT NULL,
[DepartmentRollup6SortOrder] int NOT NULL,
[CareSettingID] int NOT NULL,
[CareSetting] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[IsDepartmentRollup] bit NOT NULL,
[FunctionalAreaID] int NOT NULL,
[FunctionalArea] nvarchar(100) NOT NULL,
[ResearchDepartmentCategoryID] int NOT NULL,
[ResearchDepartmentCategoryName] nvarchar(100) NOT NULL,
[ResearchDepartmentCategorySortOrder] int NOT NULL,
[AttributionTypeID] int NOT NULL,
[AttributionType] nvarchar(200) NOT NULL,
[CAPIsDefined] bit NOT NULL,
[IsCAP] bit NOT NULL,
[DSSIsDefined] bit NOT NULL,
[IsDSS] bit NOT NULL,
[DepartmentTypeOLD] nvarchar(100) NOT NULL,
[DSSDeptGrouping] nvarchar(200) NOT NULL,
[DSSDepartmentRollup1ID] int NOT NULL,
[DSSDepartmentRollup1Name] nvarchar(100) NOT NULL,
[DSSDepartmentRollup2ID] int NOT NULL,
[DSSDepartmentRollup2Name] nvarchar(100) NOT NULL,
[DSSDepartmentRollup3ID] int NOT NULL,
[DSSDepartmentRollup3Name] nvarchar(100) NOT NULL,
[IsOverhead] bit NOT NULL,
[OBIsDefined] bit NOT NULL,
[IsOB] bit NOT NULL,
[IsMRPlan] bit NOT NULL,
[IsActive] bit NOT NULL,
[IsVariable] bit NOT NULL,
[IsAccountFlexing] bit NOT NULL,
[FlexingBucketGUID] uniqueidentifier NOT NULL,
[OBGlobalStatisticsPlanID] int NOT NULL,
[OBGlobalStatisticsPlan] nvarchar(1000) NOT NULL,
[OBReimbursementPlanID] int NOT NULL,
[OBReimbursementPlan] nvarchar(458) NOT NULL,
[OBServiceLinePlanID] int NOT NULL,
[OBServiceLinePlan] nvarchar(458) NOT NULL,
[SPIsDefined] bit NOT NULL,
[IsLRFP] bit NOT NULL,
[RollingPlanID] int NOT NULL,
[SPRollingForecastPlanName] nvarchar(200) NOT NULL,
[OpsPlanID] int NOT NULL,
[SPOperationsPlanName] nvarchar(200) NOT NULL,
[BalPlanID] int NOT NULL,
[SPBalanceSheetPlanName] nvarchar(200) NOT NULL,
[PatientTypeRollup] tinyint NOT NULL,
[PatientTypeRollupName] nvarchar(100) NOT NULL,
[SPJobCodeGroup] int NOT NULL,
[SPJobCodeGroupName] nvarchar(100) NOT NULL,
[SPPhysicianGroup] int NOT NULL,
[SPPhysicianGroupName] nvarchar(100) NOT NULL,
[SPAccountRollup] int NOT NULL,
[SPAccountRollupName] nvarchar(100) NOT NULL,
[SPServiceLineForecastType] smallint NOT NULL,
[ConsolidatedCode] nvarchar(100) NOT NULL,
[IsConsolidated] bit NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Name] nvarchar(203) NOT NULL,
[SecureGroupID] int NOT NULL,
[WorkWeekID] int NOT NULL,
[CAPDefaultSalesTax] float NOT NULL,
[EntityCode] nvarchar(100) NOT NULL,
[FundID] int NOT NULL,
[Fund] nvarchar(100) NOT NULL,
[FundSortOrder] int NOT NULL,
[ProjectID] int NOT NULL,
[Project] nvarchar(100) NOT NULL,
[ProjectSortOrder] int NOT NULL,
[HomeDepartmentID] int NOT NULL,
[HomeDepartment] nvarchar(100) NOT NULL,
[HomeDepartmentSortOrder] int NOT NULL,
[ProgramID] int NOT NULL,
[Program] nvarchar(100) NOT NULL,
[ProgramSortOrder] int NOT NULL,
[PayCycleID] int NOT NULL,
[FWIsDefined] bit NOT NULL,
[DepartmentTypeID] int NOT NULL,
[DepartmentType] nvarchar(200) NOT NULL,
[DepartmentCodeRaw] nvarchar(100) NOT NULL,
[IsPR] bit NOT NULL,
[MRVicePresident] nvarchar(400) NOT NULL,
[MRDirector] nvarchar(400) NOT NULL,
[MRManager] nvarchar(400) NOT NULL,
[IsMROrPR] int NOT NULL,
[IsMRMetricTracking] bit NOT NULL,
[IsHealthPlanAdmin] bit NOT NULL,
[DepartmentRollup1Code] nvarchar(200) NOT NULL,
[DepartmentRollup2Code] nvarchar(200) NOT NULL,
[DepartmentRollup3Code] nvarchar(200) NOT NULL,
[DepartmentRollup4Code] nvarchar(200) NOT NULL,
[DepartmentRollup5Code] nvarchar(200) NOT NULL,
[DepartmentRollup6Code] nvarchar(200) NOT NULL,
[DSSDepartmentRollup4Name] nvarchar(100) NOT NULL,
[DSSDepartmentRollup4ID] int NOT NULL,
[DSSDepartmentRollup5ID] int NOT NULL,
[DSSDepartmentRollup5Name] nvarchar(100) NOT NULL,
[DSSDepartmentRollup6ID] int NOT NULL,
[DSSDepartmentRollup6Name] nvarchar(200) NOT NULL,
[DSSDepartmentRollup7ID] int NOT NULL,
[DSSDepartmentRollup7Name] nvarchar(100) NOT NULL,
[SPHDepartmentRollupID] int NOT NULL,
[SPHDepartmentRollupName] nvarchar(200) NOT NULL,
[SPHDepartmentRollupConfidenceScore] float NOT NULL,
[SPHDepartmentTypeID] int NOT NULL,
[SPHDepartmentType] nvarchar(200) NOT NULL,
[IsClaimsCosting] bit NOT NULL,
[SPHDepartmentRollupIsValidated] bit NOT NULL,
[CompAnDepartmentID] int NOT NULL,
[ProductivityPercentileID] int NOT NULL,
[ProductivityPercentile] nvarchar(200) NOT NULL,
[CompAnDepartment] nvarchar(200) NOT NULL,
[SPHDepartmentID] int NOT NULL,
[SPHDepartmentConfidenceScore] float NOT NULL,
[SPHDepartmentIsValidated] bit NOT NULL,
[SPHDepartmentName] nvarchar(200) NOT NULL,
PRIMARY KEY ([DepartmentID])
);
CREATE NONCLUSTERED INDEX [IX_MemberGUID] ON [fw].[DimDepartment] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_Hierarchy] ON [fw].[DimDepartment] ([DepartmentID], [DepartmentRollup1ID], [DepartmentRollup2ID], [DepartmentRollup3ID], [DepartmentRollup4ID], [DepartmentRollup5ID], [DepartmentRollup6ID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_DepartmentCode] ON [fw].[DimDepartment] ([DepartmentCode]) INCLUDE ([DepartmentID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup1ID] ON [fw].[DimDepartment] ([DepartmentRollup1ID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup2ID] ON [fw].[DimDepartment] ([DepartmentRollup2ID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup3ID] ON [fw].[DimDepartment] ([DepartmentRollup3ID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup4ID] ON [fw].[DimDepartment] ([DepartmentRollup4ID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup5ID] ON [fw].[DimDepartment] ([DepartmentRollup5ID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup6ID] ON [fw].[DimDepartment] ([DepartmentRollup6ID]);
CREATE NONCLUSTERED INDEX [NCNU_EntityID] ON [fw].[DimDepartment] ([DepartmentID], [EntityID]);
CREATE NONCLUSTERED INDEX [NCNU_DimDepartment_IsMRorPR_DepartmentID] ON [fw].[DimDepartment] ([IsMROrPR], [DepartmentID]) INCLUDE ([Name]);
GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__CareS__459FF297] DEFAULT ('') FOR [CareSetting]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__PayCy__481E3507] DEFAULT ((0)) FOR [PayCycleID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__485769AE] DEFAULT ((0)) FOR [DSSDepartmentRollup4ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Entit__485BCA24] DEFAULT ('') FOR [EntityCode]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SortO__71693472] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__494B8DE7] DEFAULT ((0)) FOR [DSSDepartmentRollup5ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsDep__59BF8EFC] DEFAULT ((0)) FOR [IsDepartmentRollup]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__4A3FB220] DEFAULT ('') FOR [DSSDepartmentRollup5Name]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Funct__11FA2A12] DEFAULT ((0)) FOR [FunctionalAreaID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__FundI__4B24BEE4] DEFAULT ((0)) FOR [FundID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__4B33D659] DEFAULT ((0)) FOR [DSSDepartmentRollup6ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Funct__12EE4E4B] DEFAULT ('') FOR [FunctionalArea]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepartm__Fund__4C18E31D] DEFAULT ('') FOR [Fund]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Resea__3B12E4EC] DEFAULT ((0)) FOR [ResearchDepartmentCategoryID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__FundS__4D0D0756] DEFAULT ((0)) FOR [FundSortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__4D1C1ECB] DEFAULT ((0)) FOR [DSSDepartmentRollup7ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Resea__3C070925] DEFAULT ('') FOR [ResearchDepartmentCategoryName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Proje__4E012B8F] DEFAULT ((0)) FOR [ProjectID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__4E104304] DEFAULT ('') FOR [DSSDepartmentRollup7Name]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Resea__3CFB2D5E] DEFAULT ((0)) FOR [ResearchDepartmentCategorySortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Proje__4EF54FC8] DEFAULT ('') FOR [Project]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Attri__4E4FD692] DEFAULT ((0)) FOR [AttributionTypeID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Proje__4FE97401] DEFAULT ((0)) FOR [ProjectSortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Attri__4F43FACB] DEFAULT ('') FOR [AttributionType]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__HomeD__50DD983A] DEFAULT ((0)) FOR [HomeDepartmentID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__CAPIs__3B6A1AE2] DEFAULT ((0)) FOR [CAPIsDefined]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__HomeD__51D1BC73] DEFAULT ('') FOR [HomeDepartment]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__HomeD__52C5E0AC] DEFAULT ((0)) FOR [HomeDepartmentSortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSIs__3C5E3F1B] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Progr__53BA04E5] DEFAULT ((0)) FOR [ProgramID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsDSS__3A68A7AC] DEFAULT ((0)) FOR [IsDSS]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Progr__54AE291E] DEFAULT ('') FOR [Program]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Entit__3D5D504C] DEFAULT ((0)) FOR [EntityID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTDEPARTMENTTYPE] DEFAULT ('Not Specified') FOR [DepartmentTypeOLD]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Progr__55A24D57] DEFAULT ((0)) FOR [ProgramSortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__6711CA7E] DEFAULT ('') FOR [DSSDeptGrouping]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__3C3D7833] DEFAULT ((0)) FOR [DSSDepartmentRollup1ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__3D319C6C] DEFAULT ('') FOR [DSSDepartmentRollup1Name]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__3E25C0A5] DEFAULT ((0)) FOR [DSSDepartmentRollup2ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__3F19E4DE] DEFAULT ('') FOR [DSSDepartmentRollup2Name]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__5A751CC8] DEFAULT ('') FOR [DepartmentCodeRaw]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__400E0917] DEFAULT ((0)) FOR [DSSDepartmentRollup3ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__41022D50] DEFAULT ('') FOR [DSSDepartmentRollup3Name]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_IsCAP] DEFAULT ((0)) FOR [IsCAP]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsOve__191A2EAB] DEFAULT ((0)) FOR [IsOverhead]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBIsD__3D526354] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTISOB] DEFAULT ((0)) FOR [IsOB]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTISMRPLAN] DEFAULT ((0)) FOR [IsMRPlan]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__60630048] DEFAULT ((0)) FOR [DepartmentTypeID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTISACTIVE] DEFAULT ((0)) FOR [IsActive]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__61572481] DEFAULT ('') FOR [DepartmentType]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsVar__5062D5C3] DEFAULT ((0)) FOR [IsVariable]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_IsAcctFlexing] DEFAULT ((0)) FOR [IsAccountFlexing]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBGlo__69DEE9BB] DEFAULT ((0)) FOR [OBGlobalStatisticsPlanID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__MRVic__65137223] DEFAULT ('') FOR [MRVicePresident]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBGlo__6AD30DF4] DEFAULT ('') FOR [OBGlobalStatisticsPlan]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__MRDir__6607965C] DEFAULT ('') FOR [MRDirector]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBRei__6BC7322D] DEFAULT ((0)) FOR [OBReimbursementPlanID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__MRMan__66FBBA95] DEFAULT ('') FOR [MRManager]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBRei__6CBB5666] DEFAULT ('') FOR [OBReimbursementPlan]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBSer__6DAF7A9F] DEFAULT ((0)) FOR [OBServiceLinePlanID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__OBSer__6EA39ED8] DEFAULT ('') FOR [OBServiceLinePlan]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPIsD__3E46878D] DEFAULT ((0)) FOR [SPIsDefined]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_FlexingBucketGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexingBucketGUID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_IsLRFP] DEFAULT ((1)) FOR [IsLRFP]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTROLLINGPLANID] DEFAULT ((0)) FOR [RollingPlanID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsCla__6CAD0619] DEFAULT ((0)) FOR [IsClaimsCosting]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPRol__22017ED5] DEFAULT ('') FOR [SPRollingForecastPlanName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTOPSPLANID] DEFAULT ((0)) FOR [OpsPlanID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPOpe__363D81AC] DEFAULT ('') FOR [SPOperationsPlanName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__CompA__6F4D7455] DEFAULT ((0)) FOR [CompAnDepartmentID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_FWDIMDEPARTMENTBALPLANID] DEFAULT ((0)) FOR [BalPlanID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPBal__72526BB3] DEFAULT ('') FOR [SPBalanceSheetPlanName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Patie__05630FEC] DEFAULT ((0)) FOR [PatientTypeRollup]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__46620409] DEFAULT ((0)) FOR [SPHDepartmentID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Patie__06573425] DEFAULT ('') FOR [PatientTypeRollupName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__47562842] DEFAULT ((0)) FOR [SPHDepartmentConfidenceScore]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__JobCo__074B585E] DEFAULT ((0)) FOR [SPJobCodeGroup]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__484A4C7B] DEFAULT ((0)) FOR [SPHDepartmentIsValidated]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__JobCo__083F7C97] DEFAULT ('') FOR [SPJobCodeGroupName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPPhy__0933A0D0] DEFAULT ((0)) FOR [SPPhysicianGroup]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPPhy__0A27C509] DEFAULT ('') FOR [SPPhysicianGroupName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPAcc__0B1BE942] DEFAULT ((0)) FOR [SPAccountRollup]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPAcc__0C100D7B] DEFAULT ('') FOR [SPAccountRollupName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPSer__595774EA] DEFAULT ((0)) FOR [SPServiceLineForecastType]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_ConsolidatedCode] DEFAULT ('') FOR [ConsolidatedCode]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsHea__020F09F7] DEFAULT ((0)) FOR [IsHealthPlanAdmin]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_IsConsolidated] DEFAULT ((0)) FOR [IsConsolidated]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__FWIsD__044B5B03] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__4FEB6E43] DEFAULT ('') FOR [SPHDepartmentName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__FW_DimDepartment_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__05C52EAB] DEFAULT ((0)) FOR [SPHDepartmentRollupIsValidated]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Produ__0BB4A8D9] DEFAULT ((0)) FOR [ProductivityPercentileID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__17CBA2F1] DEFAULT ((0)) FOR [SPHDepartmentRollupID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__18BFC72A] DEFAULT ('') FOR [SPHDepartmentRollupName]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__IsMRM__1988D110] DEFAULT ((0)) FOR [IsMRMetricTracking]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__19B3EB63] DEFAULT ((0)) FOR [SPHDepartmentRollupConfidenceScore]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__WorkW__20F64D92] DEFAULT ((0)) FOR [WorkWeekID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_datacap_DimCapitalDepartment_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_IsPR] DEFAULT ((0)) FOR [IsPR]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimCapitalDepartment_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimDepartment_Code] DEFAULT ('') FOR [DepartmentCode]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF_DimCapitalDepartment_Department] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Syste__3A80E3A1] DEFAULT ((0)) FOR [SystemID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Syste__3B7507DA] DEFAULT ('') FOR [System]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__30C9F8E0] DEFAULT ('') FOR [DepartmentRollup1Code]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Syste__3C692C13] DEFAULT ((0)) FOR [SystemSortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__4C27FA92] DEFAULT ('') FOR [DSSDepartmentRollup6Name]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__31BE1D19] DEFAULT ('') FOR [DepartmentRollup2Code]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__32B24152] DEFAULT ('') FOR [DepartmentRollup3Code]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Entit__3E517485] DEFAULT ('') FOR [Entity]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__33A6658B] DEFAULT ('') FOR [DepartmentRollup4Code]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Entit__3F4598BE] DEFAULT ((0)) FOR [EntitySortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__349A89C4] DEFAULT ('') FOR [DepartmentRollup5Code]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Entit__7898B414] DEFAULT ((-1)) FOR [EntityTypeOverride]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__358EADFD] DEFAULT ('') FOR [DepartmentRollup6Code]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__39DB38A1] DEFAULT ((0)) FOR [DepartmentRollup1ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__3D2D71EF] DEFAULT ('') FOR [DepartmentRollup1]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Produ__37932B17] DEFAULT ('') FOR [ProductivityPercentile]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__5C6E178C] DEFAULT ((0)) FOR [DepartmentRollup1SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__37D94B27] DEFAULT ((0)) FOR [SPHDepartmentTypeID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__CompA__38874F50] DEFAULT ('') FOR [CompAnDepartment]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__7313B5FD] DEFAULT ((0)) FOR [DepartmentRollup2ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__3E219628] DEFAULT ('') FOR [DepartmentRollup2]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__5D623BC5] DEFAULT ((0)) FOR [DepartmentRollup2SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__043E41FF] DEFAULT ((0)) FOR [DepartmentRollup3ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__3F15BA61] DEFAULT ('') FOR [DepartmentRollup3]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__5E565FFE] DEFAULT ((0)) FOR [DepartmentRollup3SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__05326638] DEFAULT ((0)) FOR [DepartmentRollup4ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__4009DE9A] DEFAULT ('') FOR [DepartmentRollup4]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__5F4A8437] DEFAULT ((0)) FOR [DepartmentRollup4SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__06268A71] DEFAULT ((0)) FOR [DepartmentRollup5ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__40FE02D3] DEFAULT ('') FOR [DepartmentRollup5]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__603EA870] DEFAULT ((0)) FOR [DepartmentRollup5SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__071AAEAA] DEFAULT ((0)) FOR [DepartmentRollup6ID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__41F2270C] DEFAULT ('') FOR [DepartmentRollup6]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__CAPDe__457F5D79] DEFAULT ((0)) FOR [CAPDefaultSalesTax]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__Depar__6132CCA9] DEFAULT ((0)) FOR [DepartmentRollup6SortOrder]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__CareS__44ABCE5E] DEFAULT ((0)) FOR [CareSettingID]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__SPHDe__471B8EB7] DEFAULT ('') FOR [SPHDepartmentType]; GO
ALTER TABLE [fw].[DimDepartment] ADD CONSTRAINT [DF__DimDepart__DSSDe__47634575] DEFAULT ('') FOR [DSSDepartmentRollup4Name]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentPH] (
[MemberGUID] uniqueidentifier NOT NULL,
[DepartmentPHID] tinyint NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Version] timestamp NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([DepartmentPHID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_DimDepartmentPH] ON [fw].[DimDepartmentPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimDepartmentPH] ADD CONSTRAINT [DF_DimDepartmentPH_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentPH] ADD CONSTRAINT [DF_DimDepartmentPH_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimDepartmentPH] ADD CONSTRAINT [DF_DimDepartmentPH_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentPH] ADD CONSTRAINT [DF__FW_DimDepartmentPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentRollup1 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentRollup1] (
[DepartmentRollup1ID] smallint NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Code] nvarchar(200) NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(303) NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([DepartmentRollup1ID])
);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup1ID] ON [fw].[DimDepartmentRollup1] ([DepartmentRollup1ID]);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDepartmentRollup1] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__DimDepart__Histo__0A612FA9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__DimDepart__Elimi__518DFE68] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__DimDepart__SortO__52E4AD52] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__DimDepart__Membe__096D0B70] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__DimDepartm__Code__0B5553E2] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__FW_DimDepartmentRollup1_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentRollup1] ADD CONSTRAINT [DF__DimDepart__Descr__780914CE] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentRollup2 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentRollup2] (
[DepartmentRollup2ID] smallint NOT NULL,
[Code] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(303) NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([DepartmentRollup2ID])
);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup2ID] ON [fw].[DimDepartmentRollup2] ([DepartmentRollup2ID]);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDepartmentRollup2] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__DimDepart__Histo__16C7068E] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__DimDepart__SortO__4A4F6751] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__DimDepart__Elimi__528222A1] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__DimDepartm__Code__14DEBE1C] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__DimDepart__Membe__15D2E255] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__FW_DimDepartmentRollup2_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentRollup2] ADD CONSTRAINT [DF__DimDepart__Descr__78FD3907] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentRollup3 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentRollup3] (
[DepartmentRollup3ID] smallint NOT NULL,
[Code] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(200) NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([DepartmentRollup3ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDepartmentRollup3] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup3ID] ON [fw].[DimDepartmentRollup3] ([DepartmentRollup3ID]);
GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__DimDepart__SortO__41BA2150] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__DimDepart__Elimi__537646DA] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__DimDepart__Histo__26FD6E57] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__DimDepartm__Code__251525E5] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__DimDepart__Membe__26094A1E] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__FW_DimDepartmentRollup3_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentRollup3] ADD CONSTRAINT [DF__DimDepart__Descr__79F15D40] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentRollup4 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentRollup4] (
[DepartmentRollup4ID] int NOT NULL,
[Code] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([DepartmentRollup4ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDepartmentRollup4] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup4ID] ON [fw].[DimDepartmentRollup4] ([DepartmentRollup4ID]);
GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__DimDepart__Histo__3363453C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__DimDepart__SortO__3924DB4F] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__DimDepart__Elimi__546A6B13] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__DimDepartm__Code__317AFCCA] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__DimDepart__Membe__326F2103] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__FW_DimDepartmentRollup4_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentRollup4] ADD CONSTRAINT [DF__DimDepart__Descr__7AE58179] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentRollup5 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentRollup5] (
[DepartmentRollup5ID] smallint NOT NULL,
[Code] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([DepartmentRollup5ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDepartmentRollup5] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup5ID] ON [fw].[DimDepartmentRollup5] ([DepartmentRollup5ID]);
GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__DimDepartm__Code__3DE0D3AF] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__DimDepart__Membe__3ED4F7E8] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__DimDepart__SortO__308F954E] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__DimDepart__Elimi__555E8F4C] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__DimDepart__Histo__3FC91C21] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__FW_DimDepartmentRollup5_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentRollup5] ADD CONSTRAINT [DF__DimDepart__Descr__7BD9A5B2] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentRollup6 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentRollup6] (
[DepartmentRollup6ID] smallint NOT NULL,
[Code] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([DepartmentRollup6ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimDepartmentRollup6] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_DepartmentRollup6ID] ON [fw].[DimDepartmentRollup6] ([DepartmentRollup6ID]);
GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__DimDepartm__Code__4A46AA94] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__DimDepart__Membe__4B3ACECD] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__DimDepart__SortO__27FA4F4D] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__DimDepart__Elimi__5652B385] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__DimDepart__Histo__4C2EF306] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__FW_DimDepartmentRollup6_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentRollup6] ADD CONSTRAINT [DF__DimDepart__Descr__7CCDC9EB] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimDepartmentType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimDepartmentType] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[DepartmentTypeID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Rollup] nvarchar(1000) NOT NULL,
PRIMARY KEY ([DepartmentTypeID])
);
GO
ALTER TABLE [fw].[DimDepartmentType] ADD CONSTRAINT [DF__DimDepart__Histo__59B602B9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimDepartmentType] ADD CONSTRAINT [DF__DimDepartm__Name__5B9E4B2B] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimDepartmentType] ADD CONSTRAINT [DF__DimDepart__Trans__5C926F64] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimDepartmentType] ADD CONSTRAINT [DF__DimDepart__Membe__5D86939D] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimDepartmentType] ADD CONSTRAINT [DF__DimDepart__Rollu__5E7AB7D6] DEFAULT ('') FOR [Rollup]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimEmployee ------------------
---------------------------------------------
CREATE TABLE [fw].[DimEmployee] (
[EmployeeID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[NameLast] nvarchar(200) NOT NULL,
[NameFirst] nvarchar(200) NOT NULL,
[Number] nvarchar(200) NOT NULL,
[JobCodeID] int NOT NULL,
[JobCode] nvarchar(151) NOT NULL,
[JobCodeCode] nvarchar(100) NOT NULL,
[Code] nvarchar(200) NOT NULL,
[OBIsDefined] bit NOT NULL,
[WageRate] money NOT NULL,
[IsProvider] bit NOT NULL,
[ProviderID] int NOT NULL,
[IsVariable] bit NOT NULL,
[HireDate] datetime NOT NULL,
[IsActive] bit NOT NULL,
[Status] nvarchar(100) NOT NULL,
[NextReview] datetime NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[WorkWeekOverrideID] int NOT NULL,
[HomeDepartmentID] int NOT NULL,
[HomeDepartment] nvarchar(203) NOT NULL,
[HomeDepartmentCode] nvarchar(100) NOT NULL,
[NameFull] nvarchar(401) NOT NULL,
[EmployeeCohortID] int NOT NULL,
[EmployeeCohortName] nvarchar(100) NOT NULL,
[EmployeeCohortContractDate] datetime NOT NULL,
[EmployeeCohortMeritType] nvarchar(100) NOT NULL,
[StandardHours] nvarchar(100) NOT NULL,
[FWIsDefined] bit NOT NULL,
[TerminationDate] datetime NOT NULL,
[AdjustedHireDate] datetime NOT NULL,
[FTETotal] float NOT NULL,
[HomeAccountID] int NOT NULL,
[HomeAccount] nvarchar(100) NOT NULL,
[HomeAccountCode] nvarchar(100) NOT NULL,
[EmployeeClass] nvarchar(100) NOT NULL,
[Name] nvarchar(707) NOT NULL,
[NPI] nvarchar(50) NOT NULL,
[PositionControlNumber] nvarchar(100) NOT NULL,
PRIMARY KEY ([EmployeeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimEmployee] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [NCNU_IsProvider] ON [fw].[DimEmployee] ([EmployeeID], [IsProvider]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Code] ON [fw].[DimEmployee] ([Code]) INCLUDE ([EmployeeID]);
CREATE NONCLUSTERED INDEX [CORE_HomeDepartmentID_inc] ON [fw].[DimEmployee] ([HomeDepartmentID]) INCLUDE ([Name]);
GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__FWIsD__081BEBE7] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Emplo__100E1AB7] DEFAULT ((0)) FOR [EmployeeCohortID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Emplo__11023EF0] DEFAULT ('') FOR [EmployeeCohortName]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Emplo__11F66329] DEFAULT (getdate()) FOR [EmployeeCohortContractDate]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Emplo__12EA8762] DEFAULT ('') FOR [EmployeeCohortMeritType]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Stand__13DEAB9B] DEFAULT ('40') FOR [StandardHours]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__WorkW__24C6DE76] DEFAULT ((0)) FOR [WorkWeekOverrideID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF_DimEmployee_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__NameL__4D6EC6B0] DEFAULT ('') FOR [NameLast]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__NameF__4C7AA277] DEFAULT ('') FOR [NameFirst]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Numbe__574A0949] DEFAULT ('') FOR [Number]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__JobCo__59F6619E] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__JobCo__690C57C1] DEFAULT ('') FOR [JobCode]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Posit__454AB6E3] DEFAULT ('') FOR [PositionControlNumber]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__JobCo__150BA0E7] DEFAULT ('') FOR [JobCodeCode]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__CodeN__1170E584] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__OBIsD__18F14064] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__WageR__58E0795C] DEFAULT ((0)) FOR [WageRate]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__IsPro__5C19DD28] DEFAULT ((0)) FOR [IsProvider]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Provi__72A7A338] DEFAULT ((0)) FOR [ProviderID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__IsVar__6A007BFA] DEFAULT ((0)) FOR [IsVariable]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF_FWDIMEMPLOYEEHIREDATE] DEFAULT (getdate()) FOR [HireDate]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__IsAct__5BBEE049] DEFAULT ((1)) FOR [IsActive]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF_DimEmployee_Status] DEFAULT ('') FOR [Status]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF_FWDIMEMPLOYEENEXTREVIEW] DEFAULT (getdate()) FOR [NextReview]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__FW_DimEmployee_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF_DimEmployee_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__HomeD__5F943537] DEFAULT ((0)) FOR [HomeDepartmentID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__HomeD__60885970] DEFAULT ('') FOR [HomeDepartment]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Termi__61221A57] DEFAULT ('1900-01-01 0:00') FOR [TerminationDate]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__HomeD__617C7DA9] DEFAULT ('') FOR [HomeDepartmentCode]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Adjus__62163E90] DEFAULT ('1900-01-01 0:00') FOR [AdjustedHireDate]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__FTETo__630A62C9] DEFAULT ((0)) FOR [FTETotal]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__HomeA__63FE8702] DEFAULT ((0)) FOR [HomeAccountID]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmployee__NPI__648666AC] DEFAULT ('') FOR [NPI]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__HomeA__64F2AB3B] DEFAULT ('') FOR [HomeAccount]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__HomeA__65E6CF74] DEFAULT ('') FOR [HomeAccountCode]; GO
ALTER TABLE [fw].[DimEmployee] ADD CONSTRAINT [DF__DimEmploy__Emplo__66DAF3AD] DEFAULT ('') FOR [EmployeeClass]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimEmployeeCohort ------------------
---------------------------------------------
CREATE TABLE [fw].[DimEmployeeCohort] (
[EmployeeCohortID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(200) NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] nvarchar(100) NOT NULL,
[MeritType] nvarchar(100) NOT NULL,
[ContractDate] datetime NOT NULL,
PRIMARY KEY ([EmployeeCohortID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimEmployeeCohort] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__Histo__755A247B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploye__Name__7371DC09] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__Membe__74660042] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__Trans__764E48B4] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__Descr__77426CED] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploye__Code__78369126] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__SortO__792AB55F] DEFAULT ('') FOR [SortOrder]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__Merit__7A1ED998] DEFAULT ('') FOR [MeritType]; GO
ALTER TABLE [fw].[DimEmployeeCohort] ADD CONSTRAINT [DF__DimEmploy__Contr__7C07220A] DEFAULT (getdate()) FOR [ContractDate]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimEmployeePH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimEmployeePH] (
[EmployeePHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([EmployeePHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimEmployeePH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimEmployeePH] ADD CONSTRAINT [DF__DimEmploy__Membe__64A40467] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimEmployeePH] ADD CONSTRAINT [DF__DimEmploye__Name__63AFE02E] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimEmployeePH] ADD CONSTRAINT [DF__FW_DimEmployeePH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimEntity ------------------
---------------------------------------------
CREATE TABLE [fw].[DimEntity] (
[EntityID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Code] nvarchar(200) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[EntityType] smallint NOT NULL,
[IsActive] bit NOT NULL,
[CAPIsDefined] bit NOT NULL,
[DSSIsDefined] bit NOT NULL,
[OBIsDefined] bit NOT NULL,
[OBBenefitsDepartmentID] int NOT NULL,
[OBBenefitsDepartment] nvarchar(203) NOT NULL,
[OBHasGlobalStatisticsPlan] bit NOT NULL,
[OBHasReimbursementPlan] bit NOT NULL,
[OBHasServiceLinePlan] bit NOT NULL,
[OBIsUsingProviderComp] bit NOT NULL,
[SPIsDefined] bit NOT NULL,
[SPGrossChargesPatientTypeRollup] smallint NOT NULL,
[SPGrossChargesPayorGroup] smallint NOT NULL,
[SPContractualsPatientTypeRollup] smallint NOT NULL,
[SPContractualsPayorGroup] smallint NOT NULL,
[SPIPVolumesPatientTypeRollup] smallint NOT NULL,
[SPIPVolumesPayorGroup] smallint NOT NULL,
[SPIPDaysPatientTypeRollup] smallint NOT NULL,
[SPIPDaysPayorGroup] smallint NOT NULL,
[SPOPVolumesPatientTypeRollup] smallint NOT NULL,
[SPOPVolumesPayorGroup] smallint NOT NULL,
[SPFTEsJobCodeGroup] smallint NOT NULL,
[SPSalariesJobCodeGroup] smallint NOT NULL,
[SPClinicGrossChargesPayorGroup] smallint NOT NULL,
[SPClinicContractualsPayorGroup] smallint NOT NULL,
[SPClinicPrimaryVolumePhysicianGroup] smallint NOT NULL,
[SPClinicSecondaryVolumePhysicianGroup] smallint NOT NULL,
[SPClinicFTEsPhysicianGroup] smallint NOT NULL,
[SPClinicSalariesPhysicianGroup] smallint NOT NULL,
[SPServiceLineForecastType] smallint NOT NULL,
[SPOperationsSLDrivenModelID] int NOT NULL,
[SPRollingForecastSLDrivenModelID] int NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(303) NOT NULL,
[SecureGroupID] int NOT NULL,
[WorkWeekID] int NOT NULL,
[CAPDefaultSalesTax] float NOT NULL,
[PayCycleID] int NOT NULL,
[FWIsDefined] bit NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
[CompAnPeerGroupID] int NOT NULL,
PRIMARY KEY ([EntityID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimEntity] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [CORE_CodeUnique] ON [fw].[DimEntity] ([Code]);
GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__FWIsD__0633A375] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Membe__30F77967] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Code__33D3E612] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Descr__34C80A4B] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Histo__31EB9DA0] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SortO__35BC2E84] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Entit__0E6D5739] DEFAULT ((0)) FOR [EntityType]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__IsAct__56439C10] DEFAULT ((1)) FOR [IsActive]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__CAPIs__35F4660A] DEFAULT ((0)) FOR [CAPIsDefined]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__DSSIs__36E88A43] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBIsD__37DCAE7C] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBBen__6A84FC7E] DEFAULT ('') FOR [OBBenefitsDepartment]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBHas__6F97C311] DEFAULT ((0)) FOR [OBHasGlobalStatisticsPlan]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBHas__337982C0] DEFAULT ((0)) FOR [OBHasReimbursementPlan]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBHas__346DA6F9] DEFAULT ((0)) FOR [OBHasServiceLinePlan]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBIsU__2E02373A] DEFAULT ((0)) FOR [OBIsUsingProviderComp]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPIsD__38D0D2B5] DEFAULT ((0)) FOR [SPIsDefined]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__WorkW__20022959] DEFAULT ((0)) FOR [WorkWeekID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPGro__0F617B72] DEFAULT ((0)) FOR [SPGrossChargesPatientTypeRollup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPGro__1149C3E4] DEFAULT ((0)) FOR [SPGrossChargesPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCon__10559FAB] DEFAULT ((0)) FOR [SPContractualsPatientTypeRollup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCon__123DE81D] DEFAULT ((0)) FOR [SPContractualsPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPIPV__13320C56] DEFAULT ((0)) FOR [SPIPVolumesPatientTypeRollup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPIPV__1426308F] DEFAULT ((0)) FOR [SPIPVolumesPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPIPD__151A54C8] DEFAULT ((0)) FOR [SPIPDaysPatientTypeRollup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPIPD__160E7901] DEFAULT ((0)) FOR [SPIPDaysPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPOPV__17029D3A] DEFAULT ((0)) FOR [SPOPVolumesPatientTypeRollup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPOPV__17F6C173] DEFAULT ((0)) FOR [SPOPVolumesPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPFTE__1EA3BF02] DEFAULT ((0)) FOR [SPFTEsJobCodeGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPSal__1DAF9AC9] DEFAULT ((0)) FOR [SPSalariesJobCodeGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCli__1BC75257] DEFAULT ((0)) FOR [SPClinicGrossChargesPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCli__1CBB7690] DEFAULT ((0)) FOR [SPClinicContractualsPayorGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCli__1F97E33B] DEFAULT ((0)) FOR [SPClinicPrimaryVolumePhysicianGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCli__208C0774] DEFAULT ((0)) FOR [SPClinicSecondaryVolumePhysicianGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCli__19DF09E5] DEFAULT ((0)) FOR [SPClinicFTEsPhysicianGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPCli__1AD32E1E] DEFAULT ((0)) FOR [SPClinicSalariesPhysicianGroup]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPSer__52AA775B] DEFAULT ((0)) FOR [SPServiceLineForecastType]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPOpe__0CD7E447] DEFAULT ((0)) FOR [SPOperationsSLDrivenModelID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__OBBen__5D2B0160] DEFAULT ((0)) FOR [OBBenefitsDepartmentID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__SPRol__0DCC0880] DEFAULT ((0)) FOR [SPRollingForecastSLDrivenModelID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Trans__32DFC1D9] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__CompA__3E40F3FD] DEFAULT ((0)) FOR [CompAnPeerGroupID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__CAPDe__448B3940] DEFAULT ((0)) FOR [CAPDefaultSalesTax]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__PayCy__472A10CE] DEFAULT ((0)) FOR [PayCycleID]; GO
ALTER TABLE [fw].[DimEntity] ADD CONSTRAINT [DF__DimEntity__Elimi__5099DA2F] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimEntityPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimEntityPH] (
[EntityPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([EntityPHID])
);
GO
ALTER TABLE [fw].[DimEntityPH] ADD CONSTRAINT [DF__DimEntityPH_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimEntityPH] ADD CONSTRAINT [DF__DimEntityPH_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimEntityPH] ADD CONSTRAINT [DF__DimEntityPH_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimEntityPH] ADD CONSTRAINT [DF__DimEntityPH_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFiscalMonth ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFiscalMonth] (
[MemberGUID] uniqueidentifier NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[SortOrder] tinyint NOT NULL,
[FiscalMonthCode] nvarchar(20) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Abbreviation] nvarchar(3) NOT NULL,
[DaysInMonth] int NOT NULL,
[YTDDaysInMonth] int NOT NULL,
[QuarterID] tinyint NOT NULL,
[MonthColumnName] nvarchar(7) NOT NULL,
[Version] timestamp NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[DaysInLeapYearMonth] int NOT NULL,
[YTDDaysInLeapYearMonth] int NOT NULL,
[IsReal] bit NOT NULL,
PRIMARY KEY ([FiscalMonthID])
);
CREATE NONCLUSTERED INDEX [IX_Name] ON [fw].[DimFiscalMonth] ([Name]);
CREATE NONCLUSTERED INDEX [IX_FiscalMonthCode] ON [fw].[DimFiscalMonth] ([FiscalMonthCode]);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimFiscalMonth] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_CalendarMonthID] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_Abbreviation] DEFAULT ('') FOR [Abbreviation]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_FWDIMFISCALMONTHFISCALMONTHCODE] DEFAULT ('0') FOR [FiscalMonthCode]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_DaysInMonth] DEFAULT ((0)) FOR [DaysInMonth]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_YTDDaysInMonth] DEFAULT ((0)) FOR [YTDDaysInMonth]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF__DimFiscal__Quart__6B860C20] DEFAULT ((0)) FOR [QuarterID]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_DimFiscalMonth_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF__DimFiscal__IsRea__4EA04A0D] DEFAULT ((0)) FOR [IsReal]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF__DimFiscal__DaysI__5551D9DC] DEFAULT ((0)) FOR [DaysInLeapYearMonth]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF__DimFiscal__YTDDa__5645FE15] DEFAULT ((0)) FOR [YTDDaysInLeapYearMonth]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF_FWDIMFISCALMONTHFISCALMONTHID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[DimFiscalMonth] ADD CONSTRAINT [DF__FW_DimFiscalMonth_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFiscalTime ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFiscalTime] (
[FiscalTimeID] int NOT NULL,
[FiscalTime] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[YearMonth] nvarchar(25) NOT NULL,
[FiscalYearMonth] nvarchar(12) NOT NULL,
[CountFromCurrentMonth] int NOT NULL,
[StartDate] datetime NOT NULL,
[EndDate] datetime NOT NULL,
PRIMARY KEY ([FiscalTimeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimFiscalTime] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Fisca__07354875] DEFAULT ('') FOR [FiscalTime]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Membe__08296CAE] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Trans__0A11B520] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Fisca__0B05D959] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Fisca__0BF9FD92] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__YearM__0CEE21CB] DEFAULT ('') FOR [YearMonth]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Histo__091D90E7] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Fisca__4F8782DD] DEFAULT ('') FOR [FiscalYearMonth]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Count__72BC7BD8] DEFAULT ((0)) FOR [CountFromCurrentMonth]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__Start__73B0A011] DEFAULT (getdate()) FOR [StartDate]; GO
ALTER TABLE [fw].[DimFiscalTime] ADD CONSTRAINT [DF__DimFiscal__EndDa__74A4C44A] DEFAULT (getdate()) FOR [EndDate]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFiscalYear ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFiscalYear] (
[MemberGUID] uniqueidentifier NOT NULL,
[FiscalYearID] smallint NOT NULL,
[Name] nvarchar(20) NOT NULL,
[SortOrder] nvarchar(10) NOT NULL,
[Version] timestamp NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[IsSP] bit NOT NULL,
[TransactionID] int NOT NULL,
[IsCAP] bit NOT NULL,
PRIMARY KEY ([FiscalYearID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_MemberGUID] ON [fw].[DimFiscalYear] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF__DimFiscalY__IsSP__01014914] DEFAULT ((0)) FOR [IsSP]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF_FWDIMFISCALYEARFISCALYEARID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF_DimFiscalYear_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF_DimFiscalYear_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF_DimFiscalYear_SortOrder] DEFAULT ('') FOR [SortOrder]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF_DimFiscalYear_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF__DimFiscal__IsCAP__4F946E46] DEFAULT ((0)) FOR [IsCAP]; GO
ALTER TABLE [fw].[DimFiscalYear] ADD CONSTRAINT [DF__FW_DimFiscalYear_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFiscalYearPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFiscalYearPH] (
[MemberGUID] uniqueidentifier NOT NULL,
[FiscalYearPHID] tinyint NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Version] timestamp NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([FiscalYearPHID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_DimFiscalYearPH] ON [fw].[DimFiscalYearPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFiscalYearPH] ADD CONSTRAINT [DF__FW_DimFiscalYearPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFiscalYearPH] ADD CONSTRAINT [DF_DimFiscalYearPH_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFiscalYearPH] ADD CONSTRAINT [DF_DimFiscalYearPH_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimFiscalYearPH] ADD CONSTRAINT [DF_DimFiscalYearPH_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFlag ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFlag] (
[FlagID] int NOT NULL,
[Name] nvarchar(203) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
PRIMARY KEY ([FlagID])
);
CREATE NONCLUSTERED INDEX [NCU_Code] ON [fw].[DimFlag] ([Code]);
GO
ALTER TABLE [fw].[DimFlag] ADD CONSTRAINT [DF__DimFlag__MemberG__1A867D5D] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFlag] ADD CONSTRAINT [DF__DimFlag__History__1B7AA196] DEFAULT (newid()) FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFlag] ADD CONSTRAINT [DF__DimFlag__Transac__1C6EC5CF] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFlag] ADD CONSTRAINT [DF__DimFlag__Code__1D62EA08] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimFlag] ADD CONSTRAINT [DF__DimFlag__Descrip__1E570E41] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFlexJobCodeGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFlexJobCodeGroup] (
[FlexJobCodeGroupID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([FlexJobCodeGroupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimFlexJobCodeGroup] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFlexJobCodeGroup] ADD CONSTRAINT [DF__DimFlexJo__Histo__3F076A14] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFlexJobCodeGroup] ADD CONSTRAINT [DF__DimFlexJob__Name__3D1F21A2] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimFlexJobCodeGroup] ADD CONSTRAINT [DF__DimFlexJo__Membe__3E1345DB] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFlexJobCodeGroup] ADD CONSTRAINT [DF__DimFlexJo__Trans__3FFB8E4D] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFlexJobCodeGroup] ADD CONSTRAINT [DF__DimFlexJob__Code__40EFB286] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimFlexJobCodeGroup] ADD CONSTRAINT [DF__DimFlexJo__SortO__41E3D6BF] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimForecastDetail ------------------
---------------------------------------------
CREATE TABLE [fw].[DimForecastDetail] (
[ForecastDetailID] int NOT NULL,
[ForecastDetailCode] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(200) NOT NULL,
[Name] nvarchar(403) NOT NULL,
[OBForecastDetailID] int NOT NULL,
[CAPForecastDetailID] int NOT NULL,
[SPCostComponentID] int NOT NULL,
[SPAccountRollupID] int NOT NULL,
[SPIsDefined] bit NOT NULL,
[CPIsDefined] bit NOT NULL,
[OBIsDefined] bit NOT NULL,
PRIMARY KEY ([ForecastDetailID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimForecastDetail] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__Histo__790F4C0E] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__CPIsD__6D695A8F] DEFAULT ((0)) FOR [CPIsDefined]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__OBIsD__6E5D7EC8] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__Forec__7727039C] DEFAULT ('') FOR [ForecastDetailCode]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__Membe__781B27D5] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__Trans__7A037047] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__Descr__7AF79480] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__OBFor__7BEBB8B9] DEFAULT ((0)) FOR [OBForecastDetailID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__CAPFo__7CDFDCF2] DEFAULT ((0)) FOR [CAPForecastDetailID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__SPCos__7DD4012B] DEFAULT ((0)) FOR [SPCostComponentID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__SPAcc__7EC82564] DEFAULT ((0)) FOR [SPAccountRollupID]; GO
ALTER TABLE [fw].[DimForecastDetail] ADD CONSTRAINT [DF__DimForeca__SPIsD__7FBC499D] DEFAULT ((0)) FOR [SPIsDefined]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFramework ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFramework] (
[MemberGUID] uniqueidentifier NOT NULL,
[FrameworkID] tinyint NOT NULL,
[Name] nvarchar(100) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Abbreviation] nvarchar(10) NOT NULL,
[FrameworkSchemaName] nvarchar(10) NOT NULL,
[ClientSchemaName] nvarchar(10) NOT NULL,
[TransactionID] int NOT NULL,
[IsLatestDataModel] bit NOT NULL,
[Dependencies] nvarchar(100) NOT NULL,
PRIMARY KEY ([FrameworkID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimFramework] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF__FW_DimFramework_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_Dependencies] DEFAULT ('') FOR [Dependencies]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_Abbreviation] DEFAULT ('') FOR [Abbreviation]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_FrameworkSchemaName] DEFAULT ('') FOR [FrameworkSchemaName]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_ClientSchemaName] DEFAULT ('') FOR [ClientSchemaName]; GO
ALTER TABLE [fw].[DimFramework] ADD CONSTRAINT [DF_DimFramework_IsLatestDataModel] DEFAULT ((0)) FOR [IsLatestDataModel]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFunctionalArea ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFunctionalArea] (
[FunctionalAreaID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([FunctionalAreaID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimFunctionalArea] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFunctionalArea] ADD CONSTRAINT [DF__DimFunctio__Name__0A59084A] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimFunctionalArea] ADD CONSTRAINT [DF__DimFuncti__Membe__0B4D2C83] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFunctionalArea] ADD CONSTRAINT [DF__DimFuncti__Trans__0D3574F5] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFunctionalArea] ADD CONSTRAINT [DF__DimFuncti__Histo__0C4150BC] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimFund ------------------
---------------------------------------------
CREATE TABLE [fw].[DimFund] (
[FundID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[SortOrder] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(203) NOT NULL,
PRIMARY KEY ([FundID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimFund] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimFund] ADD CONSTRAINT [DF__DimFund__History__78B67F6A] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimFund] ADD CONSTRAINT [DF__DimFund__MemberG__77C25B31] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimFund] ADD CONSTRAINT [DF__DimFund__Transac__79AAA3A3] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimFund] ADD CONSTRAINT [DF__DimFund__SortOrd__7A9EC7DC] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimFund] ADD CONSTRAINT [DF__DimFund__Code__7B92EC15] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimFund] ADD CONSTRAINT [DF__DimFund__Descrip__7C87104E] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimHomeDepartment ------------------
---------------------------------------------
CREATE TABLE [fw].[DimHomeDepartment] (
[HomeDepartmentID] int NOT NULL,
[Name] nvarchar(203) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[SortOrder] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Code] nvarchar(100) NOT NULL,
PRIMARY KEY ([HomeDepartmentID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimHomeDepartment] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimHomeDepartment] ADD CONSTRAINT [DF__DimHomeDe__Histo__466009C7] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimHomeDepartment] ADD CONSTRAINT [DF__DimHomeDe__Membe__456BE58E] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimHomeDepartment] ADD CONSTRAINT [DF__DimHomeDe__Trans__47542E00] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimHomeDepartment] ADD CONSTRAINT [DF__DimHomeDe__SortO__48485239] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimHomeDepartment] ADD CONSTRAINT [DF__DimHomeDe__Descr__493C7672] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimHomeDepartment] ADD CONSTRAINT [DF__DimHomeDep__Code__4A309AAB] DEFAULT ('') FOR [Code]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimInitiative ------------------
---------------------------------------------
CREATE TABLE [fw].[DimInitiative] (
[InitiativeID] int NOT NULL,
[Name] nvarchar(400) NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[InitiativeStatusID] int NOT NULL,
[InitiativeStatus] nvarchar(200) NOT NULL,
[AuthorGUID] uniqueidentifier NOT NULL,
[Author] nvarchar(200) NOT NULL,
[CostLeaderGUID] uniqueidentifier NOT NULL,
[CostLeader] nvarchar(200) NOT NULL,
[OwnerGUID] uniqueidentifier NOT NULL,
[Owner] nvarchar(200) NOT NULL,
[ExecutiveSponsorGUID] uniqueidentifier NOT NULL,
[ExecutiveSponsor] nvarchar(200) NOT NULL,
[Workstream] nvarchar(200) NOT NULL,
[Description] nvarchar(max) NOT NULL,
[SourceOfSavingsId] int NOT NULL,
[SourceOfSavings] nvarchar(200) NOT NULL,
[DateCreated] datetime NOT NULL,
[EffectiveDate] datetime NOT NULL,
[GoalStartDate] datetime NOT NULL,
[GoalEndDate] datetime NOT NULL,
[AnnualGoal] decimal NOT NULL,
[SavingsEstimate] decimal NOT NULL,
[InitiativeRollup1] nvarchar(400) NOT NULL,
[InitiativeRollup1Id] int NOT NULL,
[InitiativeRollup2] nvarchar(400) NOT NULL,
[InitiativeRollup2Id] int NOT NULL,
[InitiativeRollup3] nvarchar(400) NOT NULL,
[InitiativeRollup3Id] int NOT NULL,
PRIMARY KEY ([InitiativeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimInitiative] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitiat__Name__58137294] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Membe__590796CD] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Histo__59FBBB06] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Trans__5AEFDF3F] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Initi__5BE40378] DEFAULT ((0)) FOR [InitiativeStatusID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Initi__5CD827B1] DEFAULT ('') FOR [InitiativeStatus]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Autho__5DCC4BEA] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [AuthorGUID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Autho__5EC07023] DEFAULT ('') FOR [Author]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__CostL__5FB4945C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [CostLeaderGUID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__CostL__60A8B895] DEFAULT ('') FOR [CostLeader]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Owner__619CDCCE] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [OwnerGUID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Owner__62910107] DEFAULT ('') FOR [Owner]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Execu__63852540] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [ExecutiveSponsorGUID]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Execu__64794979] DEFAULT ('') FOR [ExecutiveSponsor]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Works__656D6DB2] DEFAULT ('') FOR [Workstream]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Descr__666191EB] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Sourc__6755B624] DEFAULT ((0)) FOR [SourceOfSavingsId]; GO
ALTER TABLE [fw].[DimInitiative] ADD CONSTRAINT [DF__DimInitia__Sourc__6849DA5D] DEFAULT ('') FOR [SourceOfSavings]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimInitiativeStatus ------------------
---------------------------------------------
CREATE TABLE [fw].[DimInitiativeStatus] (
[InitiativeStatusID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([InitiativeStatusID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimInitiativeStatus] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimInitiativeStatus] ADD CONSTRAINT [DF__DimInitia__Histo__4466DD39] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimInitiativeStatus] ADD CONSTRAINT [DF__DimInitiat__Name__427E94C7] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimInitiativeStatus] ADD CONSTRAINT [DF__DimInitia__Membe__4372B900] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimInitiativeStatus] ADD CONSTRAINT [DF__DimInitia__Trans__455B0172] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimJobCode ------------------
---------------------------------------------
CREATE TABLE [fw].[DimJobCode] (
[JobCodeID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(151) NOT NULL,
[JobCode] nvarchar(20) NOT NULL,
[Description] nvarchar(128) NOT NULL,
[JobCodeGroupID] int NOT NULL,
[IsVariable] bit NOT NULL,
[IsActive] bit NOT NULL,
[IsProvider] bit NOT NULL,
[IsAgency] bit NOT NULL,
[DSSIsDefined] bit NOT NULL,
[DSSCostingRollup] nvarchar(100) NOT NULL,
[DSSRate] money NOT NULL,
[OBIsDefined] bit NOT NULL,
[FlexBucketGUID] uniqueidentifier NOT NULL,
[SPIsDefined] bit NOT NULL,
[Rollup] nvarchar(128) NOT NULL,
[Variability] float NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[WorkWeekOverrideID] int NOT NULL,
[FlexJobCodeGroupID] int NOT NULL,
[DSSCostingRollup2] nvarchar(100) NOT NULL,
[DSSCostingRollup3] nvarchar(100) NOT NULL,
[FWIsDefined] bit NOT NULL,
[IsPatientCare] bit NOT NULL,
[IsBedside] bit NOT NULL,
[IsLicensed] bit NOT NULL,
[ManagementLevel] nvarchar(100) NOT NULL,
[SkillMix] nvarchar(100) NOT NULL,
[DSSJobCodeRollup1ID] int NOT NULL,
[DSSJobCodeRollup1] varchar(200) NOT NULL,
[DSSJobCodeRollup2] nvarchar(200) NOT NULL,
[DSSJobCodeRollup2ID] int NOT NULL,
[PRIsDefined] bit NOT NULL,
[CIIsDefined] bit NOT NULL,
[IsPR] bit NOT NULL,
[DSSCostComponent] varchar(200) NOT NULL,
[DSSJobCodeRollup3ID] int NOT NULL,
[DSSJobCodeRollup3] nvarchar(100) NOT NULL,
[IsDaily] bit NOT NULL,
[DSSCostComponentID] int NOT NULL,
[SPHJobCodeRollupID] int NOT NULL,
[SPHJobCodeRollupName] nvarchar(200) NOT NULL,
[SPHJobCodeRollupConfidenceScore] float NOT NULL,
[SPHVariability] decimal NOT NULL,
[SPHJobCodeRollupIsValidated] bit NOT NULL,
[StaffingCategoryID] int NOT NULL,
PRIMARY KEY ([JobCodeID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_MemberGUID_JC] ON [fw].[DimJobCode] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_JobCodeID] ON [fw].[DimJobCode] ([JobCodeID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_JobCode] ON [fw].[DimJobCode] ([JobCode]) INCLUDE ([JobCodeID]);
CREATE NONCLUSTERED INDEX [NCNU_StaffingReconciliation] ON [fw].[DimJobCode] ([JobCodeID], [JobCodeGroupID], [IsProvider]);
GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__Histo__54DD0E89] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__PRIsD__03C2E1CC] DEFAULT ((0)) FOR [PRIsDefined]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__CIIsD__04B70605] DEFAULT ((0)) FOR [CIIsDefined]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__Staff__055B1A57] DEFAULT ((0)) FOR [StaffingCategoryID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__SPHJo__08A19B56] DEFAULT ((0)) FOR [SPHJobCodeRollupIsValidated]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__FWIsD__09101020] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSJo__15C19676] DEFAULT ('') FOR [DSSJobCodeRollup2]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__WorkW__21EA71CB] DEFAULT ((-1)) FOR [WorkWeekOverrideID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSJo__22276D5B] DEFAULT ((0)) FOR [DSSJobCodeRollup2ID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSJo__28747837] DEFAULT ((0)) FOR [DSSJobCodeRollup1ID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSJo__29689C70] DEFAULT ('') FOR [DSSJobCodeRollup1]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF_DimJobCode_FlexBucketGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexBucketGUID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSCo__380A2AD4] DEFAULT ('') FOR [DSSCostingRollup2]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__SPHVa__38CD6F60] DEFAULT ((0)) FOR [SPHVariability]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSCo__38FE4F0D] DEFAULT ('') FOR [DSSCostingRollup3]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF_DimJobCode_IsPR] DEFAULT ((1)) FOR [IsPR]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSJo__431391A4] DEFAULT ((0)) FOR [DSSJobCodeRollup3ID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__FlexJ__43CC1F31] DEFAULT ((0)) FOR [FlexJobCodeGroupID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSJo__4407B5DD] DEFAULT ('') FOR [DSSJobCodeRollup3]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSCo__55674C09] DEFAULT ('') FOR [DSSCostComponent]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__IsPat__5C5D653A] DEFAULT ((0)) FOR [IsPatientCare]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__IsBed__5D518973] DEFAULT ((0)) FOR [IsBedside]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__IsLic__5E45ADAC] DEFAULT ((0)) FOR [IsLicensed]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSCo__5EA8342E] DEFAULT ((0)) FOR [DSSCostComponentID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__Manag__5F39D1E5] DEFAULT ('') FOR [ManagementLevel]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__Skill__602DF61E] DEFAULT ('') FOR [SkillMix]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__SPHJo__616F9240] DEFAULT ((0)) FOR [SPHJobCodeRollupID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__SPHJo__6263B679] DEFAULT ('Not Specified') FOR [SPHJobCodeRollupName]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__SPHJo__6357DAB2] DEFAULT ((0)) FOR [SPHJobCodeRollupConfidenceScore]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__Membe__53E8EA50] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCode__Code__5200A1DE] DEFAULT ('') FOR [JobCode]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCode__Name__510C7DA5] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__JobCo__7C53D2CB] DEFAULT ((0)) FOR [JobCodeGroupID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__IsVar__47CD8FC2] DEFAULT ((0)) FOR [IsVariable]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF_DimJobCode_IsActive] DEFAULT ((1)) FOR [IsActive]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__IsPro__3C5A7832] DEFAULT ((0)) FOR [IsProvider]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__IsAge__3BF12F35] DEFAULT ((0)) FOR [IsAgency]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSIs__3F3AABC6] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSCo__0B332816] DEFAULT ('') FOR [DSSCostingRollup]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__DSSRa__0C274C4F] DEFAULT ((0)) FOR [DSSRate]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__OBIsD__402ECFFF] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__DimJobCod__SPIsD__4122F438] DEFAULT ((0)) FOR [SPIsDefined]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF_DimJobCode_Category] DEFAULT ('') FOR [Rollup]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF_DimJobCode_Variability] DEFAULT ((0)) FOR [Variability]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF__FW_DimJobCode_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimJobCode] ADD CONSTRAINT [DF_DimJobCode_IsDaily] DEFAULT ((1)) FOR [IsDaily]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimJobCodeGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimJobCodeGroup] (
[JobCodeGroupID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Category] nvarchar(200) NOT NULL,
[SortOrder] int NOT NULL,
[IsCapital] bit NOT NULL,
[IsDSS] bit NOT NULL,
[IsMR] bit NOT NULL,
[IsOB] bit NOT NULL,
[IsSP] bit NOT NULL,
[SPStaffType] nvarchar(100) NOT NULL,
[SPSalariesFinancialReportingID] int NOT NULL,
[SPSalariesFinancialReporting] varchar(4000) NOT NULL,
[SPFTEsFinancialReportingID] int NOT NULL,
[SPFTEsFinancialReporting] varchar(200) NOT NULL,
[CAPFinancialReportingID] int NOT NULL,
[CAPFinancialReporting] nvarchar(2000) NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SPDefaultVolumeDriver] nvarchar(400) NOT NULL,
[WorkWeekOverrideID] int NOT NULL,
PRIMARY KEY ([JobCodeGroupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimJobCodeGroup] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimJobCodeGroup] ([Name]);
GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__FW_DimJobCodeGroup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__Membe__70E2201F] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCode__Name__71D64458] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__Categ__178A1950] DEFAULT ('') FOR [Category]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SortO__187E3D89] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__IsCap__21B1D6B1] DEFAULT ((0)) FOR [IsCapital]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__IsDSS__248E435C] DEFAULT ((0)) FOR [IsDSS]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCode__IsMR__239A1F23] DEFAULT ((0)) FOR [IsMR]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCode__IsOB__22A5FAEA] DEFAULT ((0)) FOR [IsOB]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCode__IsSP__20BDB278] DEFAULT ((0)) FOR [IsSP]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SPSta__7685EADC] DEFAULT ('') FOR [SPStaffType]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SPFin__777A0F15] DEFAULT ((0)) FOR [SPSalariesFinancialReportingID]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SPSal__02AE5E6E] DEFAULT ('') FOR [SPSalariesFinancialReporting]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SPFTE__03A282A7] DEFAULT ((0)) FOR [SPFTEsFinancialReportingID]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SPFTE__0496A6E0] DEFAULT ('') FOR [SPFTEsFinancialReporting]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__CAPFi__3291B063] DEFAULT ((0)) FOR [CAPFinancialReportingID]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__SPDef__2232F3E0] DEFAULT ('') FOR [SPDefaultVolumeDriver]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__CAPFi__3385D49C] DEFAULT ('') FOR [CAPFinancialReporting]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__Histo__72CA6891] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimJobCodeGroup] ADD CONSTRAINT [DF__DimJobCod__WorkW__79340BA9] DEFAULT ((-1)) FOR [WorkWeekOverrideID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimJobCodeGroupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimJobCodeGroupPH] (
[JobCodeGroupPHID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([JobCodeGroupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimJobCodeGroupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimJobCodeGroupPH] ADD CONSTRAINT [DF__FW_DimJobCodeGroupPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimJobCodeGroupPH] ADD CONSTRAINT [DF__DimJobCod__Membe__778F1DAE] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimJobCodeGroupPH] ADD CONSTRAINT [DF__DimJobCode__Name__788341E7] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimJobCodeGroupPH] ADD CONSTRAINT [DF__DimJobCod__Histo__79776620] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimJobCodePH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimJobCodePH] (
[JobCodePHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([JobCodePHID])
);
CREATE NONCLUSTERED INDEX [IX_JobCodePHID] ON [fw].[DimJobCodePH] ([JobCodePHID]);
CREATE NONCLUSTERED INDEX [IX_MemberGUID] ON [fw].[DimJobCodePH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimJobCodePH] ADD CONSTRAINT [DF__FW_DimJobCodePH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimJobCodePH] ADD CONSTRAINT [DF__DimJobCode__Name__0DA619FA] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimJobCodePH] ADD CONSTRAINT [DF__DimJobCod__Membe__0E9A3E33] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimLineNumber ------------------
---------------------------------------------
CREATE TABLE [fw].[DimLineNumber] (
[LineNumberID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([LineNumberID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimLineNumber] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimLineNumber] ADD CONSTRAINT [DF__FW_DimLineNumber_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimLineNumber] ADD CONSTRAINT [DF__DimLineNu__Membe__36E78D22] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimLineNumber] ADD CONSTRAINT [DF__DimLineNu__Histo__37DBB15B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimManufacturer ------------------
---------------------------------------------
CREATE TABLE [fw].[DimManufacturer] (
[ManufacturerID] int NOT NULL,
[Name] nvarchar(203) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
PRIMARY KEY ([ManufacturerID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimManufacturer] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimManufacturer] ADD CONSTRAINT [DF__DimManufa__Membe__317C5D7F] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimManufacturer] ADD CONSTRAINT [DF__DimManufa__Trans__3364A5F1] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimManufacturer] ADD CONSTRAINT [DF__DimManufac__Code__3458CA2A] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimManufacturer] ADD CONSTRAINT [DF__DimManufa__Descr__354CEE63] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimManufacturer] ADD CONSTRAINT [DF__DimManufa__Histo__327081B8] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimMedicalSurgical ------------------
---------------------------------------------
CREATE TABLE [fw].[DimMedicalSurgical] (
[MedicalSurgicalID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([MedicalSurgicalID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimMedicalSurgical] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimMedicalSurgical] ([Name]);
GO
ALTER TABLE [fw].[DimMedicalSurgical] ADD CONSTRAINT [DF__DimMedica__Histo__7A099935] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimMedicalSurgical] ADD CONSTRAINT [DF__DimMedical__Name__782150C3] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimMedicalSurgical] ADD CONSTRAINT [DF__DimMedica__Membe__791574FC] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimMedicalSurgical] ADD CONSTRAINT [DF__DimMedica__Trans__7AFDBD6E] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimMedicalSurgical] ADD CONSTRAINT [DF__DimMedical__Code__7BF1E1A7] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimMedicalSurgical] ADD CONSTRAINT [DF__DimMedica__SortO__7CE605E0] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimModelingServiceLine ------------------
---------------------------------------------
CREATE TABLE [fw].[DimModelingServiceLine] (
[ModelingServiceLineID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(912) NOT NULL,
[PatientClassID] int NOT NULL,
[PatientClass] nvarchar(200) NOT NULL,
[PatientClassCode] nvarchar(100) NOT NULL,
[PatientClassSortOrder] int NOT NULL,
[AgeCohortID] int NOT NULL,
[AgeCohort] nvarchar(200) NOT NULL,
[AgeCohortCode] nvarchar(100) NOT NULL,
[AgeCohortSortOrder] int NOT NULL,
[ServiceLineID] int NOT NULL,
[ServiceLine] nvarchar(303) NOT NULL,
[ServiceLineCode] nvarchar(100) NOT NULL,
[ServiceLineSortOrder] int NOT NULL,
[ServiceLineRollup] nvarchar(200) NOT NULL,
[ServiceLineRollupSortOrder] int NOT NULL,
[MedicalSurgicalID] int NOT NULL,
[MedicalSurgical] nvarchar(200) NOT NULL,
[MedicalSurgicalCode] nvarchar(100) NOT NULL,
[MedicalSurgicalSortOrder] int NOT NULL,
[SortOrder] varchar(49) NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([ModelingServiceLineID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimModelingServiceLine] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Membe__37D1C184] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Patie__3BA25268] DEFAULT ((0)) FOR [PatientClassID]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Patie__43437430] DEFAULT ('') FOR [PatientClass]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Patie__44379869] DEFAULT ('') FOR [PatientClassCode]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Patie__452BBCA2] DEFAULT ((0)) FOR [PatientClassSortOrder]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__AgeCo__3C9676A1] DEFAULT ((0)) FOR [AgeCohortID]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__AgeCo__4DC102A3] DEFAULT ('') FOR [AgeCohort]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__AgeCo__4EB526DC] DEFAULT ('') FOR [AgeCohortCode]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__AgeCo__4FA94B15] DEFAULT ((0)) FOR [AgeCohortSortOrder]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Servi__3D8A9ADA] DEFAULT ((0)) FOR [ServiceLineID]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Servi__461FE0DB] DEFAULT ('') FOR [ServiceLine]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Servi__47140514] DEFAULT ('') FOR [ServiceLineCode]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Servi__4808294D] DEFAULT ((0)) FOR [ServiceLineSortOrder]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Servi__48FC4D86] DEFAULT ('') FOR [ServiceLineRollup]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Histo__38C5E5BD] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Servi__49F071BF] DEFAULT ((0)) FOR [ServiceLineRollupSortOrder]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Medic__3E7EBF13] DEFAULT ((0)) FOR [MedicalSurgicalID]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Medic__4AE495F8] DEFAULT ('') FOR [MedicalSurgical]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Medic__4BD8BA31] DEFAULT ('') FOR [MedicalSurgicalCode]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Medic__4CCCDE6A] DEFAULT ((0)) FOR [MedicalSurgicalSortOrder]; GO
ALTER TABLE [fw].[DimModelingServiceLine] ADD CONSTRAINT [DF__DimModeli__Trans__39BA09F6] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimModelingServiceLinePH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimModelingServiceLinePH] (
[ModelingServiceLinePHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([ModelingServiceLinePHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimModelingServiceLinePH] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimModelingServiceLinePH] ([Name]);
GO
ALTER TABLE [fw].[DimModelingServiceLinePH] ADD CONSTRAINT [DF__DimModelin__Name__09D5ECAA] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimModelingServiceLinePH] ADD CONSTRAINT [DF__DimModeli__Membe__0ACA10E3] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimModelingServiceLinePH] ADD CONSTRAINT [DF__DimModeli__Trans__0CB25955] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimModelingServiceLinePH] ADD CONSTRAINT [DF__DimModeli__Histo__0BBE351C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimOpportunity ------------------
---------------------------------------------
CREATE TABLE [fw].[DimOpportunity] (
[OpportunityKey] nvarchar(20) NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[EntityID] int NOT NULL,
[SourceOfSavingsID] int NOT NULL,
[SourceOfSavings] nvarchar(200) NOT NULL,
[IsHidden] bit NOT NULL,
[HasInitiative] bit NOT NULL,
[InitiativeGUID] uniqueidentifier NOT NULL,
[Initiative] nvarchar(400) NOT NULL,
[InitiativeStatusID] int NOT NULL,
[InitiativeStatus] nvarchar(200) NOT NULL,
[Owner] nvarchar(130) NOT NULL,
[CostLeader] nvarchar(130) NOT NULL,
[ExecutiveSponsor] nvarchar(130) NOT NULL,
[Workstream] nvarchar(200) NOT NULL,
[DateCreated] datetime NOT NULL,
[BaselineStartDate] datetime NOT NULL,
[BaselineEndDate] datetime NOT NULL,
[SavingsIdentified] decimal NOT NULL,
[SavingsGoal] decimal NOT NULL,
[AnnualGoal] decimal NOT NULL,
[SavingsEstimate] decimal NOT NULL,
[InitiativeRollup1Id] int NOT NULL,
[InitiativeRollup1] nvarchar(400) NOT NULL,
[InitiativeRollup2Id] int NOT NULL,
[InitiativeRollup2] nvarchar(400) NOT NULL,
[InitiativeRollup3Id] int NOT NULL,
[InitiativeRollup3] nvarchar(400) NOT NULL,
PRIMARY KEY ([OpportunityKey])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimOpportunity] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Oppor__41300D3C] DEFAULT ('') FOR [OpportunityKey]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpportu__Name__42243175] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Membe__431855AE] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Histo__440C79E7] DEFAULT (CONVERT([uniqueidentifier],0x00)) FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Trans__45009E20] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Entit__45F4C259] DEFAULT ((0)) FOR [EntityID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Sourc__46E8E692] DEFAULT ((0)) FOR [SourceOfSavingsID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Sourc__47DD0ACB] DEFAULT ('') FOR [SourceOfSavings]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__IsHid__48D12F04] DEFAULT ((0)) FOR [IsHidden]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__HasIn__49C5533D] DEFAULT ((0)) FOR [HasInitiative]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Initi__4AB97776] DEFAULT (CONVERT([uniqueidentifier],0x00)) FOR [InitiativeGUID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Initi__4BAD9BAF] DEFAULT ('') FOR [Initiative]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Initi__4CA1BFE8] DEFAULT ((0)) FOR [InitiativeStatusID]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Initi__4D95E421] DEFAULT ('') FOR [InitiativeStatus]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Owner__4E8A085A] DEFAULT ('') FOR [Owner]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__CostL__4F7E2C93] DEFAULT ('') FOR [CostLeader]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Execu__507250CC] DEFAULT ('') FOR [ExecutiveSponsor]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Works__51667505] DEFAULT ('') FOR [Workstream]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Savin__525A993E] DEFAULT ((0)) FOR [SavingsIdentified]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Savin__534EBD77] DEFAULT ((0)) FOR [SavingsGoal]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Annua__5442E1B0] DEFAULT ((0)) FOR [AnnualGoal]; GO
ALTER TABLE [fw].[DimOpportunity] ADD CONSTRAINT [DF__DimOpport__Savin__553705E9] DEFAULT ((0)) FOR [SavingsEstimate]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPatientClass ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPatientClass] (
[PatientClassID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[IsActive] bit NOT NULL,
[IncludeInAdjustedCalculations] bit NOT NULL,
[OBServiceLinePrimaryVolumeAccountID] int NOT NULL,
PRIMARY KEY ([PatientClassID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPatientClass] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimPatientClass] ([Name]);
GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatient__Name__1DDC1A00] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatient__Code__1ED03E39] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__SortO__1FC46272] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__OBSer__20890BE2] DEFAULT ((0)) FOR [OBServiceLinePrimaryVolumeAccountID]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__Membe__20B886AB] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__Trans__22A0CF1D] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__IsAct__554F77D7] DEFAULT ((0)) FOR [IsActive]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__Histo__21ACAAE4] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPatientClass] ADD CONSTRAINT [DF__DimPatien__Inclu__6AF4A033] DEFAULT ((0)) FOR [IncludeInAdjustedCalculations]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPatientReimbursementGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPatientReimbursementGroup] (
[PatientReimbursementGroupID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[PatientClassID] int NOT NULL,
[CareSettingID] int NOT NULL,
[PatientClass] nvarchar(200) NOT NULL,
[PatientClassCode] nvarchar(100) NOT NULL,
[PatientClassSortOrder] int NOT NULL,
[CareSetting] nvarchar(200) NOT NULL,
[CareSettingCode] nvarchar(100) NOT NULL,
[CareSettingSortOrder] int NOT NULL,
[Name] nvarchar(403) NOT NULL,
[Code] nvarchar(203) NOT NULL,
[SortOrder] varchar(203) NULL,
PRIMARY KEY ([PatientReimbursementGroupID])
);
CREATE NONCLUSTERED INDEX [NCNU_MemberGUID] ON [fw].[DimPatientReimbursementGroup] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_PreventDuplicates] ON [fw].[DimPatientReimbursementGroup] ([PatientClassID], [CareSettingID]);
GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Histo__57BEA2D2] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Membe__56CA7E99] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Trans__58B2C70B] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Patie__5B8F33B6] DEFAULT ((0)) FOR [PatientClassID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__CareS__5C8357EF] DEFAULT ((0)) FOR [CareSettingID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Patie__660CC229] DEFAULT ('') FOR [PatientClass]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Patie__6700E662] DEFAULT ('') FOR [PatientClassCode]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__Patie__67F50A9B] DEFAULT ((0)) FOR [PatientClassSortOrder]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__CareS__68E92ED4] DEFAULT ('') FOR [CareSetting]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__CareS__69DD530D] DEFAULT ('') FOR [CareSettingCode]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroup] ADD CONSTRAINT [DF__DimPatien__CareS__6AD17746] DEFAULT ((0)) FOR [CareSettingSortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPatientReimbursementGroupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPatientReimbursementGroupPH] (
[PatientReimbursementGroupPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PatientReimbursementGroupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPatientReimbursementGroupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPatientReimbursementGroupPH] ADD CONSTRAINT [DF__DimPatien__Histo__2E878315] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroupPH] ADD CONSTRAINT [DF__DimPatient__Name__2C9F3AA3] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroupPH] ADD CONSTRAINT [DF__DimPatien__Membe__2D935EDC] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPatientReimbursementGroupPH] ADD CONSTRAINT [DF__DimPatien__Trans__2F7BA74E] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPatientType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPatientType] (
[Code] nvarchar(50) NOT NULL,
[PatientTypeID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[PatientTypeRollupID] tinyint NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(153) NOT NULL,
[DSSRollup] nvarchar(100) NOT NULL,
PRIMARY KEY ([PatientTypeID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_PatientTypeCode] ON [fw].[DimPatientType] ([Code]) INCLUDE ([PatientTypeID]);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPatientType] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__DimPatien__Descr__03F78862] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__DimPatient__Code__0451B9EA] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__FW_DimPatientType_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__DimPatien__Membe__063A025C] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__DimPatien__DSSRo__54A1A578] DEFAULT ('') FOR [DSSRollup]; GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__DimPatien__Histo__496564B9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPatientType] ADD CONSTRAINT [DF__fw_DimPatientType_PatientTypeRollupID] DEFAULT ((0)) FOR [PatientTypeRollupID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPatientTypeRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPatientTypeRollup] (
[PatientTypeRollupID] tinyint NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Type] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[IsCapital] bit NOT NULL,
[IsDSS] bit NOT NULL,
[IsMR] bit NOT NULL,
[IsOB] bit NOT NULL,
[IsSP] bit NOT NULL,
[SPChargesFinancialReportingID] int NOT NULL,
[SPChargesFinancialReporting] nvarchar(100) NOT NULL,
[SPContractualsFinancialReportingID] int NOT NULL,
[SPContractualsFinancialReporting] nvarchar(100) NOT NULL,
[SPPrimaryStatisticFinancialReportingID] int NOT NULL,
[SPPrimaryStatisticFinancialReporting] nvarchar(100) NOT NULL,
[SPPrimaryStatisticFinancialReportingLineName] nvarchar(100) NOT NULL,
[SPSecondaryStatisticFinancialReportingID] int NOT NULL,
[SPSecondaryStatisticFinancialReporting] nvarchar(100) NOT NULL,
[SPSecondaryStatisticFinancialReportingLineName] nvarchar(100) NOT NULL,
[SPTertiaryStatisticFinancialReportingID] int NOT NULL,
[SPTertiaryStatisticFinancialReporting] nvarchar(100) NOT NULL,
[SPTertiaryStatisticFinancialReportingLineName] nvarchar(100) NOT NULL,
[CAPChargesFinancialReportingID] int NOT NULL,
[CAPChargesFinancialReporting] nvarchar(100) NOT NULL,
[CAPContractualsFinancialReportingID] int NOT NULL,
[CAPContractualsFinancialReporting] nvarchar(100) NOT NULL,
[CAPPrimaryStatisticFinancialReportingID] int NOT NULL,
[CAPPrimaryStatisticFinancialReporting] nvarchar(100) NOT NULL,
[CAPSecondaryStatisticFinancialReportingID] int NOT NULL,
[CAPSecondaryStatisticFinancialReporting] nvarchar(100) NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[CareSettingID] int NOT NULL,
[CareSettingName] nvarchar(200) NOT NULL,
[PatientClassID] int NOT NULL,
[PatientClassName] nvarchar(200) NOT NULL,
[CAPPrimaryStatisticFinancialReportingLineName] nvarchar(100) NOT NULL,
[CAPSecondaryStatisticFinancialReportingLineName] nvarchar(100) NOT NULL,
[Sg2PatientTypeRollup] nvarchar(400) NOT NULL,
PRIMARY KEY ([PatientTypeRollupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPatientTypeRollup] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimPatientTypeRollup] ([Name]);
GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__FW_DimPatientTypeRollup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Sg2Pa__184B9135] DEFAULT ('') FOR [Sg2PatientTypeRollup]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CareS__260DA665] DEFAULT ((0)) FOR [CareSettingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CareS__2701CA9E] DEFAULT ('') FOR [CareSettingName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPPr__27C5A8B7] DEFAULT ('') FOR [CAPPrimaryStatisticFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Patie__27F5EED7] DEFAULT ((0)) FOR [PatientClassID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPSe__28B9CCF0] DEFAULT ('') FOR [CAPSecondaryStatisticFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Patie__28EA1310] DEFAULT ('') FOR [PatientClassName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__PatientTy__Membe__12B81536] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__PatientTyp__Name__11C3F0FD] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatient__Type__7714F095] DEFAULT ('') FOR [Type]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__SortO__047D9F94] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__IsCap__195BEE45] DEFAULT ((0)) FOR [IsCapital]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__IsDSS__1C385AF0] DEFAULT ((0)) FOR [IsDSS]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Histo__69D2344B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatient__IsMR__1B4436B7] DEFAULT ((0)) FOR [IsMR]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatient__IsOB__1A50127E] DEFAULT ((0)) FOR [IsOB]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatient__IsSP__1867CA0C] DEFAULT ((0)) FOR [IsSP]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Charg__22257319] DEFAULT ((0)) FOR [SPChargesFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Charg__26EA2836] DEFAULT ('') FOR [SPChargesFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Contr__23199752] DEFAULT ((0)) FOR [SPContractualsFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Contr__27DE4C6F] DEFAULT ('') FOR [SPContractualsFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Prima__240DBB8B] DEFAULT ((0)) FOR [SPPrimaryStatisticFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Prima__28D270A8] DEFAULT ('') FOR [SPPrimaryStatisticFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Prima__0B4CFAB9] DEFAULT ('') FOR [SPPrimaryStatisticFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Secon__2501DFC4] DEFAULT ((0)) FOR [SPSecondaryStatisticFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Secon__29C694E1] DEFAULT ('') FOR [SPSecondaryStatisticFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Secon__0C411EF2] DEFAULT ('') FOR [SPSecondaryStatisticFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Terti__25F603FD] DEFAULT ((0)) FOR [SPTertiaryStatisticFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Terti__2ABAB91A] DEFAULT ('') FOR [SPTertiaryStatisticFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__Terti__0D35432B] DEFAULT ('') FOR [SPTertiaryStatisticFinancialReportingLineName]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPCh__271FFDB7] DEFAULT ((0)) FOR [CAPChargesFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPCh__2AF08E9B] DEFAULT ('') FOR [CAPChargesFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPCo__281421F0] DEFAULT ((0)) FOR [CAPContractualsFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPCo__2BE4B2D4] DEFAULT ('') FOR [CAPContractualsFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPPr__29084629] DEFAULT ((0)) FOR [CAPPrimaryStatisticFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPPr__2CD8D70D] DEFAULT ('') FOR [CAPPrimaryStatisticFinancialReporting]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPSe__29FC6A62] DEFAULT ((0)) FOR [CAPSecondaryStatisticFinancialReportingID]; GO
ALTER TABLE [fw].[DimPatientTypeRollup] ADD CONSTRAINT [DF__DimPatien__CAPSe__2DCCFB46] DEFAULT ('') FOR [CAPSecondaryStatisticFinancialReporting]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPatientTypeRollupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPatientTypeRollupPH] (
[PatientTypeRollupPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PatientTypeRollupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPatientTypeRollupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPatientTypeRollupPH] ADD CONSTRAINT [DF__FW_DimPatientTypeRollupPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPatientTypeRollupPH] ADD CONSTRAINT [DF__DimPatien__Histo__1D60BDFC] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPatientTypeRollupPH] ADD CONSTRAINT [DF__DimPatient__Name__1B78758A] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPatientTypeRollupPH] ADD CONSTRAINT [DF__DimPatien__Membe__1C6C99C3] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayCode ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayCode] (
[PayCodeID] smallint NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(203) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[PayCode] nvarchar(100) NOT NULL,
[PayCodeGroupID] int NOT NULL,
[PayCodeGroup] nvarchar(100) NOT NULL,
[PayCodeGroupSortOrder] int NOT NULL,
[PayClass] nvarchar(100) NOT NULL,
[ProductiveClass] nvarchar(200) NOT NULL,
[IsAccrued] bit NOT NULL,
[IsHoursIgnored] bit NOT NULL,
[IsDollarsIgnored] bit NOT NULL,
[DSSIsDefined] bit NOT NULL,
[DSSCostingRollup] nvarchar(50) NOT NULL,
[OBIsDefined] bit NOT NULL,
[OBForecastDetailID] int NOT NULL,
[SPIsDefined] bit NOT NULL,
[ImportIDAlt] nvarchar(100) NOT NULL,
[IsPayCodeGroup] bit NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[SubRollup] nvarchar(100) NOT NULL,
[FlexBucketGUID] uniqueidentifier NOT NULL,
[Variability] money NOT NULL,
[ReportingCategory] nvarchar(100) NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[DSSCostingRollup2] nvarchar(100) NOT NULL,
[FWIsDefined] bit NOT NULL,
[DSSPayCodeRollup2ID] int NOT NULL,
[DSSPayCodeRollup2] nvarchar(100) NOT NULL,
[DSSPayCodeRollup1] nvarchar(200) NOT NULL,
[DSSPayCodeRollup1ID] int NOT NULL,
[ProviderLineItemID] int NOT NULL,
[SPHPayCodeRollupName] nvarchar(100) NOT NULL,
[SPHProductiveClass] nvarchar(100) NOT NULL,
[ProviderLineItem] nvarchar(200) NOT NULL,
[SPHPayCodeRollupIsValidated] bit NOT NULL,
[SPHPayCodeRollupID] int NOT NULL,
[SPHPayCodeRollupConfidenceScore] float NOT NULL,
PRIMARY KEY ([PayCodeID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_PayCode] ON [fw].[DimPayCode] ([PayCode]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_MemberGUID] ON [fw].[DimPayCode] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [NCNU_StaffingReconciliation] ON [fw].[DimPayCode] ([PayCodeID], [PayCodeGroupID], [IsDollarsIgnored], [IsHoursIgnored]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_PayCode] ON [fw].[DimPayCode] ([PayCode]) INCLUDE ([PayCodeID]);
GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__Provi__0327EDCB] DEFAULT ('') FOR [ProviderLineItem]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__SPHPa__0995BF8F] DEFAULT ((0)) FOR [SPHPayCodeRollupIsValidated]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__FWIsD__0A043459] DEFAULT ((0)) FOR [FWIsDefined]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__Provi__0A8781C3] DEFAULT ((0)) FOR [ProviderLineItemID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSPa__16B5BAAF] DEFAULT ('') FOR [DSSPayCodeRollup1]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSPa__240FB5CD] DEFAULT ((0)) FOR [DSSPayCodeRollup1ID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSPa__31D2F9E8] DEFAULT ((0)) FOR [DSSPayCodeRollup2ID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSPa__32C71E21] DEFAULT ('') FOR [DSSPayCodeRollup2]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSCo__39F27346] DEFAULT ('') FOR [DSSCostingRollup2]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__SPHPa__3BC08152] DEFAULT ('') FOR [SPHPayCodeRollupName]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__SPHPr__3CB4A58B] DEFAULT ('') FOR [SPHProductiveClass]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__SPHPa__3DD47DA4] DEFAULT ((0)) FOR [SPHPayCodeRollupID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__SPHPa__3EC8A1DD] DEFAULT ((0)) FOR [SPHPayCodeRollupConfidenceScore]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_Description] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_ImportID1] DEFAULT ('') FOR [PayCode]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_PayCodeGroupID] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__PayCo__2ECB0F56] DEFAULT ('') FOR [PayCodeGroup]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__PayCo__2FBF338F] DEFAULT ((0)) FOR [PayCodeGroupSortOrder]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__PayCl__30B357C8] DEFAULT ('') FOR [PayClass]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__Produ__2DD6EB1D] DEFAULT ('') FOR [ProductiveClass]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__IsAcc__27BF4DFF] DEFAULT ((1)) FOR [IsAccrued]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_IsHoursIgnored] DEFAULT ((0)) FOR [IsHoursIgnored]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__IsDol__2451AB60] DEFAULT ((0)) FOR [IsDollarsIgnored]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSIs__5DBF32E6] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__DSSCo__7377A163] DEFAULT ('') FOR [DSSCostingRollup]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__OBIsD__5EB3571F] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__OBFor__1DC70B67] DEFAULT ((0)) FOR [OBForecastDetailID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__SPIsD__5FA77B58] DEFAULT ((0)) FOR [SPIsDefined]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_ImportID2] DEFAULT ('') FOR [ImportIDAlt]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_IsPayCodeGroup] DEFAULT ((0)) FOR [IsPayCodeGroup]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_Rollup1] DEFAULT ('') FOR [Rollup]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF_DimPayCode_Rollup2] DEFAULT ('') FOR [SubRollup]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__FlexB__254BC6BD] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [FlexBucketGUID]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__Varia__02228611] DEFAULT ((0)) FOR [Variability]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__DimPayCod__Repor__2B0CC343] DEFAULT ('') FOR [ReportingCategory]; GO
ALTER TABLE [fw].[DimPayCode] ADD CONSTRAINT [DF__FW_DimPayCode_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayCodeGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayCodeGroup] (
[PayCodeGroupID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[PayCodeGroupCode] nvarchar(100) NOT NULL,
[PayClass] nvarchar(100) NOT NULL,
[ProductiveClassID] int NOT NULL,
[IsVariable] bit NOT NULL,
[IsOvertime] bit NOT NULL,
[IsAgency] bit NOT NULL,
[IsExcludedFromBenefits] bit NOT NULL,
[WageRateMultiplier] decimal NOT NULL,
[DefaultPayCodeID] int NOT NULL,
[ReportingCategory] nvarchar(100) NOT NULL,
[AccountID] int NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[IsDirect] bit NOT NULL,
[IsPremium] bit NOT NULL,
PRIMARY KEY ([PayCodeGroupID])
);
CREATE UNIQUE NONCLUSTERED INDEX [UQ__DimPayCo__A67B38530990CDEA] ON [fw].[DimPayCodeGroup] ([MemberGUID]);
CREATE NONCLUSTERED INDEX [IX_PayCodeGroupID] ON [fw].[DimPayCodeGroup] ([PayCodeGroupID]);
GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__Histo__0D615ECE] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__IsDir__3A42B4F7] DEFAULT ((0)) FOR [IsDirect]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__IsPre__5FA0B8DD] DEFAULT ((0)) FOR [IsPremium]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__Membe__0B79165C] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCode__Name__0C6D3A95] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF_DimPayCodeGroup_PayCodeSortOrder] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF_DimPayCodeGroup_PayCodeGroupCode] DEFAULT ('') FOR [PayCodeGroupCode]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF_DimPayCodeGroup_PayClass] DEFAULT ('') FOR [PayClass]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__Produ__281D4670] DEFAULT ((0)) FOR [ProductiveClassID]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__IsVar__1D17A25A] DEFAULT ((0)) FOR [IsVariable]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__IsOve__38209E51] DEFAULT ((0)) FOR [IsOvertime]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__IsAge__372C7A18] DEFAULT ((0)) FOR [IsAgency]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__IsExc__46C2F80C] DEFAULT ((0)) FOR [IsExcludedFromBenefits]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__WageR__58D2C29C] DEFAULT ((1)) FOR [WageRateMultiplier]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__Defau__54D2B6EF] DEFAULT ((0)) FOR [DefaultPayCodeID]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__DimPayCod__Repor__30C59C99] DEFAULT ('') FOR [ReportingCategory]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF_DimPayCodeGroup_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[DimPayCodeGroup] ADD CONSTRAINT [DF__FW_DimPayCodeGroup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayCodeGroupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayCodeGroupPH] (
[PayCodeGroupPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PayCodeGroupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPayCodeGroupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPayCodeGroupPH] ADD CONSTRAINT [DF__DimPayCod__Histo__5DB1E3E9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPayCodeGroupPH] ADD CONSTRAINT [DF__DimPayCode__Name__5BC99B77] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayCodeGroupPH] ADD CONSTRAINT [DF__DimPayCod__Membe__5CBDBFB0] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayCodeGroupPH] ADD CONSTRAINT [DF__DimPayCod__Trans__5EA60822] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayCycle ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayCycle] (
[PayCycleID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(200) NOT NULL,
[SortOrder] int NOT NULL,
[AccrualMethod] nvarchar(100) NOT NULL,
[PeriodDays] tinyint NOT NULL,
[FirstPayPeriodStartDate] datetime NOT NULL,
[CurrentPayPeriodID] smallint NOT NULL,
PRIMARY KEY ([PayCycleID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPayCycle] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__Curre__2D778DC8] DEFAULT ((0)) FOR [CurrentPayPeriodID]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__Histo__3F88EF06] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCycl__Name__3DA0A694] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__Membe__3E94CACD] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__Trans__407D133F] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCycl__Code__41713778] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__SortO__42655BB1] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__Accru__43597FEA] DEFAULT ('') FOR [AccrualMethod]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__Perio__444DA423] DEFAULT ((0)) FOR [PeriodDays]; GO
ALTER TABLE [fw].[DimPayCycle] ADD CONSTRAINT [DF__DimPayCyc__First__4541C85C] DEFAULT (getdate()) FOR [FirstPayPeriodStartDate]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayPeriod ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayPeriod] (
[MemberGUID] uniqueidentifier NOT NULL,
[PayPeriodID] smallint NOT NULL,
[PayPeriodCode] nvarchar(100) NULL,
[PeriodNumber] tinyint NOT NULL,
[PeriodStartCalendarDate] datetime NULL,
[PeriodEndCalendarDate] datetime NOT NULL,
[PeriodDays] tinyint NOT NULL,
[FiscalMonthIDStart] int NULL,
[FiscalMonthIDSecond] int NULL,
[CalendarDaysStart] int NULL,
[CalendarDaysSecond] int NULL,
[PeriodDaysStart] int NULL,
[PeriodDaysSecond] int NULL,
[PeriodWeightStart] numeric NULL,
[PeriodWeightSecond] numeric NULL,
[DaysInPeriodWeightStart] numeric NULL,
[DaysInPeriodWeightSecond] numeric NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[FiscalYearIDStart] int NOT NULL,
[FiscalYearIDSecond] int NOT NULL,
[Name] nvarchar(350) NULL,
[TransactionID] int NOT NULL,
[WorkingDays] tinyint NOT NULL,
[WorkingDaysInPeriodStart] int NULL,
[WorkingDaysInPeriodSecond] int NULL,
[WorkingDaysInPeriodWeightStart] float NULL,
[WorkingDaysInPeriodWeightSecond] float NULL,
[PayCycleID] int NOT NULL,
[Code] nvarchar(350) NOT NULL,
[PayCycleName] nvarchar(200) NOT NULL,
[PayCycleCode] nvarchar(200) NOT NULL,
[PayCycleSortOrder] int NOT NULL,
[AccrualMethod] nvarchar(100) NOT NULL,
[IsCurrentPayPeriod] bit NOT NULL,
[CountFromCurrentPayPeriod] int NOT NULL,
PRIMARY KEY ([PayPeriodID])
);
CREATE UNIQUE NONCLUSTERED INDEX [UQ__DimDimPa__A67B38536BC073E1] ON [fw].[DimPayPeriod] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_FWDIMPAYPERIODPERIODNUMBER] DEFAULT ((0)) FOR [PeriodNumber]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_FWDIMPAYPERIODWORKINGDAYS] DEFAULT ((10)) FOR [WorkingDays]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__FW_DimPayPeriod_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__Count__290C08E3] DEFAULT ((0)) FOR [CountFromCurrentPayPeriod]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__Fisca__2B38DEE6] DEFAULT ((0)) FOR [FiscalYearIDStart]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__Fisca__2C2D031F] DEFAULT ((0)) FOR [FiscalYearIDSecond]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_DimPayPeriod_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__IsCur__48EEC890] DEFAULT ((0)) FOR [IsCurrentPayPeriod]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__PayCy__49125940] DEFAULT ((0)) FOR [PayCycleID]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPeri__Code__4A067D79] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_DimPayPeriod_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_DimPayPeriod_PeriodEndCalendarDate] DEFAULT (getdate()) FOR [PeriodEndCalendarDate]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_DimPayPeriod_DaysInPayPeriod] DEFAULT ((14)) FOR [PeriodDays]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPeri__Name__627E58A2] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__PayCy__63C64F7C] DEFAULT ('') FOR [PayCycleName]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__PayCy__64BA73B5] DEFAULT ('') FOR [PayCycleCode]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__PayCy__65AE97EE] DEFAULT ((0)) FOR [PayCycleSortOrder]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF__DimPayPer__Accru__66A2BC27] DEFAULT ('') FOR [AccrualMethod]; GO
ALTER TABLE [fw].[DimPayPeriod] ADD CONSTRAINT [DF_FWDIMPAYPERIODPAYPERIODCODE] DEFAULT ('') FOR [PayPeriodCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayor ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayor] (
[PayorID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(253) NOT NULL,
[Description] nvarchar(200) NOT NULL,
[DescriptionLong] nvarchar(200) NOT NULL,
[PayorCode] nvarchar(50) NOT NULL,
[PayorGroupID] int NOT NULL,
[FinancialClassID] int NOT NULL,
[FinancialClass] nvarchar(30) NOT NULL,
[IsDSS] bit NOT NULL,
[IsOB] bit NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[OBDefaultInpatientReimbursementMethod] nvarchar(100) NOT NULL,
[OBDefaultOutpatientReimbursementMethod] nvarchar(100) NOT NULL,
PRIMARY KEY ([PayorID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPayor] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [FK_DimPayor_PayorGroup] FOREIGN KEY ([PayorGroupID]) REFERENCES [fw].[DimPayorGroup] ([PayorGroupID]); GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__Member__2B6B870B] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__Descri__777F9E76] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__Descri__7873C2AF] DEFAULT ('') FOR [DescriptionLong]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__PayorC__7967E6E8] DEFAULT ('') FOR [PayorCode]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__PayorG__7A6B8A59] DEFAULT ((0)) FOR [PayorGroupID]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__Financ__7A5C0B21] DEFAULT ((0)) FOR [FinancialClassID]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF_DimPayor_FinancialClass] DEFAULT ('') FOR [FinancialClass]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__IsDSS__07A5ED7A] DEFAULT ((0)) FOR [IsDSS]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__IsOB__06B1C941] DEFAULT ((0)) FOR [IsOB]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__FW_DimPayor_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__OBDefa__42167EE4] DEFAULT ('Per IP Volume') FOR [OBDefaultInpatientReimbursementMethod]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__OBDefa__430AA31D] DEFAULT ('Per OP Volume') FOR [OBDefaultOutpatientReimbursementMethod]; GO
ALTER TABLE [fw].[DimPayor] ADD CONSTRAINT [DF__DimPayor__Histor__7B502F5A] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayorGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayorGroup] (
[PayorGroupID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Category] nvarchar(200) NOT NULL,
[ReimbursementType] nvarchar(200) NOT NULL,
[PayorGroupCode] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[IsCapital] bit NOT NULL,
[CAPChargesFinancialReportingID] int NOT NULL,
[CAPChargesFinancialReporting] varchar(4000) NOT NULL,
[CAPContractualsFinancialReportingID] int NOT NULL,
[CAPContractualsFinancialReporting] varchar(200) NOT NULL,
[IsDSS] bit NOT NULL,
[IsOB] bit NOT NULL,
[IsMR] bit NOT NULL,
[IsSP] bit NOT NULL,
[SPHCRType] nvarchar(100) NOT NULL,
[SPHCRPayorID] int NOT NULL,
[SPHCRPayor] nvarchar(200) NOT NULL,
[SPChargesFinancialReportingID] int NOT NULL,
[SPChargesFinancialReporting] varchar(200) NOT NULL,
[SPContractualsFinancialReportingID] int NOT NULL,
[SPContractualsFinancialReporting] varchar(200) NOT NULL,
[SPDefaultInpatientReimbursementMethod] nvarchar(100) NOT NULL,
[SPDefaultOutpatientReimbursementMethod] nvarchar(100) NOT NULL,
[SPDefaultClinicReimbursementMethod] nvarchar(100) NOT NULL,
[SPCMISamplingSourceType] int NOT NULL,
[SPCMISamplingAccountID] int NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[OBDefaultInpatientReimbursementMethod] nvarchar(100) NOT NULL,
[OBDefaultOutpatientReimbursementMethod] nvarchar(100) NOT NULL,
PRIMARY KEY ([PayorGroupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPayorGroup] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimPayorGroup] ([Name]);
GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__Membe__4F812C54] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorGr__Name__5075508D] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__Categ__79059230] DEFAULT ('') FOR [Category]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__Reimb__79F9B669] DEFAULT ('') FOR [ReimbursementType]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__Payor__545B539E] DEFAULT ('') FOR [PayorGroupCode]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SortO__00A6B3F8] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__IsCap__2A471CB2] DEFAULT ((0)) FOR [IsCapital]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__CAPCh__665478E7] DEFAULT ((0)) FOR [CAPChargesFinancialReportingID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__CAPCh__67489D20] DEFAULT ('') FOR [CAPChargesFinancialReporting]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__CAPCo__683CC159] DEFAULT ((0)) FOR [CAPContractualsFinancialReportingID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__CAPCo__6930E592] DEFAULT ('') FOR [CAPContractualsFinancialReporting]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__IsDSS__2D23895D] DEFAULT ((0)) FOR [IsDSS]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorGr__IsOB__2B3B40EB] DEFAULT ((0)) FOR [IsOB]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorGr__IsMR__2C2F6524] DEFAULT ((0)) FOR [IsMR]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorGr__IsSP__2952F879] DEFAULT ((0)) FOR [IsSP]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPHCR__79625787] DEFAULT ('') FOR [SPHCRType]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPHCR__50158FA4] DEFAULT ((0)) FOR [SPHCRPayorID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPHCR__4F216B6B] DEFAULT ('') FOR [SPHCRPayor]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPCha__262CA4D5] DEFAULT ((0)) FOR [SPChargesFinancialReportingID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPCha__2AF159F2] DEFAULT ('') FOR [SPChargesFinancialReporting]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPCon__2720C90E] DEFAULT ((0)) FOR [SPContractualsFinancialReportingID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPCon__2BE57E2B] DEFAULT ('') FOR [SPContractualsFinancialReporting]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPDef__18A989A6] DEFAULT ('Per Diem') FOR [SPDefaultInpatientReimbursementMethod]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPDef__199DADDF] DEFAULT ('% of Charge') FOR [SPDefaultOutpatientReimbursementMethod]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPDef__1A91D218] DEFAULT ('% of Charge') FOR [SPDefaultClinicReimbursementMethod]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPCMI__6A7A0F86] DEFAULT ((0)) FOR [SPCMISamplingSourceType]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__SPCMI__6B6E33BF] DEFAULT ((0)) FOR [SPCMISamplingAccountID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__FW_DimPayorGroup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__Histo__516974C6] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__OBDef__61CE5608] DEFAULT ('Per Diem') FOR [OBDefaultInpatientReimbursementMethod]; GO
ALTER TABLE [fw].[DimPayorGroup] ADD CONSTRAINT [DF__DimPayorG__OBDef__62C27A41] DEFAULT ('% of Charge') FOR [OBDefaultOutpatientReimbursementMethod]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayorGroupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayorGroupPH] (
[PayorGroupPHID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PayorGroupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPayorGroupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPayorGroupPH] ADD CONSTRAINT [DF__FW_DimPayorGroupPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPayorGroupPH] ADD CONSTRAINT [DF__DimPayorG__Membe__562E29E3] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPayorGroupPH] ADD CONSTRAINT [DF__DimPayorGr__Name__57224E1C] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayorGroupPH] ADD CONSTRAINT [DF__DimPayorG__Histo__58167255] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPayorPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPayorPH] (
[PayorPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PayorPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPayorPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPayorPH] ADD CONSTRAINT [DF__FW_DimPayorPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPayorPH] ADD CONSTRAINT [DF__DimPayorPH__Name__31246061] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPayorPH] ADD CONSTRAINT [DF__DimPayorP__Membe__3218849A] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPhysicianGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPhysicianGroup] (
[PhysicianGroupID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Category] nvarchar(200) NOT NULL,
[Subcategory] nvarchar(200) NOT NULL,
[PhysicianType] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[IsCapital] bit NOT NULL,
[IsDSS] bit NOT NULL,
[IsMR] bit NOT NULL,
[IsOB] bit NOT NULL,
[IsSP] bit NOT NULL,
[SPSalariesFinancialReportingID] int NOT NULL,
[SPSalariesFinancialReporting] nvarchar(100) NOT NULL,
[SPFTEsFinancialReportingID] int NOT NULL,
[SPFTEsFinancialReporting] varchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[SPSalariesVolumeDriverID] int NOT NULL,
[SPSalariesVolumeDriver] nvarchar(100) NOT NULL,
[SPPhysicianBenefitsTypeID] int NOT NULL,
[SPPhysicianBenefitsType] nvarchar(100) NOT NULL,
[WorkWeekOverrideID] int NOT NULL,
PRIMARY KEY ([PhysicianGroupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPhysicianGroup] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimPhysicianGroup] ([Name]);
GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__FW_DimPhysicianGroup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SPSal__28CD1311] DEFAULT ((0)) FOR [SPSalariesVolumeDriverID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SPSal__29C1374A] DEFAULT ('') FOR [SPSalariesVolumeDriver]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SPPhy__2AB55B83] DEFAULT ((0)) FOR [SPPhysicianBenefitsTypeID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SPPhy__2BA97FBC] DEFAULT ('') FOR [SPPhysicianBenefitsType]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Membe__0F1C8E7C] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Physi__3A7100D5] DEFAULT ('Not specified') FOR [Name]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Categ__26CC5CE0] DEFAULT ('') FOR [Category]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Subca__27C08119] DEFAULT ('') FOR [Subcategory]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Physi__7B4A9FF9] DEFAULT ('') FOR [PhysicianType]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SortO__28B4A552] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__IsCap__48BCEFF1] DEFAULT ((1)) FOR [IsCapital]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__IsDSS__4B995C9C] DEFAULT ((1)) FOR [IsDSS]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysici__IsMR__4AA53863] DEFAULT ((1)) FOR [IsMR]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysici__IsOB__49B1142A] DEFAULT ((1)) FOR [IsOB]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysici__IsSP__47C8CBB8] DEFAULT ((1)) FOR [IsSP]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Salar__71F4DB05] DEFAULT ((0)) FOR [SPSalariesFinancialReportingID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Salar__72E8FF3E] DEFAULT ('') FOR [SPSalariesFinancialReporting]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SPFTE__0773138B] DEFAULT ((0)) FOR [SPFTEsFinancialReportingID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__SPFTE__086737C4] DEFAULT ('') FOR [SPFTEsFinancialReporting]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__Histo__3B65250E] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPhysicianGroup] ADD CONSTRAINT [DF__DimPhysic__WorkW__7A282FE2] DEFAULT ((-1)) FOR [WorkWeekOverrideID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPhysicianGroupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPhysicianGroupPH] (
[PhysicianGroupPHID] int NOT NULL,
[Name] nvarchar(100) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PhysicianGroupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPhysicianGroupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPhysicianGroupPH] ADD CONSTRAINT [DF__DimPhysic__Membe__1010B2B5] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPhysicianGroupPH] ADD CONSTRAINT [DF__FW_DimPhysicianGroupPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPhysicianGroupPH] ADD CONSTRAINT [DF__DimPhysic__Physi__4029DA2B] DEFAULT ('Not specified') FOR [Name]; GO
ALTER TABLE [fw].[DimPhysicianGroupPH] ADD CONSTRAINT [DF__DimPhysic__Histo__411DFE64] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPhysicianPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPhysicianPH] (
[PhysicianPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([PhysicianPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPhysicianPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPhysicianPH] ADD CONSTRAINT [DF__DimPhysic__Histo__4C8063A2] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPhysicianPH] ADD CONSTRAINT [DF__DimPhysici__Name__4A981B30] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPhysicianPH] ADD CONSTRAINT [DF__DimPhysic__Membe__4B8C3F69] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPhysicianPH] ADD CONSTRAINT [DF__DimPhysic__Trans__4D7487DB] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPhysicianSpecialty ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPhysicianSpecialty] (
[PhysicianSpecialtyID] int NOT NULL,
[Name] nvarchar(203) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[PhysicianSpecialtyCode] nvarchar(100) NOT NULL,
[SpecialtyGroup] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[RVUTarget] nvarchar(100) NOT NULL,
PRIMARY KEY ([PhysicianSpecialtyID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimPhysicianSpecialty] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__Membe__0F775562] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__Trans__115F9DD4] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__Physi__1253C20D] DEFAULT ('') FOR [PhysicianSpecialtyCode]; GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__Speci__1347E646] DEFAULT ('') FOR [SpecialtyGroup]; GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__Descr__143C0A7F] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__Histo__106B799B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPhysicianSpecialty] ADD CONSTRAINT [DF__DimPhysic__RVUTa__5F933816] DEFAULT ('') FOR [RVUTarget]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPositionType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPositionType] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PositionTypeID] int NOT NULL,
[Name] nvarchar(255) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[PositionTypeAssignmentTypeID] int NOT NULL,
PRIMARY KEY ([PositionTypeID])
);
GO
ALTER TABLE [fw].[DimPositionType] ADD CONSTRAINT [DF__DimPositi__Histo__3F33B352] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPositionType] ADD CONSTRAINT [DF__DimPositio__Name__411BFBC4] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPositionType] ADD CONSTRAINT [DF__DimPositi__Trans__42101FFD] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPositionType] ADD CONSTRAINT [DF__DimPositi__Membe__43044436] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimPositionType] ADD CONSTRAINT [DF__DimPositi__Posit__43F8686F] DEFAULT ((1)) FOR [PositionTypeAssignmentTypeID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimPositionTypeAssignmentType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimPositionTypeAssignmentType] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PositionTypeAssignmentTypeID] int NOT NULL,
[Name] nvarchar(255) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([PositionTypeAssignmentTypeID])
);
GO
ALTER TABLE [fw].[DimPositionTypeAssignmentType] ADD CONSTRAINT [DF__DimPositi__Histo__397AD9FC] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimPositionTypeAssignmentType] ADD CONSTRAINT [DF__DimPositio__Name__3B63226E] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimPositionTypeAssignmentType] ADD CONSTRAINT [DF__DimPositi__Trans__3C5746A7] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimPositionTypeAssignmentType] ADD CONSTRAINT [DF__DimPositi__Membe__3D4B6AE0] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimProductiveClass ------------------
---------------------------------------------
CREATE TABLE [fw].[DimProductiveClass] (
[ProductiveClassID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ProductiveClassID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimProductiveClass] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimProductiveClass] ADD CONSTRAINT [DF__FW_DimProductiveClass_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimProductiveClass] ADD CONSTRAINT [DF__DimProduc__Histo__1D9FB7FD] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimProductiveClass] ADD CONSTRAINT [DF__DimProduct__Name__1BB76F8B] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimProductiveClass] ADD CONSTRAINT [DF__DimProduc__Membe__1CAB93C4] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimProductiveClass] ADD CONSTRAINT [DF_DimProductiveClass_SortOrder] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimProgram ------------------
---------------------------------------------
CREATE TABLE [fw].[DimProgram] (
[ProgramID] int NOT NULL,
[Name] nvarchar(203) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ProgramID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimProgram] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimProgram] ADD CONSTRAINT [DF__DimProgra__Membe__3629A1FE] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimProgram] ADD CONSTRAINT [DF__DimProgra__Histo__371DC637] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimProgram] ADD CONSTRAINT [DF__DimProgra__Trans__3811EA70] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimProgram] ADD CONSTRAINT [DF__DimProgram__Code__39060EA9] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimProgram] ADD CONSTRAINT [DF__DimProgra__Descr__39FA32E2] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimProgram] ADD CONSTRAINT [DF__DimProgra__SortO__3AEE571B] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimProject ------------------
---------------------------------------------
CREATE TABLE [fw].[DimProject] (
[ProjectID] int NOT NULL,
[Name] nvarchar(203) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[SortOrder] int NOT NULL,
[Code] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
PRIMARY KEY ([ProjectID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimProject] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimProject] ADD CONSTRAINT [DF__DimProjec__Histo__3EBEE7FF] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimProject] ADD CONSTRAINT [DF__DimProjec__Membe__3DCAC3C6] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimProject] ADD CONSTRAINT [DF__DimProjec__Trans__3FB30C38] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimProject] ADD CONSTRAINT [DF__DimProjec__SortO__40A73071] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimProject] ADD CONSTRAINT [DF__DimProject__Code__419B54AA] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimProject] ADD CONSTRAINT [DF__DimProjec__Descr__428F78E3] DEFAULT ('') FOR [Description]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimProvider ------------------
---------------------------------------------
CREATE TABLE [fw].[DimProvider] (
[ProviderID] int NOT NULL,
[Type] nvarchar(100) NOT NULL,
[NameFirst] nvarchar(100) NOT NULL,
[NameLast] nvarchar(100) NOT NULL,
[ProviderName] nvarchar(202) NOT NULL,
[ProviderCode] nvarchar(100) NOT NULL,
[PhysicianSpecialtyID] int NOT NULL,
[StateLicenseNumber] nvarchar(100) NOT NULL,
[NPI] nvarchar(100) NOT NULL,
[GroupAffiliaition] nvarchar(100) NOT NULL,
[DSSIsDefined] bit NOT NULL,
[OBIsDefined] bit NOT NULL,
[OBIsActive] bit NOT NULL,
[IsEmployee] bit NOT NULL,
[OBVolumeTarget1] decimal NOT NULL,
[OBVolumeTarget2] decimal NOT NULL,
[OBTier1Threshold] decimal NOT NULL,
[OBTier2Threshold] decimal NOT NULL,
[OBTier3Threshold] decimal NOT NULL,
[OBTier4Threshold] int NOT NULL,
[OBTier5Threshold] int NOT NULL,
[OBTier6Threshold] int NOT NULL,
[OBTier1Rate] money NOT NULL,
[OBTier2Rate] money NOT NULL,
[OBTier3Rate] money NOT NULL,
[OBTier4Rate] money NOT NULL,
[OBTier5Rate] money NOT NULL,
[OBTier6Rate] money NOT NULL,
[BasePay] money NOT NULL,
[PayRate] money NOT NULL,
[CompensationMethod] nvarchar(100) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[WorkWeekOverrideID] int NOT NULL,
[IsPhysician] int NOT NULL,
[Name] nvarchar(304) NOT NULL,
[IsVariable] bit NOT NULL,
[OBVolumeTarget3] decimal NOT NULL,
PRIMARY KEY ([ProviderID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimProvider] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Histo__2690903B] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__WorkW__22DE9604] DEFAULT ((-1)) FOR [WorkWeekOverrideID]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBVol__46C02E44] DEFAULT ((0)) FOR [OBVolumeTarget3]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__IsVar__47BE741E] DEFAULT ((0)) FOR [IsVariable]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvide__Type__296CFCE6] DEFAULT ('') FOR [Type]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__NameF__423CA363] DEFAULT ('') FOR [NameFirst]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__NameL__4330C79C] DEFAULT ('') FOR [NameLast]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Provi__2E31B203] DEFAULT ('') FOR [ProviderCode]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Physi__310E1EAE] DEFAULT ((0)) FOR [PhysicianSpecialtyID]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__State__320242E7] DEFAULT ('') FOR [StateLicenseNumber]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvider__NPI__32F66720] DEFAULT ('') FOR [NPI]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Group__33EA8B59] DEFAULT ('') FOR [GroupAffiliaition]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__DSSIs__00B5CB6D] DEFAULT ((0)) FOR [DSSIsDefined]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBIsD__7FC1A734] DEFAULT ((0)) FOR [OBIsDefined]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBIsA__2D3D8DCA] DEFAULT ((1)) FOR [OBIsActive]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__IsEmp__3019FA75] DEFAULT ((0)) FOR [IsEmployee]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBVol__2B6B1F48] DEFAULT ((0)) FOR [OBVolumeTarget1]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBVol__2C5F4381] DEFAULT ((0)) FOR [OBVolumeTarget2]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__7CE53A89] DEFAULT ((0)) FOR [OBTier1Threshold]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__7DD95EC2] DEFAULT ((0)) FOR [OBTier2Threshold]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__7ECD82FB] DEFAULT ((0)) FOR [OBTier3Threshold]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__55703EBF] DEFAULT ((0)) FOR [OBTier4Threshold]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__566462F8] DEFAULT ((0)) FOR [OBTier5Threshold]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OTTie__57588731] DEFAULT ((0)) FOR [OBTier6Threshold]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Thres__2B554558] DEFAULT ((0)) FOR [OBTier1Rate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__7AFCF217] DEFAULT ((0)) FOR [OBTier2Rate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__7BF11650] DEFAULT ((0)) FOR [OBTier3Rate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__5293D214] DEFAULT ((0)) FOR [OBTier4Rate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__5387F64D] DEFAULT ((0)) FOR [OBTier5Rate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__OBTie__547C1A86] DEFAULT ((0)) FOR [OBTier6Rate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__BaseP__2878D8AD] DEFAULT ((0)) FOR [BasePay]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__PayRa__2C496991] DEFAULT ((0)) FOR [PayRate]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Compe__2A61211F] DEFAULT ('') FOR [CompensationMethod]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Membe__259C6C02] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimProvider] ADD CONSTRAINT [DF__DimProvid__Trans__2784B474] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimProviderPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimProviderPH] (
[ProviderPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([ProviderPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimProviderPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimProviderPH] ADD CONSTRAINT [DF__DimProvide__Name__39A364AF] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimProviderPH] ADD CONSTRAINT [DF__DimProvid__Membe__3A9788E8] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimProviderPH] ADD CONSTRAINT [DF__DimProvid__Trans__3C7FD15A] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimProviderPH] ADD CONSTRAINT [DF__DimProvid__Histo__3B8BAD21] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimQuarter ------------------
---------------------------------------------
CREATE TABLE [fw].[DimQuarter] (
[MemberGUID] uniqueidentifier NOT NULL,
[QuarterID] tinyint NOT NULL,
[Name] nvarchar(100) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([QuarterID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimQuarter] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimQuarter] ADD CONSTRAINT [DF__FW_DimQuarter_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimQuarter] ADD CONSTRAINT [DF_DimQuarter_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimQuarter] ADD CONSTRAINT [DF_DimQuarter_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimQuarter] ADD CONSTRAINT [DF_DimQuarter_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimReportDetailType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimReportDetailType] (
[ReportDetailTypeID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[TableName] nvarchar(200) NOT NULL,
PRIMARY KEY ([ReportDetailTypeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimReportDetailType] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimReportDetailType] ADD CONSTRAINT [DF__DimReport__Histo__78A799BF] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimReportDetailType] ADD CONSTRAINT [DF__DimReportD__Name__76BF514D] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimReportDetailType] ADD CONSTRAINT [DF__DimReport__Membe__77B37586] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimReportDetailType] ADD CONSTRAINT [DF__DimReport__Trans__799BBDF8] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimReportDetailType] ADD CONSTRAINT [DF__DimReport__Table__7A8FE231] DEFAULT ('') FOR [TableName]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimResearchDepartmentCategory ------------------
---------------------------------------------
CREATE TABLE [fw].[DimResearchDepartmentCategory] (
[ResearchDepartmentCategoryID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ResearchDepartmentCategoryID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimResearchDepartmentCategory] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimResearchDepartmentCategory] ADD CONSTRAINT [DF__DimResear__Histo__7DD4CC82] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimResearchDepartmentCategory] ADD CONSTRAINT [DF__DimResearc__Name__7BEC8410] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimResearchDepartmentCategory] ADD CONSTRAINT [DF__DimResear__Membe__7CE0A849] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimResearchDepartmentCategory] ADD CONSTRAINT [DF__DimResear__Trans__7EC8F0BB] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimResearchDepartmentCategory] ADD CONSTRAINT [DF__DimResear__SortO__7FBD14F4] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimRowNumber ------------------
---------------------------------------------
CREATE TABLE [fw].[DimRowNumber] (
[RowNumberID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([RowNumberID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimRowNumber] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimRowNumber] ([Name]);
GO
ALTER TABLE [fw].[DimRowNumber] ADD CONSTRAINT [DF__FW_DimRowNumber_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimRowNumber] ADD CONSTRAINT [DF__DimRowNumb__Name__58B36098] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimRowNumber] ADD CONSTRAINT [DF__DimRowNum__Membe__59A784D1] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimRowNumber] ADD CONSTRAINT [DF__DimRowNum__Histo__5A9BA90A] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSPHAccountRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSPHAccountRollup] (
[SPHAccountRollupID] int NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Statement] nvarchar(200) NOT NULL,
[Category] nvarchar(200) NOT NULL,
[Section] nvarchar(200) NOT NULL,
[SortOrder] int NOT NULL,
[IsStandard] bit NOT NULL,
[SPHCostComponent] nvarchar(400) NOT NULL,
[SPHCostComponentRollup] nvarchar(400) NOT NULL,
[SPHAccountRollupCode] nvarchar(100) NOT NULL,
[LineItem] nvarchar(200) NOT NULL,
[Name] nvarchar(606) NOT NULL,
PRIMARY KEY ([SPHAccountRollupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimSPHAccountRollup] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__Trans__318AA99D] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__Membe__327ECDD6] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__State__34671648] DEFAULT ('Not Specified') FOR [Statement]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__Categ__355B3A81] DEFAULT ('Not Specified') FOR [Category]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__Secti__374382F3] DEFAULT ('') FOR [Section]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__SortO__3837A72C] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__IsSta__392BCB65] DEFAULT ((0)) FOR [IsStandard]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__SPHAc__2723C071] DEFAULT ('') FOR [SPHAccountRollupCode]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__SPHCo__2A153BB5] DEFAULT ('') FOR [SPHCostComponent]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__SPHCo__2B095FEE] DEFAULT ('') FOR [SPHCostComponentRollup]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__LineI__6809E33B] DEFAULT ('Not Specified') FOR [LineItem]; GO
ALTER TABLE [fw].[DimSPHAccountRollup] ADD CONSTRAINT [DF__DimSPHAcc__Histo__3372F20F] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSPHDepartment ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSPHDepartment] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SPHDepartmentID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[SPHDepartmentCode] nvarchar(100) NOT NULL,
[SPHDepartmentRollup] nvarchar(200) NOT NULL,
PRIMARY KEY ([SPHDepartmentID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_SPHDepartmentCode] ON [fw].[DimSPHDepartment] ([SPHDepartmentCode]) INCLUDE ([SPHDepartmentID]);
GO
ALTER TABLE [fw].[DimSPHDepartment] ADD CONSTRAINT [DF__DimSPHDep__Histo__3FB5067A] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimSPHDepartment] ADD CONSTRAINT [DF__DimSPHDepa__Name__419D4EEC] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimSPHDepartment] ADD CONSTRAINT [DF__DimSPHDep__Trans__42917325] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSPHDepartment] ADD CONSTRAINT [DF__DimSPHDep__Membe__4385975E] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSPHDepartment] ADD CONSTRAINT [DF__DimSPHDep__SPHDe__4479BB97] DEFAULT ('') FOR [SPHDepartmentCode]; GO
ALTER TABLE [fw].[DimSPHDepartment] ADD CONSTRAINT [DF__DimSPHDep__SPHDe__456DDFD0] DEFAULT ('') FOR [SPHDepartmentRollup]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSPHDepartmentRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSPHDepartmentRollup] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SPHDepartmentRollupID] int NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[SortOrder] int NOT NULL,
[IsStandard] bit NOT NULL,
[Name] nvarchar(200) NOT NULL,
[SPHDepartmentRollupCode] nvarchar(100) NOT NULL,
PRIMARY KEY ([SPHDepartmentRollupID])
);
GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDep__Trans__1212C99B] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDep__Membe__1306EDD4] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDep__SortO__13FB120D] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDep__IsSta__14EF3646] DEFAULT ((0)) FOR [IsStandard]; GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDepa__Name__15E35A7F] DEFAULT ('Not Specified') FOR [Name]; GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDep__Histo__102A8129] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimSPHDepartmentRollup] ADD CONSTRAINT [DF__DimSPHDep__SPHDe__5A195492] DEFAULT ('') FOR [SPHDepartmentRollupCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSPHDepartmentType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSPHDepartmentType] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SPHDepartmentTypeID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[SPHDepartmentTypeCode] nvarchar(100) NOT NULL,
[IsStandard] bit NOT NULL,
PRIMARY KEY ([SPHDepartmentTypeID])
);
GO
ALTER TABLE [fw].[DimSPHDepartmentType] ADD CONSTRAINT [DF__DimSPHDepa__Name__3408BA43] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimSPHDepartmentType] ADD CONSTRAINT [DF__DimSPHDep__Trans__34FCDE7C] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSPHDepartmentType] ADD CONSTRAINT [DF__DimSPHDep__Membe__35F102B5] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSPHDepartmentType] ADD CONSTRAINT [DF__DimSPHDep__SPHDe__5B0D78CB] DEFAULT ('') FOR [SPHDepartmentTypeCode]; GO
ALTER TABLE [fw].[DimSPHDepartmentType] ADD CONSTRAINT [DF__DimSPHDep__Histo__322071D1] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimSPHDepartmentType] ADD CONSTRAINT [DF__DimSPHDep__IsSta__5CF5C13D] DEFAULT ((0)) FOR [IsStandard]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSPHJobCodeRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSPHJobCodeRollup] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SPHJobCodeRollupID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[SortOrder] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[IsStandard] bit NOT NULL,
[SPHJobCodeRollupCode] nvarchar(100) NOT NULL,
[SPHCostComponent] nvarchar(400) NOT NULL,
PRIMARY KEY ([SPHJobCodeRollupID])
);
GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__SPHJo__2817E4AA] DEFAULT ('') FOR [SPHJobCodeRollupCode]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__SPHCo__47909003] DEFAULT ('') FOR [SPHCostComponent]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__Histo__59CE7078] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJobC__Name__5BB6B8EA] DEFAULT ('Not Specified') FOR [Name]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__Trans__5CAADD23] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__SortO__5D9F015C] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__Membe__5E932595] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSPHJobCodeRollup] ADD CONSTRAINT [DF__DimSPHJob__IsSta__5F8749CE] DEFAULT ((0)) FOR [IsStandard]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSPHPayCodeRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSPHPayCodeRollup] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SPHPayCodeRollupID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[SPHProductiveClass] nvarchar(200) NOT NULL,
[SortOrder] int NOT NULL,
[IsStandard] bit NOT NULL,
[SPHPayCodeRollupCode] nvarchar(100) NOT NULL,
PRIMARY KEY ([SPHPayCodeRollupID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_SPHPayCodeRollupCode] ON [fw].[DimSPHPayCodeRollup] ([SPHPayCodeRollupCode]) INCLUDE ([SPHPayCodeRollupID]);
GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__Histo__3142F2DF] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPayC__Name__332B3B51] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__Trans__341F5F8A] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__Membe__351383C3] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__SPHPr__3607A7FC] DEFAULT ('') FOR [SPHProductiveClass]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__SortO__36FBCC35] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__IsSta__37EFF06E] DEFAULT ((0)) FOR [IsStandard]; GO
ALTER TABLE [fw].[DimSPHPayCodeRollup] ADD CONSTRAINT [DF__DimSPHPay__SPHPa__38E414A7] DEFAULT ('') FOR [SPHPayCodeRollupCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSecureGroup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSecureGroup] (
[SecureGroupID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([SecureGroupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimSecureGroup] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimSecureGroup] ADD CONSTRAINT [DF__FW_DimSecureGroup_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSecureGroup] ADD CONSTRAINT [DF__DimSecureG__Name__1BDFF60F] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimSecureGroup] ADD CONSTRAINT [DF__DimSecure__Membe__1CD41A48] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSecureGroup] ADD CONSTRAINT [DF__DimSecure__Histo__1DC83E81] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLine ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLine] (
[ServiceLineID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(303) NOT NULL,
[RollupID] int NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[RollupSortOrder] int NOT NULL,
[ProductLine] nvarchar(200) NOT NULL,
[Code] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([ServiceLineID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_PreventDuplicates] ON [fw].[DimServiceLine] ([RollupID], [ProductLine]);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLine] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__Membe__3C4FF2FD] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__Rollu__1E11EF81] DEFAULT ((0)) FOR [RollupID]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__Rollu__11669219] DEFAULT ('Not Specified') FOR [Rollup]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__Rollu__23CAC8D7] DEFAULT ((0)) FOR [RollupSortOrder]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__Produ__1F0613BA] DEFAULT ('') FOR [ProductLine]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimService__Code__288F7DF4] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__SortO__1FFA37F3] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__FW_DimServiceLine_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLine] ADD CONSTRAINT [DF__DimServic__Histo__3D441736] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLine2 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLine2] (
[ServiceLine2ID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PatientTypeID] int NOT NULL,
[TransactionID] int NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[Rollup2] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ServiceLine2ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLine2] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimService__Name__7B78B5DE] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimServic__Membe__7C6CDA17] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimServic__Patie__7E552289] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimServic__Rollu__153722FD] DEFAULT ('Not Specified') FOR [Rollup]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimServic__Rollu__17A9DEE8] DEFAULT ('Not Specified') FOR [Rollup2]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__FW_DimServiceLine2_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimServic__SortO__25F7FE3F] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimServiceLine2] ADD CONSTRAINT [DF__DimServic__Histo__7D60FE50] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLine3 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLine3] (
[ServiceLine3ID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PatientTypeID] int NOT NULL,
[TransactionID] int NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ServiceLine3ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLine3] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__DimServic__Histo__05F64451] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__DimService__Name__040DFBDF] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__DimServic__Membe__05022018] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__DimServic__Patie__06EA688A] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__DimServic__Rollu__1907B3E1] DEFAULT ('Not Specified') FOR [Rollup]; GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__FW_DimServiceLine3_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLine3] ADD CONSTRAINT [DF__DimServic__SortO__26EC2278] DEFAULT ((0)) FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLine4 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLine4] (
[ServiceLine4ID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PatientTypeID] int NOT NULL,
[TransactionID] int NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
[Rollup2] nvarchar(100) NOT NULL,
PRIMARY KEY ([ServiceLine4ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLine4] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__FW_DimServiceLine4_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimServic__Rollu__1CD844C5] DEFAULT ('Not Specified') FOR [Rollup]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimService__Name__0CA341E0] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimServic__Membe__0D976619] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimServic__Patie__0F7FAE8B] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimServic__SortO__27E046B1] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimServic__Rollu__2BB0D795] DEFAULT ('Not Specified') FOR [Rollup2]; GO
ALTER TABLE [fw].[DimServiceLine4] ADD CONSTRAINT [DF__DimServic__Histo__0E8B8A52] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLine5 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLine5] (
[ServiceLine5ID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PatientTypeID] int NOT NULL,
[TransactionID] int NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ServiceLine5ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLine5] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__FW_DimServiceLine5_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__DimServic__Rollu__20A8D5A9] DEFAULT ('Not Specified') FOR [Rollup]; GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__DimServic__SortO__28D46AEA] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__DimService__Name__153887E1] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__DimServic__Membe__162CAC1A] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__DimServic__Patie__1814F48C] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimServiceLine5] ADD CONSTRAINT [DF__DimServic__Histo__1720D053] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLine6 ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLine6] (
[ServiceLine6ID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[PatientTypeID] int NOT NULL,
[TransactionID] int NOT NULL,
[Rollup] nvarchar(100) NOT NULL,
[SortOrder] int NOT NULL,
PRIMARY KEY ([ServiceLine6ID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLine6] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__FW_DimServiceLine6_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__DimServic__SortO__29C88F23] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__DimService__Name__1DCDCDE2] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__DimServic__Membe__1EC1F21B] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__DimServic__Patie__20AA3A8D] DEFAULT ((0)) FOR [PatientTypeID]; GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__DimServic__Rollu__2479668D] DEFAULT ('Not Specified') FOR [Rollup]; GO
ALTER TABLE [fw].[DimServiceLine6] ADD CONSTRAINT [DF__DimServic__Histo__1FB61654] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLineRollup ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLineRollup] (
[ServiceLineRollupID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[SortOrder] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([ServiceLineRollupID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLineRollup] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Name] ON [fw].[DimServiceLineRollup] ([Name]);
GO
ALTER TABLE [fw].[DimServiceLineRollup] ADD CONSTRAINT [DF__DimServic__Histo__3EF2F508] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimServiceLineRollup] ADD CONSTRAINT [DF__DimService__Name__3C16885D] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLineRollup] ADD CONSTRAINT [DF__DimServic__SortO__3D0AAC96] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimServiceLineRollup] ADD CONSTRAINT [DF__DimServic__Membe__3DFED0CF] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLineRollup] ADD CONSTRAINT [DF__DimServic__Trans__3FE71941] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimServiceLineRollupPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimServiceLineRollupPH] (
[ServiceLineRollupPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([ServiceLineRollupPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimServiceLineRollupPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimServiceLineRollupPH] ADD CONSTRAINT [DF__DimService__Name__4F5F3252] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimServiceLineRollupPH] ADD CONSTRAINT [DF__DimServic__Membe__5053568B] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimServiceLineRollupPH] ADD CONSTRAINT [DF__DimServic__Trans__523B9EFD] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimServiceLineRollupPH] ADD CONSTRAINT [DF__DimServic__Histo__51477AC4] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSourceOfSavings ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSourceOfSavings] (
[SourceOfSavingsID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([SourceOfSavingsID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimSourceOfSavings] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimSourceOfSavings] ADD CONSTRAINT [DF__DimSourceO__Name__38F52A8D] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimSourceOfSavings] ADD CONSTRAINT [DF__DimSource__Membe__39E94EC6] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSourceOfSavings] ADD CONSTRAINT [DF__DimSource__Trans__3BD19738] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSourceOfSavings] ADD CONSTRAINT [DF__DimSource__Histo__3ADD72FF] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimStaffingCategory ------------------
---------------------------------------------
CREATE TABLE [fw].[DimStaffingCategory] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[StaffingCategoryID] int NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[StaffingCategoryCode] nvarchar(100) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[Name] nvarchar(203) NOT NULL,
PRIMARY KEY ([StaffingCategoryID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_StaffingCategoryCode] ON [fw].[DimStaffingCategory] ([StaffingCategoryCode]) INCLUDE ([StaffingCategoryID]);
GO
ALTER TABLE [fw].[DimStaffingCategory] ADD CONSTRAINT [DF__DimStaffi__Trans__018A8973] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimStaffingCategory] ADD CONSTRAINT [DF__DimStaffi__Membe__027EADAC] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimStaffingCategory] ADD CONSTRAINT [DF__DimStaffi__Staff__0372D1E5] DEFAULT ((0)) FOR [StaffingCategoryCode]; GO
ALTER TABLE [fw].[DimStaffingCategory] ADD CONSTRAINT [DF__DimStaffi__Descr__0466F61E] DEFAULT ('Not Specified') FOR [Description]; GO
ALTER TABLE [fw].[DimStaffingCategory] ADD CONSTRAINT [DF__DimStaffi__Histo__7FA24101] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimStrataDecisionServiceLine ------------------
---------------------------------------------
CREATE TABLE [fw].[DimStrataDecisionServiceLine] (
[StrataDecisionServiceLineID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[PatientTypeID] int NOT NULL,
PRIMARY KEY ([StrataDecisionServiceLineID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimStrataDecisionServiceLine] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimStrataDecisionServiceLine] ADD CONSTRAINT [DF__DimStrata__Histo__367EA7B9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimStrataDecisionServiceLine] ADD CONSTRAINT [DF__DimStrataD__Name__34965F47] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimStrataDecisionServiceLine] ADD CONSTRAINT [DF__DimStrata__Membe__358A8380] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimStrataDecisionServiceLine] ADD CONSTRAINT [DF__DimStrata__Trans__3772CBF2] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimStrataDecisionServiceLine] ADD CONSTRAINT [DF__DimStrata__Patie__3866F02B] DEFAULT ((0)) FOR [PatientTypeID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimSystem ------------------
---------------------------------------------
CREATE TABLE [fw].[DimSystem] (
[SystemID] smallint NOT NULL,
[Name] nvarchar(100) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Code] nvarchar(200) NOT NULL,
[Description] nvarchar(100) NOT NULL,
[SecureGroupID] int NOT NULL,
[SortOrder] int NOT NULL,
[EliminationsDepartmentID] int NOT NULL,
PRIMARY KEY ([SystemID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimSystem] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__Histo__2491A282] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__Membe__239D7E49] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__Trans__2585C6BB] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__Code__2679EAF4] DEFAULT ('') FOR [Code]; GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__Descr__276E0F2D] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__SortO__28623366] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimSystem] ADD CONSTRAINT [DF__DimSystem__Elimi__4FA5B5F6] DEFAULT ((0)) FOR [EliminationsDepartmentID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimTime ------------------
---------------------------------------------
CREATE TABLE [fw].[DimTime] (
[TimeID] int NOT NULL,
[Name] varchar(5) NOT NULL,
[Hour] varchar(2) NOT NULL,
[Minute] varchar(2) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[StandardTime] nvarchar(100) NOT NULL,
PRIMARY KEY ([TimeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimTime] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimTime] ADD CONSTRAINT [DF__DimTime__MemberG__14E518D4] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimTime] ADD CONSTRAINT [DF__DimTime__History__15D93D0D] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimTime] ADD CONSTRAINT [DF__DimTime__Standar__1AB09A8F] DEFAULT ('12:00 AM') FOR [StandardTime]; GO
ALTER TABLE [fw].[DimTime] ADD CONSTRAINT [DF__FW_DimTime_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimTime] ADD CONSTRAINT [DF__fw_DimTime_Minute] DEFAULT ('') FOR [Minute]; GO
ALTER TABLE [fw].[DimTime] ADD CONSTRAINT [DF__fw_DimTime_Hour] DEFAULT ('') FOR [Hour]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimTimeClass ------------------
---------------------------------------------
CREATE TABLE [fw].[DimTimeClass] (
[TimeClassID] tinyint NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[Name] nvarchar(100) NOT NULL,
[TimeClassCode] nvarchar(3) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[GlobalID] varchar(64) NOT NULL,
[IsSP] bit NOT NULL,
[SortOrder] int NOT NULL,
[TransactionID] int NOT NULL,
[SPIsISForecast] bit NOT NULL,
PRIMARY KEY ([TimeClassID])
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_MemberGUID] ON [fw].[DimTimeClass] ([MemberGUID]);
CREATE UNIQUE NONCLUSTERED INDEX [IX_TimeClassCode] ON [fw].[DimTimeClass] ([TimeClassCode]);
CREATE NONCLUSTERED INDEX [IX_Name] ON [fw].[DimTimeClass] ([Name]);
GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF__DimTimeCla__IsSP__08A26ADC] DEFAULT ((0)) FOR [IsSP]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF__FW_DimTimeClass_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF_DimTimeClass_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF__DimTimeCl__Globa__4C832D6A] DEFAULT ('') FOR [GlobalID]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF_FWDIMTIMECLASSNAME] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF__DimTimeCl__SortO__6BD12204] DEFAULT ((0)) FOR [SortOrder]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF__DimTimeCl__SPIsI__70E4B3EE] DEFAULT ((0)) FOR [SPIsISForecast]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF_DimTimeClass_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimTimeClass] ADD CONSTRAINT [DF_DimTimeClass_Code] DEFAULT ('A') FOR [TimeClassCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimTimeClassPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimTimeClassPH] (
[TimeClassPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([TimeClassPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimTimeClassPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimTimeClassPH] ADD CONSTRAINT [DF__DimTimeCla__Name__148821B3] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimTimeClassPH] ADD CONSTRAINT [DF__FW_DimTimeClassPH_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimTimeClassPH] ADD CONSTRAINT [DF__DimTimeCl__Membe__157C45EC] DEFAULT (newid()) FOR [MemberGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimUnit ------------------
---------------------------------------------
CREATE TABLE [fw].[DimUnit] (
[MemberGUID] uniqueidentifier NOT NULL,
[UnitID] smallint NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Abbreviation] nvarchar(10) NOT NULL,
[Version] timestamp NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[SortOrder] nvarchar(5) NOT NULL,
[TransactionID] int NOT NULL,
[IsActive] bit NOT NULL,
PRIMARY KEY ([UnitID])
);
CREATE UNIQUE NONCLUSTERED INDEX [MGUID_Unit_data_DimUnit] ON [fw].[DimUnit] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF_data.DimUnit_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF__FW_DimUnit_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF__DimUnit__IsActiv__298B2BD0] DEFAULT ((1)) FOR [IsActive]; GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF_FWDIMUNITSORTORDER] DEFAULT ('') FOR [SortOrder]; GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF_DimUnit_MemberGUID] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF_data.DimUnit_Name] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimUnit] ADD CONSTRAINT [DF_data.DimUnit_Abbreviation] DEFAULT ('') FOR [Abbreviation]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimUnitType ------------------
---------------------------------------------
CREATE TABLE [fw].[DimUnitType] (
[MemberGUID] uniqueidentifier NOT NULL,
[UnitTypeID] tinyint NOT NULL,
[Name] nvarchar(200) NOT NULL,
[DisplayFormat] nvarchar(50) NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[GlobalID] varchar(32) NOT NULL,
[SPDisplayFormat] nvarchar(100) NOT NULL,
[CapitalDisplayFormat] nvarchar(100) NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([UnitTypeID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimUnitType] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__FW_DimUnitType_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF_DimUnitType_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__DimUnitTy__SPDis__2CAAC128] DEFAULT ('') FOR [SPDisplayFormat]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__DimUnitTy__Capit__2D9EE561] DEFAULT ('') FOR [CapitalDisplayFormat]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__DimUnitTy__Membe__7BBC73E9] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__DimUnitTy__Globa__5AD14CC1] DEFAULT ('') FOR [GlobalID]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__DimUnitTyp__Name__7AC84FB0] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimUnitType] ADD CONSTRAINT [DF__DimUnitTy__Displ__79D42B77] DEFAULT ('') FOR [DisplayFormat]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimVariability ------------------
---------------------------------------------
CREATE TABLE [fw].[DimVariability] (
[HistoryItemGUID] uniqueidentifier NOT NULL,
[VariabilityID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[TransactionID] int NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([VariabilityID])
);
GO
ALTER TABLE [fw].[DimVariability] ADD CONSTRAINT [DF__DimVariab__Membe__00F16219] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimVariability] ADD CONSTRAINT [DF__DimVariab__Histo__7D20D135] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimVariability] ADD CONSTRAINT [DF__DimVariabi__Name__7F0919A7] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimVariability] ADD CONSTRAINT [DF__DimVariab__Trans__7FFD3DE0] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimWorkWeek ------------------
---------------------------------------------
CREATE TABLE [fw].[DimWorkWeek] (
[WorkWeekID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[WorkWeekCode] nvarchar(200) NOT NULL,
[Type] nvarchar(100) NOT NULL,
[SortOrder] nvarchar(100) NOT NULL,
[Hours] numeric NOT NULL,
PRIMARY KEY ([WorkWeekID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimWorkWeek] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWee__Name__0CEF54E5] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWe__Membe__0DE3791E] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWe__Trans__0FCBC190] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWe__WorkW__10BFE5C9] DEFAULT ('') FOR [WorkWeekCode]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWe__Histo__0ED79D57] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWee__Type__6CA280E4] DEFAULT ('All') FOR [Type]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF_dimworkweek_hours] DEFAULT ((40)) FOR [Hours]; GO
ALTER TABLE [fw].[DimWorkWeek] ADD CONSTRAINT [DF__DimWorkWe__SortO__7D049C8D] DEFAULT ('') FOR [SortOrder]; GO
---------------------------------------------
---------------------------------------------
-- fw.DimWorkWeekPH ------------------
---------------------------------------------
CREATE TABLE [fw].[DimWorkWeekPH] (
[WorkWeekPHID] int NOT NULL,
[Name] nvarchar(200) NOT NULL,
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([WorkWeekPHID])
);
CREATE NONCLUSTERED INDEX [NUNC_MemberGUID] ON [fw].[DimWorkWeekPH] ([MemberGUID]);
GO
ALTER TABLE [fw].[DimWorkWeekPH] ADD CONSTRAINT [DF__DimWorkWee__Name__149076AD] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[DimWorkWeekPH] ADD CONSTRAINT [DF__DimWorkWe__Membe__15849AE6] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[DimWorkWeekPH] ADD CONSTRAINT [DF__DimWorkWe__Trans__176CE358] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[DimWorkWeekPH] ADD CONSTRAINT [DF__DimWorkWe__Histo__1678BF1F] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactChargeBasedStatistics ------------------
---------------------------------------------
CREATE TABLE [fw].[FactChargeBasedStatistics] (
[RowID] int NOT NULL,
[DateID] int NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[Value] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [fw].[FactChargeBasedStatistics] ([IsDeleted], [DateID], [DepartmentID], [AccountID], [RowID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [fw].[FactChargeBasedStatistics] ([IsDeleted], [DateID], [DepartmentID], [AccountID], [RowID]);
GO
ALTER TABLE [fw].[FactChargeBasedStatistics] ADD CONSTRAINT [DF__FactCharg__Value__0786EF0A] DEFAULT ((0)) FOR [Value]; GO
ALTER TABLE [fw].[FactChargeBasedStatistics] ADD CONSTRAINT [DF__FactCharg__IsDel__087B1343] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactChargeBasedStatistics] ADD CONSTRAINT [DF__FactCharg__Trans__0A635BB5] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactChargeBasedStatistics] ADD CONSTRAINT [DF__FactCharg__Histo__096F377C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactChargeBasedStatisticsDailyKeys ------------------
---------------------------------------------
CREATE TABLE [fw].[FactChargeBasedStatisticsDailyKeys] (
[DepartmentID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[DateID] int NOT NULL,
[AccountID] int NOT NULL,
PRIMARY KEY ([DateID], [DepartmentID], [AccountID])
);
GO
---------------------------------------------
---------------------------------------------
-- fw.FactChargeBasedStatisticsMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactChargeBasedStatisticsMonthly] (
[RowID] int NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[Value] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[TransactionID] int NOT NULL,
[Version] timestamp NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_Value] DEFAULT ((0)) FOR [Value]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactChargeBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactChargeBasedStatisticsByPostDate_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactChargeBasedStatisticsPayPeriodKeys ------------------
---------------------------------------------
CREATE TABLE [fw].[FactChargeBasedStatisticsPayPeriodKeys] (
[DepartmentID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[AccountID] int NOT NULL,
PRIMARY KEY ([PayPeriodID], [DepartmentID], [AccountID])
);
GO
---------------------------------------------
---------------------------------------------
-- fw.FactClinicaltoGLDepartmentMapping ------------------
---------------------------------------------
CREATE TABLE [fw].[FactClinicaltoGLDepartmentMapping] (
[RowID] int NOT NULL,
[ClinicalDepartmentID] int NOT NULL,
[DepartmentID] int NOT NULL,
[ClinicalDepartmentCode] nvarchar(100) NOT NULL,
[GLDepartmentCode] nvarchar(100) NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactClinicaltoGLDepartmentMapping] ADD CONSTRAINT [DF__FactClini__Histo__1572B9A9] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactClinicaltoGLDepartmentMapping] ADD CONSTRAINT [DF__FactClini__Clini__12964CFE] DEFAULT ('') FOR [ClinicalDepartmentCode]; GO
ALTER TABLE [fw].[FactClinicaltoGLDepartmentMapping] ADD CONSTRAINT [DF__FactClini__GLDep__138A7137] DEFAULT ('') FOR [GLDepartmentCode]; GO
ALTER TABLE [fw].[FactClinicaltoGLDepartmentMapping] ADD CONSTRAINT [DF__FactClini__IsDel__147E9570] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactClinicaltoGLDepartmentMapping] ADD CONSTRAINT [DF__FactClini__Trans__1666DDE2] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactEliminationsAccountMapping ------------------
---------------------------------------------
CREATE TABLE [fw].[FactEliminationsAccountMapping] (
[RowID] int NOT NULL,
[RevenueAccountCode] nvarchar(100) NOT NULL,
[ExpenseAccountCode] nvarchar(100) NOT NULL,
[PlugAccountID] int NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactEliminationsAccountMapping] ADD CONSTRAINT [DF__FactElimi__Reven__38233220] DEFAULT ('') FOR [RevenueAccountCode]; GO
ALTER TABLE [fw].[FactEliminationsAccountMapping] ADD CONSTRAINT [DF__FactElimi__Expen__39175659] DEFAULT ('') FOR [ExpenseAccountCode]; GO
ALTER TABLE [fw].[FactEliminationsAccountMapping] ADD CONSTRAINT [DF__FactElimi__PlugA__3A0B7A92] DEFAULT ((0)) FOR [PlugAccountID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactEncounterBasedStatistics ------------------
---------------------------------------------
CREATE TABLE [fw].[FactEncounterBasedStatistics] (
[RowID] bigint NOT NULL,
[DateID] int NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[Value] decimal NOT NULL,
[StatisticID] int NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactEncounterBasedStatistics] ADD CONSTRAINT [DF_FactEncounterBasedStatistics_DateID] DEFAULT ((0)) FOR [DateID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatistics] ADD CONSTRAINT [DF_FactEncounterBasedStatistics_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatistics] ADD CONSTRAINT [DF_FactEncounterBasedStatistics_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatistics] ADD CONSTRAINT [DF_FactEncounterBasedStatistics_Value] DEFAULT ((0)) FOR [Value]; GO
ALTER TABLE [fw].[FactEncounterBasedStatistics] ADD CONSTRAINT [DF_FactEncounterBasedStatistics_StatisticID] DEFAULT ((0)) FOR [StatisticID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactEncounterBasedStatisticsMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactEncounterBasedStatisticsMonthly] (
[RowID] bigint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[Value] decimal NOT NULL,
[StatisticID] int NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactEncounterBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactEncounterBasedStatisticsMonthly_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactEncounterBasedStatisticsMonthly_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactEncounterBasedStatisticsMonthly_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactEncounterBasedStatisticsMonthly_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactEncounterBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactEncounterBasedStatisticsMonthly_Value] DEFAULT ((0)) FOR [Value]; GO
ALTER TABLE [fw].[FactEncounterBasedStatisticsMonthly] ADD CONSTRAINT [DF_FactEncounterBasedStatisticsMonthly_StatisticID] DEFAULT ((0)) FOR [StatisticID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactGLSampled ------------------
---------------------------------------------
CREATE TABLE [fw].[FactGLSampled] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Units] decimal NOT NULL,
[UnitsYTD] decimal NOT NULL,
[UnitsPriorYear] decimal NOT NULL,
[UnitsPriorYTD] decimal NOT NULL,
[Dollars] decimal NOT NULL,
[DollarsYTD] decimal NOT NULL,
[DollarsPriorYear] decimal NOT NULL,
[DollarsPriorYTD] decimal NOT NULL,
[TransactionID] int NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactGLSampled] ON [fw].[FactGLSampled] ([AccountID], [DepartmentID], [FiscalYearID], [FiscalMonthID], [TimeClassID]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactGLSampled] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [FK_FactGLSampled_DimAccount] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [FK_FactGLSampled_DimFiscalMonth] FOREIGN KEY ([FiscalMonthID]) REFERENCES [fw].[DimFiscalMonth] ([FiscalMonthID]); GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [FK_FactGLSampled_DimFiscalYear] FOREIGN KEY ([FiscalYearID]) REFERENCES [fw].[DimFiscalYear] ([FiscalYearID]); GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [FK_FactGLSampled_DimTimeClass] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_DollarsPriorYTD] DEFAULT ((0)) FOR [DollarsPriorYTD]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF__FW_FactGLSampled_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_Units] DEFAULT ((0)) FOR [Units]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_UnitsYTD] DEFAULT ((0)) FOR [UnitsYTD]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_UnitsPriorYear] DEFAULT ((0)) FOR [UnitsPriorYear]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_UnitsPriorYTD] DEFAULT ((0)) FOR [UnitsPriorYTD]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_Dollars] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_DollarsYTD] DEFAULT ((0)) FOR [DollarsYTD]; GO
ALTER TABLE [fw].[FactGLSampled] ADD CONSTRAINT [DF_FactGLSampled_DollarsPriorYear] DEFAULT ((0)) FOR [DollarsPriorYear]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPatientBillingLineItemGroupedCache ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPatientBillingLineItemGroupedCache] (
[RowID] bigint NOT NULL,
[DepartmentID] int NOT NULL,
[ChargeCodeID] int NOT NULL,
[PatientTypeRollupID] tinyint NOT NULL,
[ServiceDateID] int NOT NULL,
[PostDateID] int NOT NULL,
[UnitsOfService] float NULL,
[FiscalYearID] smallint NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [CORE_PostDateID_DepartmentID_ChargeCodeID_PatientTypeRollupID_inc] ON [fw].[FactPatientBillingLineItemGroupedCache] ([PostDateID], [DepartmentID], [ChargeCodeID], [PatientTypeRollupID]) INCLUDE ([UnitsOfService]);
CREATE NONCLUSTERED INDEX [CORE_ServiceDateID_DepartmentID_ChargeCodeID_PatientTypeRollupID_inc] ON [fw].[FactPatientBillingLineItemGroupedCache] ([ServiceDateID], [DepartmentID], [ChargeCodeID], [PatientTypeRollupID]) INCLUDE ([UnitsOfService]);
GO
ALTER TABLE [fw].[FactPatientBillingLineItemGroupedCache] ADD CONSTRAINT [DF__FactPatie__Fisca__6D4E869C] DEFAULT ((0)) FOR [FiscalYearID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPayrollSampledDaily ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPayrollSampledDaily] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[DateID] int NOT NULL,
[Hours] decimal NOT NULL,
[Dollars] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[IsFlexed] bit NOT NULL,
[PayCodeGroupID] int NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [IDX_FactPayrollSampledDaily] ON [fw].[FactPayrollSampledDaily] ([DepartmentID], [JobCodeID], [PayCodeGroupID], [PayPeriodID], [DateID], [TimeClassID]) INCLUDE ([Dollars], [FTEs], [Hours]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledDaily] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_JobCodeID] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_DateID] DEFAULT ((0)) FOR [DateID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_Hours] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_Dollars] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_FTEs] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_IsFlexed] DEFAULT ((0)) FOR [IsFlexed]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_PayCodeGroupID] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[FactPayrollSampledDaily] ADD CONSTRAINT [DF_FactPayrollSampledDaily_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPayrollSampledDailyDetailed ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPayrollSampledDailyDetailed] (
[RowID] bigint NOT NULL,
[DepartmentID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayCodeID] smallint NOT NULL,
[PayCodeGroupID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[DateID] int NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Dollars] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[Hours] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[EmployeeID] int NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledDailyDetailed] ([IsDeleted]);
CREATE NONCLUSTERED INDEX [IDX_FactPayrollSampledDailyDetailed] ON [fw].[FactPayrollSampledDailyDetailed] ([DepartmentID], [JobCodeID], [PayCodeID], [PayCodeGroupID], [EmployeeID], [DateID], [TimeClassID]);
GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__Depar__052B3BFA] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__JobCo__061F6033] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__PayCo__0713846C] DEFAULT ((0)) FOR [PayCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__PayCo__0807A8A5] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__PayPe__08FBCCDE] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__DateI__09EFF117] DEFAULT ((0)) FOR [DateID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__TimeC__0AE41550] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__0BD83989] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayrol__FTEs__0CCC5DC2] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__0DC081FB] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__IsDel__0EB4A634] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__Trans__109CEEA6] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__Emplo__119112DF] DEFAULT ((0)) FOR [EmployeeID]; GO
ALTER TABLE [fw].[FactPayrollSampledDailyDetailed] ADD CONSTRAINT [DF__FactPayro__Histo__0FA8CA6D] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPayrollSampledMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPayrollSampledMonthly] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayCodeID] smallint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Hours] decimal NOT NULL,
[HoursYTD] decimal NOT NULL,
[HoursPriorYear] decimal NOT NULL,
[HoursPriorYTD] decimal NOT NULL,
[Dollars] decimal NOT NULL,
[DollarsYTD] decimal NOT NULL,
[DollarsPriorYear] decimal NOT NULL,
[DollarsPriorYTD] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[FTEsYTD] decimal NOT NULL,
[FTEsPriorYear] decimal NOT NULL,
[FTEsPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[PayCodeGroupID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactPayrollSampledMonthly] ON [fw].[FactPayrollSampledMonthly] ([DepartmentID], [JobCodeID], [PayCodeID], [FiscalYearID], [FiscalMonthID], [TimeClassID]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledMonthly] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF__FW_FactPayrollSampledMonthly_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_FTEs] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_FTEsYTD] DEFAULT ((0)) FOR [FTEsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_FTEsPriorYear] DEFAULT ((0)) FOR [FTEsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_FTEsPriorYTD] DEFAULT ((0)) FOR [FTEsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF__FactPayrollSampledMonthly__IsDel__772804EC] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_Hours] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_HoursYTD] DEFAULT ((0)) FOR [HoursYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_HoursPriorYear] DEFAULT ((0)) FOR [HoursPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_HoursPriorYTD] DEFAULT ((0)) FOR [HoursPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_Dollars] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_DollarsYTD] DEFAULT ((0)) FOR [DollarsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_DollarsPriorYear] DEFAULT ((0)) FOR [DollarsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_DollarsPriorYTD] DEFAULT ((0)) FOR [DollarsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF__FactPayro__PayCo__23AF9150] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF__FactPayrollSampledMonthly__Histo__781C2925] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_JobCodeID] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_PayCodeID] DEFAULT ((0)) FOR [PayCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthly] ADD CONSTRAINT [DF_FactPayrollSampledMonthly_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPayrollSampledMonthlyDetailed ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPayrollSampledMonthlyDetailed] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[JobCodeID] int NOT NULL,
[PayCodeID] smallint NOT NULL,
[PayCodeGroupID] int NOT NULL,
[EmployeeID] int NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Dollars] decimal NOT NULL,
[DollarsYTD] decimal NOT NULL,
[DollarsPriorYear] decimal NOT NULL,
[DollarsPriorYTD] decimal NOT NULL,
[Hours] decimal NOT NULL,
[HoursYTD] decimal NOT NULL,
[HoursPriorYear] decimal NOT NULL,
[HoursPriorYTD] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[FTEsYTD] decimal NOT NULL,
[FTEsPriorYear] decimal NOT NULL,
[FTEsPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE UNIQUE CLUSTERED INDEX [CU_Base] ON [fw].[FactPayrollSampledMonthlyDetailed] ([IsDeleted], [DepartmentID], [TimeClassID], [FiscalYearID], [FiscalMonthID], [JobCodeID], [PayCodeGroupID], [PayCodeID], [EmployeeID], [RowID]);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [fw].[FactPayrollSampledMonthlyDetailed] ([IsDeleted], [DepartmentID], [TimeClassID], [FiscalYearID], [FiscalMonthID], [JobCodeID], [PayCodeGroupID], [PayCodeID], [EmployeeID], [RowID]);
GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__FTEsP__00072DB7] DEFAULT ((0)) FOR [FTEsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__FTEsP__00FB51F0] DEFAULT ((0)) FOR [FTEsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__IsDel__01EF7629] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Trans__03D7BE9B] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Histo__02E39A62] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Fisca__74957B0B] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Fisca__75899F44] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__767DC37D] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__7771E7B6] DEFAULT ((0)) FOR [DollarsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__78660BEF] DEFAULT ((0)) FOR [DollarsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__795A3028] DEFAULT ((0)) FOR [DollarsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__7A4E5461] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_JobCodeID] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__7B42789A] DEFAULT ((0)) FOR [HoursYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_PayCodeID] DEFAULT ((0)) FOR [PayCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__7C369CD3] DEFAULT ((0)) FOR [HoursPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_PayCodeGroupID] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__7D2AC10C] DEFAULT ((0)) FOR [HoursPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_EmployeeID] DEFAULT ((0)) FOR [EmployeeID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayrol__FTEs__7E1EE545] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF_FactPayrollSampledMonthlyDetailed_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactPayrollSampledMonthlyDetailed] ADD CONSTRAINT [DF__FactPayro__FTEsY__7F13097E] DEFAULT ((0)) FOR [FTEsYTD]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPayrollSampledPayPeriod ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPayrollSampledPayPeriod] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Hours] decimal NOT NULL,
[HoursYTD] decimal NOT NULL,
[HoursPriorYear] decimal NOT NULL,
[HoursPriorYTD] decimal NOT NULL,
[Dollars] decimal NOT NULL,
[DollarsYTD] decimal NOT NULL,
[DollarsPriorYear] decimal NOT NULL,
[DollarsPriorYTD] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[FTEsYTD] decimal NOT NULL,
[FTEsPriorYear] decimal NOT NULL,
[FTEsPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[IsFlexed] bit NOT NULL,
[PayCodeGroupID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [IDX_FactPayrollSampledPayPeriod] ON [fw].[FactPayrollSampledPayPeriod] ([DepartmentID], [JobCodeID], [PayCodeGroupID], [PayPeriodID], [TimeClassID]) INCLUDE ([Dollars], [DollarsPriorYear], [DollarsPriorYTD], [DollarsYTD], [FTEs], [FTEsPriorYear], [FTEsPriorYTD], [FTEsYTD], [Hours], [HoursPriorYear], [HoursPriorYTD], [HoursYTD]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledPayPeriod] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF__FW_FactPayrollSampledPayPeriod_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_JobCodeID] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF__FactPayro__IsFle__1508738B] DEFAULT ((0)) FOR [IsFlexed]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_FTEs] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_FTEsYTD] DEFAULT ((0)) FOR [FTEsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_FTEsPriorYear] DEFAULT ((0)) FOR [FTEsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_FTEsPriorYTD] DEFAULT ((0)) FOR [FTEsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF__FactPayroPP__IsDel__772804EC] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_Dollars] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_DollarsYTD] DEFAULT ((0)) FOR [DollarsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_DollarsPriorYear] DEFAULT ((0)) FOR [DollarsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_DollarsPriorYTD] DEFAULT ((0)) FOR [DollarsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_Hours] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_HoursYTD] DEFAULT ((0)) FOR [HoursYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_HoursPriorYear] DEFAULT ((0)) FOR [HoursPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_HoursPriorYTD] DEFAULT ((0)) FOR [HoursPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF__FactPayro__PayCo__3875A40C] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriod_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriod] ADD CONSTRAINT [DF__FactPayroPP__Histo__781C2925] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactPayrollSampledPayPeriodDetailed ------------------
---------------------------------------------
CREATE TABLE [fw].[FactPayrollSampledPayPeriodDetailed] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[JobCodeID] int NOT NULL,
[PayCodeID] smallint NOT NULL,
[PayCodeGroupID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Dollars] decimal NOT NULL,
[DollarsPriorYear] decimal NOT NULL,
[DollarsPriorYTD] decimal NOT NULL,
[DollarsYTD] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[FTEsPriorYear] decimal NOT NULL,
[FTEsPriorYTD] decimal NOT NULL,
[FTEsYTD] decimal NOT NULL,
[Hours] decimal NOT NULL,
[HoursPriorYear] decimal NOT NULL,
[HoursPriorYTD] decimal NOT NULL,
[HoursYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[EmployeeID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [NCNU_BASE] ON [fw].[FactPayrollSampledPayPeriodDetailed] ([PayPeriodID]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledPayPeriodDetailed] ([IsDeleted]);
CREATE NONCLUSTERED INDEX [IDX_FactPayrollSampledPayPeriodDetailed] ON [fw].[FactPayrollSampledPayPeriodDetailed] ([DepartmentID], [JobCodeID], [PayCodeID], [PayCodeGroupID], [EmployeeID], [PayPeriodID], [TimeClassID]) INCLUDE ([Hours]);
GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__3E2E7D62] DEFAULT ((0)) FOR [DollarsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayrol__FTEs__3F22A19B] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__FTEsP__4016C5D4] DEFAULT ((0)) FOR [FTEsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__FTEsP__410AEA0D] DEFAULT ((0)) FOR [FTEsPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__FTEsY__41FF0E46] DEFAULT ((0)) FOR [FTEsYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__42F3327F] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__43E756B8] DEFAULT ((0)) FOR [HoursPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__44DB7AF1] DEFAULT ((0)) FOR [HoursPriorYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Hours__45CF9F2A] DEFAULT ((0)) FOR [HoursYTD]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__IsDel__46C3C363] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Trans__48AC0BD5] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Histo__47B7E79C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Emplo__5ACABC10] DEFAULT ((0)) FOR [EmployeeID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_JobCodeID] DEFAULT ((0)) FOR [JobCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_PayCodeID] DEFAULT ((0)) FOR [PayCodeID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_PayCodeGroupID] DEFAULT ((0)) FOR [PayCodeGroupID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF_FactPayrollSampledPayPeriodDetailed_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__3B5210B7] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__3C4634F0] DEFAULT ((0)) FOR [DollarsPriorYear]; GO
ALTER TABLE [fw].[FactPayrollSampledPayPeriodDetailed] ADD CONSTRAINT [DF__FactPayro__Dolla__3D3A5929] DEFAULT ((0)) FOR [DollarsPriorYTD]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactProviderSampledMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactProviderSampledMonthly] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[ProviderID] int NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[OBForecastDetailID] int NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Amount] decimal NOT NULL,
[AmountYTD] decimal NOT NULL,
[AmountPriorYear] decimal NOT NULL,
[AmountPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactProviderSampledMonthly] ON [fw].[FactProviderSampledMonthly] ([DepartmentID], [ProviderID], [OBForecastDetailID], [FiscalMonthID], [FiscalYearID], [TimeClassID]);
GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_ProviderID] DEFAULT ((0)) FOR [ProviderID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_OBForecastDetailID] DEFAULT ((0)) FOR [OBForecastDetailID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Amount] DEFAULT ((0)) FOR [Amount]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_AmountYTD] DEFAULT ((0)) FOR [AmountYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_AmountPriorYear] DEFAULT ((0)) FOR [AmountPriorYear]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_AmountPriorYTD] DEFAULT ((0)) FOR [AmountPriorYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly] ADD CONSTRAINT [DF_FactProviderSampledMonthly_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactProviderSampledMonthly_Pivoted ------------------
---------------------------------------------
CREATE TABLE [fw].[FactProviderSampledMonthly_Pivoted] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[ProviderID] int NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[OBForecastDetailID] int NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Volume] decimal NOT NULL,
[VolumeYTD] decimal NOT NULL,
[VolumePriorYear] decimal NOT NULL,
[VolumePriorYTD] decimal NOT NULL,
[Dollars] decimal NOT NULL,
[DollarsYTD] decimal NOT NULL,
[DollarsPriorYear] decimal NOT NULL,
[DollarsPriorYTD] decimal NOT NULL,
[Hours] decimal NOT NULL,
[HoursYTD] decimal NOT NULL,
[HoursPriorYear] decimal NOT NULL,
[HoursPriorYTD] decimal NOT NULL,
[FTEs] decimal NOT NULL,
[FTEsYTD] decimal NOT NULL,
[FTEsPriorYear] decimal NOT NULL,
[FTEsPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactProviderSampledMonthly_Pivoted] ON [fw].[FactProviderSampledMonthly_Pivoted] ([DepartmentID], [ProviderID], [OBForecastDetailID], [FiscalMonthID], [FiscalYearID], [TimeClassID]);
GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_ProviderID] DEFAULT ((0)) FOR [ProviderID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_OBForecastDetailID] DEFAULT ((0)) FOR [OBForecastDetailID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_Volume] DEFAULT ((0)) FOR [Volume]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_VolumeYTD] DEFAULT ((0)) FOR [VolumeYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_VolumePriorYear] DEFAULT ((0)) FOR [VolumePriorYear]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_VolumePriorYTD] DEFAULT ((0)) FOR [VolumePriorYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_Dollars] DEFAULT ((0)) FOR [Dollars]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_DollarsYTD] DEFAULT ((0)) FOR [DollarsYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_DollarsPriorYear] DEFAULT ((0)) FOR [DollarsPriorYear]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_DollarsPriorYTD] DEFAULT ((0)) FOR [DollarsPriorYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_Hours] DEFAULT ((0)) FOR [Hours]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_HoursYTD] DEFAULT ((0)) FOR [HoursYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_HoursPriorYear] DEFAULT ((0)) FOR [HoursPriorYear]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_HoursPriorYTD] DEFAULT ((0)) FOR [HoursPriorYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_FTEs] DEFAULT ((0)) FOR [FTEs]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_FTEsYTD] DEFAULT ((0)) FOR [FTEsYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_FTEsPriorYear] DEFAULT ((0)) FOR [FTEsPriorYear]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_FTEsPriorYTD] DEFAULT ((0)) FOR [FTEsPriorYTD]; GO
ALTER TABLE [fw].[FactProviderSampledMonthly_Pivoted] ADD CONSTRAINT [DF_FactProviderSampledMonthly_Pivoted_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactReportException ------------------
---------------------------------------------
CREATE TABLE [fw].[FactReportException] (
[RowID] int NOT NULL,
[ReportName] nvarchar(100) NOT NULL,
[ExceptionCount] int NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactReportException] ADD CONSTRAINT [DF_FactReportException_ReportName] DEFAULT ('') FOR [ReportName]; GO
ALTER TABLE [fw].[FactReportException] ADD CONSTRAINT [DF_FactReportException_ExceptionCount] DEFAULT ((0)) FOR [ExceptionCount]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactRoleAssignmentImport ------------------
---------------------------------------------
CREATE TABLE [fw].[FactRoleAssignmentImport] (
[RowID] int NOT NULL,
[PlanName] nvarchar(100) NOT NULL,
[RoleName] nvarchar(100) NOT NULL,
[UserNameCSV] nvarchar(max) NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactRoleAssignmentImport] ADD CONSTRAINT [DF_RoleAssignmentImport_PlanName] DEFAULT ('') FOR [PlanName]; GO
ALTER TABLE [fw].[FactRoleAssignmentImport] ADD CONSTRAINT [DF_RoleAssignmentImport_RoleName] DEFAULT ('') FOR [RoleName]; GO
ALTER TABLE [fw].[FactRoleAssignmentImport] ADD CONSTRAINT [DF_RoleAssignmentImport_UserNameCSV] DEFAULT ('') FOR [UserNameCSV]; GO
ALTER TABLE [fw].[FactRoleAssignmentImport] ADD CONSTRAINT [DF_RoleAssignmentImport_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactRoleAssignmentImport] ADD CONSTRAINT [DF_RoleAssignmentImport_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStagedDSModelingServiceLineRevenue ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStagedDSModelingServiceLineRevenue] (
[RowID] int NOT NULL,
[EntityID] int NOT NULL,
[FiscalYearID] int NOT NULL,
[FiscalMonthID] int NOT NULL,
[TimeClassID] int NOT NULL,
[PayorID] int NOT NULL,
[PayorGroupID] int NOT NULL,
[SPAccountRollupID] int NOT NULL,
[OBForecastDetailID] int NOT NULL,
[UnitTypeID] int NOT NULL,
[Amount] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[ServiceLineID] int NOT NULL,
[AgeCohortID] int NOT NULL,
[PatientClassID] int NOT NULL,
[MedicalSurgicalID] int NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Servi__0B0ECC0F] DEFAULT ((0)) FOR [ServiceLineID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__AgeCo__0C02F048] DEFAULT ((0)) FOR [AgeCohortID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Patie__0CF71481] DEFAULT ((0)) FOR [PatientClassID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Medic__0DEB38BA] DEFAULT ((0)) FOR [MedicalSurgicalID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Entit__49AB1D06] DEFAULT ((0)) FOR [EntityID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Fisca__4B936578] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Fisca__4C8789B1] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__TimeC__4D7BADEA] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Payor__4E6FD223] DEFAULT ((0)) FOR [PayorID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Payor__4F63F65C] DEFAULT ((0)) FOR [PayorGroupID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__SPAcc__50581A95] DEFAULT ((0)) FOR [SPAccountRollupID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__OBFor__514C3ECE] DEFAULT ((0)) FOR [OBForecastDetailID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__UnitT__52406307] DEFAULT ((0)) FOR [UnitTypeID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__IsDel__53348740] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Histo__5428AB79] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStagedDSModelingServiceLineRevenue] ADD CONSTRAINT [DF__FactStage__Trans__551CCFB2] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticDriverDepartmentSampledDaily ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] (
[RowID] bigint NOT NULL,
[DepartmentID] int NOT NULL,
[DriverDepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[DateID] int NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Units] decimal NOT NULL,
[TransactionID] int NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [CORE_DepartmentID_AccountID_inc] ON [fw].[FactStatisticDriverDepartmentSampledDaily] ([DepartmentID], [AccountID]) INCLUDE ([IsDeleted]);
CREATE NONCLUSTERED INDEX [CORE_DepartmentID_AccountID_IsDeleted_inc] ON [fw].[FactStatisticDriverDepartmentSampledDaily] ([DepartmentID], [AccountID], [IsDeleted]) INCLUDE ([PayPeriodID], [TimeClassID], [DateID], [Units]);
GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_DateID] DEFAULT ((0)) FOR [DateID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_DriverDepartmentID] DEFAULT ((0)) FOR [DriverDepartmentID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_Units] DEFAULT ((0)) FOR [Units]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledDaily] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledDaily_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticDriverDepartmentSampledMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[DriverDepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Amount] decimal NOT NULL,
[AmountYTD] decimal NOT NULL,
[AmountPriorYear] decimal NOT NULL,
[AmountPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_DriverDepartmentID] DEFAULT ((0)) FOR [DriverDepartmentID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_StatisticID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledMonthly_Amount] DEFAULT ((0)) FOR [Amount]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledMonthly_AmountYTD] DEFAULT ((0)) FOR [AmountYTD]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledMonthly_AmountPriorYear] DEFAULT ((0)) FOR [AmountPriorYear]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledMonthly_AmountPriorYTD] DEFAULT ((0)) FOR [AmountPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampled_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledMonthly] ADD CONSTRAINT [DF__FW_FactStatisticDriverDepartmentSampledMonthly_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticDriverDepartmentSampledPayPeriod ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[DriverDepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Units] decimal NOT NULL,
[UnitsYTD] decimal NOT NULL,
[UnitsPriorYear] decimal NOT NULL,
[UnitsPriorYTD] decimal NOT NULL,
[TransactionID] int NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledPayPeriod_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDeptSampledPP_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDeptSampledPP_DriverDepartmentID] DEFAULT ((0)) FOR [DriverDepartmentID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledPayPeriod_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDeptSampledPP_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDeptSampledPP_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDeptSampledPP_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledPayPeriod_Units] DEFAULT ((0)) FOR [Units]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledPayPeriod_UnitsYTD] DEFAULT ((0)) FOR [UnitsYTD]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledPayPeriod_UnitsPriorYear] DEFAULT ((0)) FOR [UnitsPriorYear]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticDriverDepartmentSampledPayPeriod_UnitsPriorYTD] DEFAULT ((0)) FOR [UnitsPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticDriverDepartmentSampledPayPeriod] ADD CONSTRAINT [DF__FW_FactStatisticDriverDepartmentSampledPayPeriod_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticPrimarySampledMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticPrimarySampledMonthly] (
[RowID] int NOT NULL,
[AccountID] int NOT NULL,
[DepartmentID] int NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Amount] decimal NOT NULL,
[AmountPriorYear] decimal NOT NULL,
[AmountPriorYTD] decimal NOT NULL,
[AmountYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [fw].[FactStatisticPrimarySampledMonthly] ([AccountID], [DepartmentID], [FiscalMonthID], [FiscalYearID], [TimeClassID], [IsDeleted]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactStatisticPrimarySampledMonthly] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticPrimarySampledMonthly_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticPrimarySampledMonthly_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticPrimarySampledMonthly_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Histo__7B1462B5] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Fisca__74676526] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Fisca__755B895F] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__764FAD98] DEFAULT ((0)) FOR [Amount]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__7743D1D1] DEFAULT ((0)) FOR [AmountPriorYear]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__7837F60A] DEFAULT ((0)) FOR [AmountPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__792C1A43] DEFAULT ((0)) FOR [AmountYTD]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__IsDel__7A203E7C] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Trans__7C0886EE] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactStatisticPrimarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticPrimarySampledMonthly_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticSampledDaily ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticSampledDaily] (
[RowID] bigint NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[DateID] int NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Units] decimal NOT NULL,
[TransactionID] int NULL,
[BigRowID] bigint NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactStatisticSampledDaily] ON [fw].[FactStatisticSampledDaily] ([AccountID], [DepartmentID], [PayPeriodID], [DateID], [TimeClassID]);
GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [FK_FactStatisticSampledDaily_DimAccount] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [FK_FactStatisticSampledDaily_DimDate] FOREIGN KEY ([DateID]) REFERENCES [fw].[DimDate] ([DateID]); GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [FK_FactStatisticSampledDaily_DimDepartment] FOREIGN KEY ([DepartmentID]) REFERENCES [fw].[DimDepartment] ([DepartmentID]); GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [FK_FactStatisticSampledDaily_DimPayPeriod] FOREIGN KEY ([PayPeriodID]) REFERENCES [fw].[DimPayPeriod] ([PayPeriodID]); GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [FK_FactStatisticSampledDaily_DimTimeClass] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_DateID] DEFAULT ((0)) FOR [DateID]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_Units] DEFAULT ((0)) FOR [Units]; GO
ALTER TABLE [fw].[FactStatisticSampledDaily] ADD CONSTRAINT [DF_FactStatisticSampledDaily_TransactionID] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticSampledMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticSampledMonthly] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Amount] decimal NOT NULL,
[AmountYTD] decimal NOT NULL,
[AmountPriorYear] decimal NOT NULL,
[AmountPriorYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactStatisticSampledMonthly] ON [fw].[FactStatisticSampledMonthly] ([AccountID], [DepartmentID], [FiscalYearID], [FiscalMonthID], [TimeClassID]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactStatisticSampledMonthly] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF__FW_FactStatisticSampledMonthly_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampledMonthly_Amount] DEFAULT ((0)) FOR [Amount]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampledMonthly_AmountYTD] DEFAULT ((0)) FOR [AmountYTD]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampledMonthly_AmountPriorYear] DEFAULT ((0)) FOR [AmountPriorYear]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampledMonthly_AmountPriorYTD] DEFAULT ((0)) FOR [AmountPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampledMonthly_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_StatisticID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticSampledMonthly] ADD CONSTRAINT [DF_FactStatisticSampled_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticSampledPayPeriod ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticSampledPayPeriod] (
[RowID] int NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[Units] decimal NOT NULL,
[UnitsYTD] decimal NOT NULL,
[UnitsPriorYear] decimal NOT NULL,
[UnitsPriorYTD] decimal NOT NULL,
[TransactionID] int NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE CLUSTERED INDEX [IX_FactStatisticSampledPayPeriod] ON [fw].[FactStatisticSampledPayPeriod] ([AccountID], [DepartmentID], [PayPeriodID], [TimeClassID]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactStatisticSampledPayPeriod] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [FK_FactStatisticSampledPayPeriod_DimAccount] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [FK_FactStatisticSampledPayPeriod_FactStatisticSampledPayPeriod] FOREIGN KEY ([RowID]) REFERENCES [fw].[FactStatisticSampledPayPeriod] ([RowID]); GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [FK_FactStatisticSampledPP_DimPayPeriod] FOREIGN KEY ([PayPeriodID]) REFERENCES [fw].[DimPayPeriod] ([PayPeriodID]); GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [FK_FactStatisticSampledPP_DimTimeClass] FOREIGN KEY ([TimeClassID]) REFERENCES [fw].[DimTimeClass] ([TimeClassID]); GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [FK_FactStatisticSampledPP_FactStatisticSampled] FOREIGN KEY ([DepartmentID]) REFERENCES [fw].[DimDepartment] ([DepartmentID]); GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF__FW_FactStatisticSampledPayPeriod_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPayPeriod_Units] DEFAULT ((0)) FOR [Units]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPayPeriod_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPayPeriod_UnitsYTD] DEFAULT ((0)) FOR [UnitsYTD]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPP_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPayPeriod_UnitsPriorYear] DEFAULT ((0)) FOR [UnitsPriorYear]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPP_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPayPeriod_UnitsPriorYTD] DEFAULT ((0)) FOR [UnitsPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPP_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPayPeriod_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPP_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticSampledPayPeriod] ADD CONSTRAINT [DF_FactStatisticSampledPP_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticSecondarySampledMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticSecondarySampledMonthly] (
[RowID] int NOT NULL,
[AccountID] int NOT NULL,
[DepartmentID] int NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Amount] decimal NOT NULL,
[AmountPriorYear] decimal NOT NULL,
[AmountPriorYTD] decimal NOT NULL,
[AmountYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE UNIQUE NONCLUSTERED INDEX [NCU_Score] ON [fw].[FactStatisticSecondarySampledMonthly] ([AccountID], [DepartmentID], [FiscalMonthID], [FiscalYearID], [TimeClassID], [IsDeleted]);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactStatisticSecondarySampledMonthly] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Fisca__02B5847D] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticSecondarySampledMonthly_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Fisca__03A9A8B6] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticSecondarySampledMonthly_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__049DCCEF] DEFAULT ((0)) FOR [Amount]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticSecondarySampledMonthly_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__0591F128] DEFAULT ((0)) FOR [AmountPriorYear]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__06861561] DEFAULT ((0)) FOR [AmountPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Amoun__077A399A] DEFAULT ((0)) FOR [AmountYTD]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__IsDel__086E5DD3] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Trans__0A56A645] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF_FactStatisticSecondarySampledMonthly_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledMonthly] ADD CONSTRAINT [DF__FactStati__Histo__0962820C] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactStatisticSecondarySampledbyPayPeriod ------------------
---------------------------------------------
CREATE TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] (
[RowID] int NOT NULL,
[AccountID] int NOT NULL,
[DepartmentID] int NOT NULL,
[PayPeriodID] smallint NOT NULL,
[TimeClassID] tinyint NOT NULL,
[Units] decimal NOT NULL,
[UnitsPriorYear] decimal NOT NULL,
[UnitsPriorYTD] decimal NOT NULL,
[UnitsYTD] decimal NOT NULL,
[IsDeleted] bit NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[TransactionID] int NOT NULL,
[IsSystemGenerated] bit NOT NULL,
PRIMARY KEY ([RowID])
);
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactStatisticSecondarySampledbyPayPeriod] ([IsDeleted]);
GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF_FactStatisticSecondarySampledbyPayPeriod_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF_FactStatisticSecondarySampledbyPayPeriod_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF_FactStatisticSecondarySampledbyPayPeriod_TimeClassID] DEFAULT ((0)) FOR [TimeClassID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF_FactStatisticSecondarySampledbyPayPeriod_PayPeriodID] DEFAULT ((0)) FOR [PayPeriodID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF_FactStatisticSecondarySampledbyPayPeriod_IsSystemGenerated] DEFAULT ((0)) FOR [IsSystemGenerated]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__Units__541DBE81] DEFAULT ((0)) FOR [Units]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__Units__5511E2BA] DEFAULT ((0)) FOR [UnitsPriorYear]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__Units__560606F3] DEFAULT ((0)) FOR [UnitsPriorYTD]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__Units__56FA2B2C] DEFAULT ((0)) FOR [UnitsYTD]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__Histo__58E2739E] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__IsDel__57EE4F65] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactStatisticSecondarySampledbyPayPeriod] ADD CONSTRAINT [DF__FactStati__Trans__59D697D7] DEFAULT ((0)) FOR [TransactionID]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactSystemGeneratedStatistics ------------------
---------------------------------------------
CREATE TABLE [fw].[FactSystemGeneratedStatistics] (
[RowID] bigint NOT NULL,
[DateID] int NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[Value] decimal NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactSystemGeneratedStatistics] ADD CONSTRAINT [DF_FactSystemGeneratedStatistics_DateID] DEFAULT ((0)) FOR [DateID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatistics] ADD CONSTRAINT [DF_FactSystemGeneratedStatistics_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatistics] ADD CONSTRAINT [DF_FactSystemGeneratedStatistics_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatistics] ADD CONSTRAINT [DF_FactSystemGeneratedStatistics_Value] DEFAULT ((0)) FOR [Value]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactSystemGeneratedStatisticsMonthly ------------------
---------------------------------------------
CREATE TABLE [fw].[FactSystemGeneratedStatisticsMonthly] (
[RowID] bigint NOT NULL,
[FiscalYearID] smallint NOT NULL,
[FiscalMonthID] tinyint NOT NULL,
[DepartmentID] int NOT NULL,
[AccountID] int NOT NULL,
[Value] decimal NOT NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactSystemGeneratedStatisticsMonthly] ADD CONSTRAINT [DF_FactSystemGeneratedStatisticsMonthly_FiscalYearID] DEFAULT ((0)) FOR [FiscalYearID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatisticsMonthly] ADD CONSTRAINT [DF_FactSystemGeneratedStatisticsMonthly_FiscalMonthID] DEFAULT ((0)) FOR [FiscalMonthID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatisticsMonthly] ADD CONSTRAINT [DF_FactSystemGeneratedStatisticsMonthly_DepartmentID] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatisticsMonthly] ADD CONSTRAINT [DF_FactSystemGeneratedStatisticsMonthly_AccountID] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[FactSystemGeneratedStatisticsMonthly] ADD CONSTRAINT [DF_FactSystemGeneratedStatisticsMonthly_Value] DEFAULT ((0)) FOR [Value]; GO
---------------------------------------------
---------------------------------------------
-- fw.FactUserDeptXWalk ------------------
---------------------------------------------
CREATE TABLE [fw].[FactUserDeptXWalk] (
[MemberGUID] uniqueidentifier NOT NULL,
[DepartmentID] int NOT NULL,
[Value] int NOT NULL,
[RowID] int NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
[Version] timestamp NOT NULL,
[IsDeleted] bit NOT NULL,
[UserGUID] uniqueidentifier NOT NULL,
[TransactionID] int NULL,
PRIMARY KEY ([RowID])
);
GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF__FW_FactUserDeptXWalk_MemberGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [MemberGUID]; GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF__FW_FactUserDeptXWalk_Department] DEFAULT ((0)) FOR [DepartmentID]; GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF_FW_FactUserDeptXWalk_Value] DEFAULT ((1)) FOR [Value]; GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF_FW_FactUserDeptXWalk_HistoryItemGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF_FW_FactUserDeptXWalk_IsDeleted] DEFAULT ((0)) FOR [IsDeleted]; GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF__FW_FactUserDeptXWalk_TransactionID ] DEFAULT ((0)) FOR [TransactionID]; GO
ALTER TABLE [fw].[FactUserDeptXWalk] ADD CONSTRAINT [DF_FW_FactUserDeptXWalk_UserGUID] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [UserGUID]; GO
---------------------------------------------
---------------------------------------------
-- fw.MRPRMetricMapping ------------------
---------------------------------------------
CREATE TABLE [fw].[MRPRMetricMapping] (
[MappingID] int NOT NULL,
[PRMetricID] int NOT NULL,
[MRMetricGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([MappingID])
);
CREATE UNIQUE NONCLUSTERED INDEX [UK_MRPRMetricMapping] ON [fw].[MRPRMetricMapping] ([PRMetricID], [MRMetricGUID]);
GO
ALTER TABLE [fw].[MRPRMetricMapping] ADD CONSTRAINT [FK_MRPRMetricMapping_MetricGUID] FOREIGN KEY ([MRMetricGUID]) REFERENCES [dbo].[CMMetric] ([MetricGUID]); GO
ALTER TABLE [fw].[MRPRMetricMapping] ADD CONSTRAINT [FK_MRPRMetricMapping_PRMetricID] FOREIGN KEY ([PRMetricID]) REFERENCES [pi].[DimMetric] ([MetricID]); GO
---------------------------------------------
---------------------------------------------
-- fw.MrPrFeaturedMetric ------------------
---------------------------------------------
CREATE TABLE [fw].[MrPrFeaturedMetric] (
[MrPrFeaturedMetricId] int NOT NULL,
[IsPr] bit NOT NULL,
[DisplayOrder] int NOT NULL,
[MetricGUID] uniqueidentifier NOT NULL,
[RollupLevelID] tinyint NOT NULL,
PRIMARY KEY ([MrPrFeaturedMetricId])
);
GO
ALTER TABLE [fw].[MrPrFeaturedMetric] ADD CONSTRAINT [DF__MrPrFeatu__Rollu__2001F360] DEFAULT ((1)) FOR [RollupLevelID]; GO
---------------------------------------------
---------------------------------------------
-- fw.PrimaryStatisticsRollupsConfiguration ------------------
---------------------------------------------
CREATE TABLE [fw].[PrimaryStatisticsRollupsConfiguration] (
[MemberGUID] uniqueidentifier NOT NULL,
[RollupLevel] varchar(250) NOT NULL,
[RollupMemberID] int NOT NULL,
[AccountID] int NOT NULL,
[Revenue] bit NOT NULL,
[Staffing] bit NOT NULL,
[NonStaffing] bit NOT NULL,
PRIMARY KEY ([MemberGUID])
);
CREATE UNIQUE NONCLUSTERED INDEX [AK_PrimaryStatisticsRollupsConfiguration] ON [fw].[PrimaryStatisticsRollupsConfiguration] ([RollupLevel], [RollupMemberID], [AccountID]);
GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [FK_PrimaryStatisticsRollupsConfiguration_Account] FOREIGN KEY ([AccountID]) REFERENCES [fw].[DimAccount] ([AccountID]); GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [CK_PrimaryStatisticsRollupsConfiguration_RollupLevel] CHECK ([RollupLevel]='DepartmentRollup6' OR [RollupLevel]='DepartmentRollup5' OR [RollupLevel]='DepartmentRollup4' OR [RollupLevel]='DepartmentRollup3' OR [RollupLevel]='DepartmentRollup2' OR [RollupLevel]='DepartmentRollup1' OR [RollupLevel]='Entity' OR [RollupLevel]='System'); GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__Membe__3ACCF6A6] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__Rollu__3BC11ADF] DEFAULT ('') FOR [RollupLevel]; GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__Rollu__3CB53F18] DEFAULT ((0)) FOR [RollupMemberID]; GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__Accou__3DA96351] DEFAULT ((0)) FOR [AccountID]; GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__Reven__3E9D878A] DEFAULT ((0)) FOR [Revenue]; GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__Staff__3F91ABC3] DEFAULT ((0)) FOR [Staffing]; GO
ALTER TABLE [fw].[PrimaryStatisticsRollupsConfiguration] ADD CONSTRAINT [DF__PrimarySt__NonSt__4085CFFC] DEFAULT ((0)) FOR [NonStaffing]; GO
---------------------------------------------
---------------------------------------------
-- fw.SPHACTROLLUP_StandardCodesBackup ------------------
---------------------------------------------
CREATE TABLE [fw].[SPHACTROLLUP_StandardCodesBackup] (
[Name] nvarchar(max) NOT NULL,
[SPHAccountRollupCode] nvarchar(max) NOT NULL
);
GO
ALTER TABLE [fw].[SPHACTROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHACTROLL__Name__2FD86876] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[SPHACTROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHACTROL__SPHAc__30CC8CAF] DEFAULT ('') FOR [SPHAccountRollupCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.SPHDEPARTMENTROLLUP_StandardCodesBackup ------------------
---------------------------------------------
CREATE TABLE [fw].[SPHDEPARTMENTROLLUP_StandardCodesBackup] (
[Name] nvarchar(max) NOT NULL,
[SPHDepartmentRollupCode] nvarchar(max) NOT NULL
);
GO
ALTER TABLE [fw].[SPHDEPARTMENTROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHDEPARTM__Name__39384F0B] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[SPHDEPARTMENTROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHDEPART__SPHDe__3A2C7344] DEFAULT ('') FOR [SPHDepartmentRollupCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.SPHDEPARTMENTTYPE_StandardCodesBackup ------------------
---------------------------------------------
CREATE TABLE [fw].[SPHDEPARTMENTTYPE_StandardCodesBackup] (
[Name] nvarchar(max) NOT NULL,
[SPHDepartmentTypeCode] nvarchar(max) NOT NULL
);
GO
ALTER TABLE [fw].[SPHDEPARTMENTTYPE_StandardCodesBackup] ADD CONSTRAINT [DF__SPHDEPARTM__Name__4A6CFCAE] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[SPHDEPARTMENTTYPE_StandardCodesBackup] ADD CONSTRAINT [DF__SPHDEPART__SPHDe__4B6120E7] DEFAULT ('') FOR [SPHDepartmentTypeCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.SPHJOBCODEROLLUP_StandardCodesBackup ------------------
---------------------------------------------
CREATE TABLE [fw].[SPHJOBCODEROLLUP_StandardCodesBackup] (
[Name] nvarchar(max) NOT NULL,
[SPHJobCodeRollupCode] nvarchar(max) NOT NULL
);
GO
ALTER TABLE [fw].[SPHJOBCODEROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHJOBCODE__Name__337F75B5] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[SPHJOBCODEROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHJOBCOD__SPHJo__347399EE] DEFAULT ('') FOR [SPHJobCodeRollupCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.SPHPAYCODEROLLUP_StandardCodesBackup ------------------
---------------------------------------------
CREATE TABLE [fw].[SPHPAYCODEROLLUP_StandardCodesBackup] (
[Name] nvarchar(max) NOT NULL,
[SPHPayCodeRollupCode] nvarchar(max) NOT NULL
);
GO
ALTER TABLE [fw].[SPHPAYCODEROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHPAYCODE__Name__70F363A0] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[SPHPAYCODEROLLUP_StandardCodesBackup] ADD CONSTRAINT [DF__SPHPAYCOD__SPHPa__71E787D9] DEFAULT ('') FOR [SPHPayCodeRollupCode]; GO
---------------------------------------------
---------------------------------------------
-- fw.SectionSecurityImport ------------------
---------------------------------------------
CREATE TABLE [fw].[SectionSecurityImport] (
[ID] int NOT NULL,
[GroupName] varchar(255) NULL,
[BasicGUID] varchar(255) NULL,
[AdvancedGUID] varchar(255) NULL
);
GO
---------------------------------------------
---------------------------------------------
-- fw.SystemSetting ------------------
---------------------------------------------
CREATE TABLE [fw].[SystemSetting] (
[SystemSettingID] int NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Description] nvarchar(400) NOT NULL,
[Value] nvarchar(max) NOT NULL,
[IsEditable] bit NOT NULL,
[ColumnType] int NOT NULL,
[DefaultValue] nvarchar(100) NOT NULL,
[IsEncrypted] bit NOT NULL,
[SystemSettingCategoryID] int NOT NULL,
PRIMARY KEY ([SystemSettingID])
);
CREATE UNIQUE NONCLUSTERED INDEX [AK_Name] ON [fw].[SystemSetting] ([Name]);
GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF_SYSTEMSETTING_VALUE] DEFAULT ('') FOR [Value]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSett__Name__6D80CB2D] DEFAULT ('') FOR [Name]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Descr__6E74EF66] DEFAULT ('') FOR [Description]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__IsEdi__705D37D8] DEFAULT ((0)) FOR [IsEditable]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Colum__71515C11] DEFAULT ((0)) FOR [ColumnType]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Defau__7245804A] DEFAULT ('') FOR [DefaultValue]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__IsEnc__7339A483] DEFAULT ('0') FOR [IsEncrypted]; GO
ALTER TABLE [fw].[SystemSetting] ADD CONSTRAINT [DF__SystemSet__Syste__7EAB572F] DEFAULT ((0)) FOR [SystemSettingCategoryID]; GO
---------------------------------------------
---------------------------------------------
-- fw.SystemSettingCategory ------------------
---------------------------------------------
CREATE TABLE [fw].[SystemSettingCategory] (
[SystemSettingCategoryID] int NOT NULL,
[Name] nvarchar(100) NOT NULL,
PRIMARY KEY ([SystemSettingCategoryID])
);
GO
ALTER TABLE [fw].[SystemSettingCategory] ADD CONSTRAINT [DF__SystemSett__Name__7DB732F6] DEFAULT ('') FOR [Name]; GO
---------------------------------------------
---------------------------------------------
-- fw.viewDimAccount_custom ------------------
---------------------------------------------
CREATE TABLE [fw].[viewDimAccount_custom] (
[MemberGUID] uniqueidentifier NOT NULL,
[HistoryItemGUID] uniqueidentifier NOT NULL,
PRIMARY KEY ([MemberGUID])
);
GO
ALTER TABLE [fw].[viewDimAccount_custom] ADD CONSTRAINT [DF__viewDimAc__Membe__2A065A39] DEFAULT (newid()) FOR [MemberGUID]; GO
ALTER TABLE [fw].[viewDimAccount_custom] ADD CONSTRAINT [DF__viewDimAc__Histo__2AFA7E72] DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [HistoryItemGUID]; GO
---------------------------------------------
---------------------------------------------
-- VIEWS
---------------------------------------------
-- fw.BudgetReallocationWithDefinedType
/************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-01-17 IP B-16703 Omit archived budget adjustments
*************************************************************/
CREATE view [fw].[BudgetReallocationWithDefinedType]
as
SELECT distinct
b.BudgetReallocationGUID,
Date,
SourceDepartmentID,SourceAccountID,TargetDepartmentID,TargetAccountID,UnitTypeID,FiscalMonthID,FiscalYearID,SourceJobCodeID,TargetJobCodeID,DataType,
ShouldUpply = case when Change = 0 then 0 else 1 end,
BudgetReallocationType = case
WHEN b.SourceDepartmentID <> 0
and b.SourceAccountID <> 0
and b.TargetDepartmentID <> 0
and b.TargetAccountID <> 0
and b.GroupGUID = '00000000-0000-0000-0000-000000000000'
THEN 'ReallocateSingle'
WHEN b.SourceDepartmentID <> 0
and b.SourceAccountID <> 0
and b.TargetDepartmentID <> 0
and b.TargetAccountID <> 0
and b.GroupGUID <> '00000000-0000-0000-0000-000000000000'
THEN 'ReallocateMulti'
WHEN b.SourceDepartmentID <> 0
and b.SourceAccountID <> 0
and b.TargetDepartmentID = 0
and b.TargetAccountID = 0
and b.GroupGUID = '00000000-0000-0000-0000-000000000000'
THEN 'AdjustMontly'
WHEN b.SourceDepartmentID <> 0
and b.SourceAccountID <> 0
and b.TargetDepartmentID = 0
and b.TargetAccountID = 0
and b.GroupGUID <> '00000000-0000-0000-0000-000000000000'
THEN 'ManualFile'
END
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE Archived = 0
GO
---------------------------------------------
-- fw.viewABBFlexingReconciliation
CREATE VIEW [fw].[viewABBFlexingReconciliation]
AS
SELECT
CostingConfigGUID,
FiscalYearID,
FiscalMonthID,
EntityID,
DepartmentID,
ChargeCodeID,
AccountID,
JobCodeID,
PayCodeID,
CostComponentID,
ActualChargeUnits,
ActualChargeUnitsYTD,
ActualVariableDirectCost,
ActualVariableDirectCostYTD,
ActualFixedDirectCost,
ActualFixedDirectCostYTD,
BudgetChargeUnits,
BudgetChargeUnitsYTD,
BudgetVariableDirectCost,
BudgetVariableDirectCostYTD,
BudgetFixedDirectCost,
BudgetFixedDirectCostYTD,
FlexedVariableDirectCost,
FlexedVariableDirectCostYTD
FROM
[fw].[ABBFlexingReconciliation]
GO
---------------------------------------------
-- fw.viewDepartmentChargeCodeStatisticMapping
CREATE VIEW [fw].[viewDepartmentChargeCodeStatisticMapping]
AS
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-05-04 IP B-19364 MRPR - Set Global Weights for Charge Codes - System Center Page
** 2 2018-06-07 IP TK-58757 Refactored view
************************************************************
*/
SELECT *
FROM (
SELECT M.RowID, M.FiscalYearID, D.DepartmentID, M.ChargeCodeID, M.PatientTypeRollupID, M.AccountID, M.Weight, M.IsReviewed, ROW_NUMBER() OVER (
PARTITION BY M.FiscalYearID, D.DepartmentID, M.ChargeCodeID, M.PatientTypeRollupID, M.AccountID ORDER BY L.SortOrder DESC
) AS PriorityOrder
FROM (
SELECT M.RowID, M.FiscalYearID, M.DepartmentRollupLevelMemberID, M.DepartmentRollupLevelMemberColumnName, M.ChargeCodeID, M.PatientTypeRollupID, M.AccountID, M.Weight, M.IsReviewed
FROM fw.DepartmentChargeCodeStatisticMapping M
WHERE M.DepartmentRollupLevelMemberID != 0
) M
INNER JOIN (
SELECT L.ColumnName, L.SortOrder
FROM viewScoreHierarchyAttributeLinkCore30 L
JOIN ScoreDimension S
ON S.DefaultHierarchyGUID = L.HierarchyGUID
WHERE S.GlobalID = 'Department'
) L
ON L.ColumnName = M.DepartmentRollupLevelMemberColumnName
JOIN (
SELECT DepartmentID, DepartmentID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, DepartmentRollup1ID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentRollup1ID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, DepartmentRollup2ID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentRollup2ID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, DepartmentRollup3ID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentRollup3ID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, DepartmentRollup4ID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentRollup4ID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, DepartmentRollup5ID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentRollup5ID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, DepartmentRollup6ID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'DepartmentRollup6ID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, EntityID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'EntityID'
FROM fw.ViewDimDepartment_Real
UNION ALL
SELECT DepartmentID, SystemID AS DepartmentRollupLevelMemberID, DepartmentRollupLevelMemberColumnName = 'SystemID'
FROM fw.ViewDimDepartment_Real
) D
ON D.DepartmentRollupLevelMemberID = M.DepartmentRollupLevelMemberID AND M.DepartmentRollupLevelMemberColumnName = D.DepartmentRollupLevelMemberColumnName
) SUBSELECT
WHERE PriorityOrder = 1
GO
---------------------------------------------
-- fw.viewDimAccount
CREATE VIEW [fw].[viewDimAccount]
AS
SELECT
[AccountID],
COALESCE([Name],'') as [Name],
[AccountCode],
[Description],
[GLRollup],
[IsInverted],
[PatientClassID],
[CAPIsDefined],
[DSSIsDefined],
[DSSCostComponent],
[DSSStatisticDriver],
[DSSAccountRollup1ID],
[DSSAccountRollup2ID],
[DSSAccountRollup3ID],
[MRIsDefined],
[FlexStatistic],
[FlexValue],
[FlexBucketGUID],
[OBIsDefined],
[IsStat],
[IsGlobal],
[IsExpense],
[Variability],
[OBDollarsFinancialReportingID],
COALESCE([OBDollarsFinancialReportingCategory],'') as [OBDollarsFinancialReportingCategory],
[OBUnitsFinancialReportingID],
COALESCE([OBUnitsFinancialReportingCategory],'') as [OBUnitsFinancialReportingCategory],
[OBAccountPHID],
[OBStatModelSectionID],
[OBStatUnitTypeID],
[OBStaffing],
[OBPayorID],
[OBPayorGroupID],
[SPIsDefined],
[PatientTypeRollupID],
[SPAccountRollupID],
COALESCE([SPAccountRollupCategory],'') as [SPAccountRollupCategory],
[SPStatAccountRollup],
[SPPayorGroupID],
[SPPhysicianGroupID],
[SPJobCodeGroupID],
[SPCapitalRollupID],
[SPDebtIssuanceID],
[SPIsPhysicianOverride],
[PatientTypeID],
[Inversion],
COALESCE([PatientClass],'') as [PatientClass],
COALESCE([DSSAccountRollup1Name],'') as [DSSAccountRollup1Name],
COALESCE([DSSAccountRollup1Category],'') as [DSSAccountRollup1Category],
COALESCE([DSSAccountRollup2Name],'') as [DSSAccountRollup2Name],
COALESCE([DSSAccountRollup3Name],'') as [DSSAccountRollup3Name],
COALESCE([OBDollarsFinancialReporting],'') as [OBDollarsFinancialReporting],
[OBDollarsFinancialReportingSortOrder],
COALESCE([OBDollarsFinancialReportingLineName],'') as [OBDollarsFinancialReportingLineName],
COALESCE([OBUnitsFinancialReporting],'') as [OBUnitsFinancialReporting],
[OBUnitsFinancialReportingSortOrder],
COALESCE([OBUnitsFinancialReportingLineName],'') as [OBUnitsFinancialReportingLineName],
COALESCE([OBModelSectionName],'') as [OBModelSectionName],
COALESCE([OBStatModelSectionName],'') as [OBStatModelSectionName],
COALESCE([OBUnitType],'') as [OBUnitType],
COALESCE([OBPayor],'') as [OBPayor],
COALESCE([OBPayorGroup],'') as [OBPayorGroup],
COALESCE([PatientTypeRollupName],'') as [PatientTypeRollupName],
COALESCE([SPAccountRollupName],'') as [SPAccountRollupName],
COALESCE([SPStatAccountRollupName],'') as [SPStatAccountRollupName],
COALESCE([SPPayorGroupName],'') as [SPPayorGroupName],
[SPHAccountRollupID],
COALESCE([SPHAccountRollupName],'') as [SPHAccountRollupName],
[SPHAccountRollupConfidenceScore],
COALESCE([SPPhysicianGroupName],'') as [SPPhysicianGroupName],
COALESCE([SPJobCodeGroupName],'') as [SPJobCodeGroupName],
COALESCE([SPCapitalRollupName],'') as [SPCapitalRollupName],
COALESCE([SPDebtIssuanceName],'') as [SPDebtIssuanceName],
[MemberGUID],
[HistoryItemGUID],
[DSSAccountRollup4ID],
[DSSAccountRollup5ID],
[DSSAccountRollup6ID],
[DSSAccountRollup7ID],
COALESCE([DSSAccountRollup4],'') as [DSSAccountRollup4],
COALESCE([DSSAccountRollup4Name],'') as [DSSAccountRollup4Name],
COALESCE([DSSAccountRollup2Category],'') as [DSSAccountRollup2Category],
COALESCE([DSSAccountRollup5Name],'') as [DSSAccountRollup5Name],
COALESCE([DSSAccountRollup6Name],'') as [DSSAccountRollup6Name],
COALESCE([DSSAccountRollup7Name],'') as [DSSAccountRollup7Name],
COALESCE([DSSAccountRollup3Category],'') as [DSSAccountRollup3Category],
COALESCE([DSSAccountRollup4Category],'') as [DSSAccountRollup4Category],
[FWIsDefined],
[AccountCodeRaw],
[GMAccountRollup1],
[GMAccountRollup2],
[GMAccountRollup3],
[GMAccountRollup4],
[GMAccountRollup5],
[GMAccountRollup6],
[GMAccountRollup7],
[SPHVariability],
COALESCE([SPHCostComponent],'') as [SPHCostComponent],
COALESCE([SPHCostComponentRollup],'') as [SPHCostComponentRollup],
[IsSPHCostModel],
COALESCE([SPHLineItem],'') as [SPHLineItem],
COALESCE([SPHStatement],'') as [SPHStatement],
COALESCE([SPHCategory],'') as [SPHCategory],
[SPHAccountRollupIsValidated],
COALESCE([SPHSection],'') as [SPHSection],
[IsCBP] ,[Version]
FROM [fw].[DimAccount] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimAccount_source
CREATE VIEW [fw].[viewDimAccount_source]
AS
SELECT
grp5D92C559C8004C18BF821C58E1977A6C.[AccountID]
,grp5D92C559C8004C18BF821C58E1977A6C.[Name]
,grp5D92C559C8004C18BF821C58E1977A6C.[PatientTypeID]
,grp5D92C559C8004C18BF821C58E1977A6C.[Inversion]
,grp5D92C559C8004C18BF821C58E1977A6C.[SPHAccountRollupID]
,grp5D92C559C8004C18BF821C58E1977A6C.[MemberGUID]
,grp5D92C559C8004C18BF821C58E1977A6C.[HistoryItemGUID]
,ISNULL([PATIENTCLASS].[Name], 'Not Specified') as [PatientClass]
,ISNULL([DSSACTROL1].[Name], 'Not Specified') as [DSSAccountRollup1Name]
,ISNULL([DSSACTROL1].[Category], 'Not Specified') as [DSSAccountRollup1Category]
,ISNULL([DSSACTROL2].[Name], 'Not Specified') as [DSSAccountRollup2Name]
,ISNULL([DSSACTROL2].[Category], 'Not Specified') as [DSSAccountRollup2Category]
,ISNULL([DSSACTROL3].[Name], 'Not Specified') as [DSSAccountRollup3Name]
,ISNULL([DSSACTROL3].[Category], 'Not Specified') as [DSSAccountRollup3Category]
,ISNULL([OBFINANCIALREP].[IsExpense], 0) as [IsExpense]
,ISNULL([OBFINANCIALREP].[Section], 'Not Specified') as [OBDollarsFinancialReportingCategory]
,ISNULL([OBFINANCIALREP].[Name], 'Not Specified') as [OBDollarsFinancialReporting]
,ISNULL([OBFINANCIALREP].[SortOrder], 0) as [OBDollarsFinancialReportingSortOrder]
,ISNULL([OBFINANCIALREP].[LineName], 'Not Specified') as [OBDollarsFinancialReportingLineName]
,ISNULL([OBFINANCIALREP_1].[Section], 'Not Specified') as [OBUnitsFinancialReportingCategory]
,ISNULL([OBFINANCIALREP_1].[Name], 'Not Specified') as [OBUnitsFinancialReporting]
,ISNULL([OBFINANCIALREP_1].[SortOrder], 0) as [OBUnitsFinancialReportingSortOrder]
,ISNULL([OBFINANCIALREP_1].[LineName], 'Not Specified') as [OBUnitsFinancialReportingLineName]
,ISNULL([ACCOUNTPH].[Name], 'Not Specified') as [OBModelSectionName]
,ISNULL([ACCOUNTPH_1].[Name], 'Not Specified') as [OBStatModelSectionName]
,ISNULL([UNITTYPE].[Name], 'Not Specified') as [OBUnitType]
,ISNULL([PAYOR].[Name], 'Not Specified') as [OBPayor]
,ISNULL([PayorGroup].[Name], 'Not Specified') as [OBPayorGroup]
,ISNULL([PayorGroup_1].[Name], 'Not Specified') as [SPPayorGroupName]
,ISNULL([PatientTyRo].[Name], 'Not Specified') as [PatientTypeRollupName]
,ISNULL([SPAccountRollup].[Category], 'Not Specified') as [SPAccountRollupCategory]
,ISNULL([SPAccountRollup].[Name], 'Not Specified') as [SPAccountRollupName]
,ISNULL([SPAccountRollup_1].[Name], 'Not Specified') as [SPStatAccountRollupName]
,ISNULL([PhyGrp].[Name], 'Not Specified') as [SPPhysicianGroupName]
,ISNULL([JobCodeGrp].[Name], 'Not Specified') as [SPJobCodeGroupName]
,ISNULL([SPCAPITALROLLUP].[Name], 'Not Specified') as [SPCapitalRollupName]
,ISNULL([SPDEBTISSUANCE].[Name], 'Not Specified') as [SPDebtIssuanceName]
,ISNULL([SPHACTROLLUP].[Name], 'Not Specified') as [SPHAccountRollupName]
,ISNULL([SPHACTROLLUP].[SPHCostComponent], 'Not Specified') as [SPHCostComponent]
,ISNULL([SPHACTROLLUP].[SPHCostComponentRollup], 'Not Specified') as [SPHCostComponentRollup]
,ISNULL([SPHACTROLLUP].[LineItem], 'Not Specified') as [SPHLineItem]
,ISNULL([SPHACTROLLUP].[Statement], 'Not Specified') as [SPHStatement]
,ISNULL([SPHACTROLLUP].[Category], 'Not Specified') as [SPHCategory]
,ISNULL([SPHACTROLLUP].[Section], 'Not Specified') as [SPHSection]
,ISNULL([DSSACCTROLL4].[Name], 'Not Specified') as [DSSAccountRollup4]
,ISNULL([DSSACCTROLL4].[Name], 'Not Specified') as [DSSAccountRollup4Name]
,ISNULL([DSSACCTROLL4].[Category], 'Not Specified') as [DSSAccountRollup4Category]
,ISNULL([DSSACCOUNTROLLUP5].[Name], 'Not Specified') as [DSSAccountRollup5Name]
,ISNULL([DSSACCOUNTROLLUP6].[Name], 'Not Specified') as [DSSAccountRollup6Name]
,ISNULL([DSSACCOUNTROLLUP7].[Name], 'Not Specified') as [DSSAccountRollup7Name]
, [grp5D92C559C8004C18BF821C58E1977A6C].[Version]FROM [fw].[DimAccount] grp5D92C559C8004C18BF821C58E1977A6C (readuncommitted)
LEFT JOIN [fw].[viewDimPatientClass] [PATIENTCLASS] on [PATIENTCLASS].[PatientClassID] = [grp5D92C559C8004C18BF821C58E1977A6C].[PatientClassID]
LEFT JOIN [dss].[viewDimAccountRollup1] [DSSACTROL1] on [DSSACTROL1].[DSSAccountRollup1ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup1ID]
LEFT JOIN [dss].[viewDimAccountRollup2] [DSSACTROL2] on [DSSACTROL2].[DSSAccountRollup2ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup2ID]
LEFT JOIN [dss].[viewDimAccountRollup3] [DSSACTROL3] on [DSSACTROL3].[DSSAccountRollup3ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup3ID]
LEFT JOIN [ob].[viewDimFinancialReporting] [OBFINANCIALREP] on [OBFINANCIALREP].[FinancialReportingID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBDollarsFinancialReportingID]
LEFT JOIN [ob].[viewDimFinancialReporting] [OBFINANCIALREP_1] on [OBFINANCIALREP_1].[FinancialReportingID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBUnitsFinancialReportingID]
LEFT JOIN [ob].[viewDimAccountPH] [ACCOUNTPH] on [ACCOUNTPH].[AccountPHID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBAccountPHID]
INNER JOIN [ob].[viewDimAccountPH] [ACCOUNTPH_1] on [ACCOUNTPH_1].[AccountPHID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBStatModelSectionID]
LEFT JOIN [fw].[viewDimUnitType] [UNITTYPE] on [UNITTYPE].[UnitTypeID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBStatUnitTypeID]
LEFT JOIN [fw].[viewDimPayor] [PAYOR] on [PAYOR].[PayorID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBPayorID]
LEFT JOIN [fw].[viewDimPayorGroup] [PayorGroup] on [PayorGroup].[PayorGroupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[OBPayorGroupID]
LEFT JOIN [fw].[viewDimPayorGroup] [PayorGroup_1] on [PayorGroup_1].[PayorGroupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPPayorGroupID]
LEFT JOIN [fw].[viewDimPatientTypeRollup] [PatientTyRo] on [PatientTyRo].[PatientTypeRollupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[PatientTypeRollupID]
LEFT JOIN [sp].[viewDimAccountRollup] [SPAccountRollup] on [SPAccountRollup].[AccountRollupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPAccountRollupID]
LEFT JOIN [sp].[viewDimAccountRollup] [SPAccountRollup_1] on [SPAccountRollup_1].[AccountRollupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPStatAccountRollup]
LEFT JOIN [fw].[viewDimPhysicianGroup] [PhyGrp] on [PhyGrp].[PhysicianGroupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPPhysicianGroupID]
LEFT JOIN [fw].[viewDimJobCodeGroup] [JobCodeGrp] on [JobCodeGrp].[JobCodeGroupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPJobCodeGroupID]
LEFT JOIN [sp].[viewDimSPCapitalRollup] [SPCAPITALROLLUP] on [SPCAPITALROLLUP].[SPCapitalRollupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPCapitalRollupID]
LEFT JOIN [sp].[viewDimSPDebtIssuance] [SPDEBTISSUANCE] on [SPDEBTISSUANCE].[SPDebtIssuanceID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPDebtIssuanceID]
LEFT JOIN [fw].[viewDimSPHAccountRollup] [SPHACTROLLUP] on [SPHACTROLLUP].[SPHAccountRollupID] = [grp5D92C559C8004C18BF821C58E1977A6C].[SPHAccountRollupID]
LEFT JOIN [dss].[viewDimAccountRollup4] [DSSACCTROLL4] on [DSSACCTROLL4].[DSSAccountRollup4ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup4ID]
INNER JOIN [dss].[viewDimAccountRollup5] [DSSACCOUNTROLLUP5] on [DSSACCOUNTROLLUP5].[DSSAccountRollup5ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup5ID]
LEFT JOIN [dss].[viewDimAccountRollup6] [DSSACCOUNTROLLUP6] on [DSSACCOUNTROLLUP6].[DSSAccountRollup6ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup6ID]
LEFT JOIN [dss].[viewDimAccountRollup7] [DSSACCOUNTROLLUP7] on [DSSACCOUNTROLLUP7].[DSSAccountRollup7ID] = [grp5D92C559C8004C18BF821C58E1977A6C].[DSSAccountRollup7ID]
GO
---------------------------------------------
-- fw.viewDimAgeCohort
--Last Modified 10/17/2016 11:21 PM
CREATE VIEW [fw].[viewDimAgeCohort]
AS
SELECT
grpD86C7982BF714099989A70284B99EB36.[AgeCohortID]
,grpD86C7982BF714099989A70284B99EB36.[Name]
,grpD86C7982BF714099989A70284B99EB36.[Code]
,grpD86C7982BF714099989A70284B99EB36.[SortOrder]
,grpD86C7982BF714099989A70284B99EB36.[TransactionID]
,grpD86C7982BF714099989A70284B99EB36.[MemberGUID]
,grpD86C7982BF714099989A70284B99EB36.[HistoryItemGUID]
,grpD86C7982BF714099989A70284B99EB36.[TimeMin]
,grpD86C7982BF714099989A70284B99EB36.[TimeMax]
,grpD86C7982BF714099989A70284B99EB36.[TimeMinUnit]
,grpD86C7982BF714099989A70284B99EB36.[TimeMaxUnit]
FROM [fw].[DimAgeCohort] grpD86C7982BF714099989A70284B99EB36 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimAssumption_auto
CREATE VIEW [fw].[viewDimAssumption_auto]
AS
SELECT
grp2879736FA04A414EA76857E00A234FC5.[AssumptionID]
,grp2879736FA04A414EA76857E00A234FC5.[Name]
,grp2879736FA04A414EA76857E00A234FC5.[Category]
,grp2879736FA04A414EA76857E00A234FC5.[SubCategory]
,grp2879736FA04A414EA76857E00A234FC5.[DisplayFormat]
,grp2879736FA04A414EA76857E00A234FC5.[SPIsPastingValues]
,grp2879736FA04A414EA76857E00A234FC5.[SPIsProtectingRollingValues]
,grp2879736FA04A414EA76857E00A234FC5.[MemberGUID]
,grp2879736FA04A414EA76857E00A234FC5.[HistoryItemGUID]
, [grp2879736FA04A414EA76857E00A234FC5].[Version]FROM [fw].[DimAssumption] grp2879736FA04A414EA76857E00A234FC5 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimCICostLeader
CREATE VIEW [fw].[viewDimCICostLeader]
AS
SELECT
MemberGUID
,UserName
,NameFirst
,NameLast
,EmailAddress
,PhoneNumber
,IsSysAdmin
,NameFull
,UserGUID AS [CICostLeaderID]
FROM [fw].[viewDimUsers]
UNION
SELECT
dbo.ZeroGUID() MemberGUID
,'' UserName
,'' NameFirst
,'' NameLast
,'' EmailAddress
,'' PhoneNumber
,'' IsSysAdmin
,'Not Specified' NameFull
,dbo.ZeroGUID() AS [CIOwnerID];
GO
---------------------------------------------
-- fw.viewDimCICostLeader_auto
--Last Modified 11/9/2018 5:03 PM
CREATE VIEW [fw].[viewDimCICostLeader_auto]
AS
SELECT
grp86039BDA00234558918C494FF9385A1C.[MemberGUID]
,coalesce(grp86039BDA00234558918C494FF9385A1C.[UserName],'') as [UserName]
,coalesce(grp86039BDA00234558918C494FF9385A1C.[NameFirst],'') as [NameFirst]
,coalesce(grp86039BDA00234558918C494FF9385A1C.[NameLast],'') as [NameLast]
,coalesce(grp86039BDA00234558918C494FF9385A1C.[EmailAddress],'') as [EmailAddress]
,coalesce(grp86039BDA00234558918C494FF9385A1C.[PhoneNumber],'') as [PhoneNumber]
,grp86039BDA00234558918C494FF9385A1C.[IsSysAdmin]
,coalesce(grp86039BDA00234558918C494FF9385A1C.[NameFull],'') as [NameFull]
,grp86039BDA00234558918C494FF9385A1C.[CICostLeaderID]
FROM [fw].[viewDimCICostLeader] grp86039BDA00234558918C494FF9385A1C
GO
---------------------------------------------
-- fw.viewDimCIExecutiveSponsor
CREATE VIEW [fw].[viewDimCIExecutiveSponsor]
AS
SELECT
MemberGUID
,UserName
,NameFirst
,NameLast
,EmailAddress
,PhoneNumber
,IsSysAdmin
,NameFull
,UserGUID AS [CIExecutiveSponsorID]
FROM [fw].[viewDimUsers]
UNION
SELECT
dbo.ZeroGUID() MemberGUID
,'' UserName
,'' NameFirst
,'' NameLast
,'' EmailAddress
,'' PhoneNumber
,'' IsSysAdmin
,'Not Specified' NameFull
,dbo.ZeroGUID() AS [CIOwnerID];
GO
---------------------------------------------
-- fw.viewDimCIExecutiveSponsor_auto
--Last Modified 11/9/2018 5:03 PM
CREATE VIEW [fw].[viewDimCIExecutiveSponsor_auto]
AS
SELECT
grpF3B42BDB744145EC920F5404120C877D.[MemberGUID]
,coalesce(grpF3B42BDB744145EC920F5404120C877D.[UserName],'') as [UserName]
,coalesce(grpF3B42BDB744145EC920F5404120C877D.[NameFirst],'') as [NameFirst]
,coalesce(grpF3B42BDB744145EC920F5404120C877D.[NameLast],'') as [NameLast]
,coalesce(grpF3B42BDB744145EC920F5404120C877D.[EmailAddress],'') as [EmailAddress]
,coalesce(grpF3B42BDB744145EC920F5404120C877D.[PhoneNumber],'') as [PhoneNumber]
,grpF3B42BDB744145EC920F5404120C877D.[IsSysAdmin]
,coalesce(grpF3B42BDB744145EC920F5404120C877D.[NameFull],'') as [NameFull]
,grpF3B42BDB744145EC920F5404120C877D.[CIExecutiveSponsorID]
FROM [fw].[viewDimCIExecutiveSponsor] grpF3B42BDB744145EC920F5404120C877D
GO
---------------------------------------------
-- fw.viewDimCIOwner
CREATE VIEW [fw].[viewDimCIOwner]
AS
SELECT
MemberGUID
,UserName
,NameFirst
,NameLast
,EmailAddress
,PhoneNumber
,IsSysAdmin
,NameFull
,UserGUID AS [CIOwnerID]
FROM [fw].[viewDimUsers]
UNION
SELECT
dbo.ZeroGUID() MemberGUID
,'' UserName
,'' NameFirst
,'' NameLast
,'' EmailAddress
,'' PhoneNumber
,'' IsSysAdmin
,'Not Specified' NameFull
,dbo.ZeroGUID() AS [CIOwnerID];
GO
---------------------------------------------
-- fw.viewDimCIOwner_auto
--Last Modified 11/9/2018 5:03 PM
CREATE VIEW [fw].[viewDimCIOwner_auto]
AS
SELECT
grpD4F1A9BB138B4232A3D704B1F74D6CBE.[MemberGUID]
,coalesce(grpD4F1A9BB138B4232A3D704B1F74D6CBE.[UserName],'') as [UserName]
,coalesce(grpD4F1A9BB138B4232A3D704B1F74D6CBE.[NameFirst],'') as [NameFirst]
,coalesce(grpD4F1A9BB138B4232A3D704B1F74D6CBE.[NameLast],'') as [NameLast]
,coalesce(grpD4F1A9BB138B4232A3D704B1F74D6CBE.[EmailAddress],'') as [EmailAddress]
,coalesce(grpD4F1A9BB138B4232A3D704B1F74D6CBE.[PhoneNumber],'') as [PhoneNumber]
,grpD4F1A9BB138B4232A3D704B1F74D6CBE.[IsSysAdmin]
,coalesce(grpD4F1A9BB138B4232A3D704B1F74D6CBE.[NameFull],'') as [NameFull]
,grpD4F1A9BB138B4232A3D704B1F74D6CBE.[CIOwnerID]
FROM [fw].[viewDimCIOwner] grpD4F1A9BB138B4232A3D704B1F74D6CBE
GO
---------------------------------------------
-- fw.viewDimCMBucket
CREATE VIEW [fw].[viewDimCMBucket]
AS
SELECT
grp14E4823F9B7A434C9E5390716DA1E83B.[MemberGUID]
,grp14E4823F9B7A434C9E5390716DA1E83B.[CategoryGUID]
,coalesce(grp14E4823F9B7A434C9E5390716DA1E83B.[Name],'') as [Name]
,coalesce(grp14E4823F9B7A434C9E5390716DA1E83B.[Category],'') as [Category]
FROM [dbo].[viewCMBucket] grp14E4823F9B7A434C9E5390716DA1E83B
GO
---------------------------------------------
-- fw.viewDimCareSetting
CREATE VIEW [fw].[viewDimCareSetting]
AS
SELECT
grpCB4D1E3F1895456A8FAA1F3225FC314E.[CareSettingID]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[Name]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[Code]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[SortOrder]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[IsActive]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[TransactionID]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[MemberGUID]
,grpCB4D1E3F1895456A8FAA1F3225FC314E.[HistoryItemGUID]
FROM [fw].[DimCareSetting] grpCB4D1E3F1895456A8FAA1F3225FC314E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimCareSettingPH
CREATE VIEW [fw].[viewDimCareSettingPH]
AS
SELECT
grpF1AA6AEECFAB4BC783DD4937D6D780BC.[CareSettingPHID]
,grpF1AA6AEECFAB4BC783DD4937D6D780BC.[Name]
,grpF1AA6AEECFAB4BC783DD4937D6D780BC.[MemberGUID]
,grpF1AA6AEECFAB4BC783DD4937D6D780BC.[HistoryItemGUID]
,grpF1AA6AEECFAB4BC783DD4937D6D780BC.[TransactionID]
FROM [fw].[DimCareSettingPH] grpF1AA6AEECFAB4BC783DD4937D6D780BC (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimChargeCode
CREATE VIEW fw.viewDimChargeCode
AS
SELECT
ChargeCodeID,
ChargeCode,
MemberGUID,
Name,
HistoryItemGUID,
IsDefined
FROM
fw.DimChargeCode
GO
---------------------------------------------
-- fw.viewDimChargeCodePH
CREATE VIEW [fw].[viewDimChargeCodePH]
AS
SELECT
grp61106722392D44889DEE489AA9F62D29.[ChargeCodePHID]
,grp61106722392D44889DEE489AA9F62D29.[Name]
,grp61106722392D44889DEE489AA9F62D29.[MemberGUID]
,grp61106722392D44889DEE489AA9F62D29.[HistoryItemGUID]
FROM [fw].[DimChargeCodePH] grp61106722392D44889DEE489AA9F62D29 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimChargeCode_auto
--Last Modified 11/16/2020 3:28 PM
CREATE VIEW [fw].[viewDimChargeCode_auto]
AS
SELECT
grp9F8A3E7BEB06485C914C72C4F66C593E.[ChargeCodeID]
,coalesce(grp9F8A3E7BEB06485C914C72C4F66C593E.[Name],'') as [Name]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[ChargeCode]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[Description]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsDefined]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[OBIsDefined]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsRVU]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsStatDriver]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[ChargeIncrease]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[Category]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[RVUWeight]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[StatType]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[PatientTypeID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[DSSIsDefined]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[DayTypeID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[DayType2ID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[DayType3ID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[UBRevenueCodeID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[CPTID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsActivityCost]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[MemberGUID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[HistoryItemGUID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[CostDriver]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[Rollup]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsPatientSpecific]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[FWIsDefined]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[TimeStampWeight]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsTimeStamp]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[TimeStampPrecedent]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[TransactionID]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsSPHSupplyCosting]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[IsSPHTDCosting]
,grp9F8A3E7BEB06485C914C72C4F66C593E.[SPHChargeCodePrefix]
,ISNULL([PATIENTTYPE].[Name], 'Not Specified') as [PatientTypeName]
,ISNULL([DimDayType].[Name], 'Not Specified') as [DayType]
,ISNULL([DAYTYPE2].[Name], 'Not Specified') as [DayType2]
,ISNULL([DAYTYPE3].[Name], 'Not Specified') as [DayType3]
,ISNULL([DimUBRevenue].[UBRevenueCode], 'Not Specified') as [UBRevenueCode]
,ISNULL([DimUBRevenue].[UBRevenueName], 'Not Specified') as [UBRevenueCodeName]
,ISNULL([DimCPT].[CPTCode], 'Not Specified') as [CPTCode]
,ISNULL([DimCPT].[CPTName], 'Not Specified') as [CPTName]
, [grp9F8A3E7BEB06485C914C72C4F66C593E].[Version]FROM [fw].[DimChargeCode] grp9F8A3E7BEB06485C914C72C4F66C593E (readuncommitted)
LEFT JOIN [fw].[viewDimPatientType] [PATIENTTYPE] on [PATIENTTYPE].[PatientTypeID] = [grp9F8A3E7BEB06485C914C72C4F66C593E].[PatientTypeID]
LEFT JOIN [fw].[viewDimDayType_auto] [DimDayType] on [DimDayType].[DayTypeID] = [grp9F8A3E7BEB06485C914C72C4F66C593E].[DayTypeID]
LEFT JOIN [fw].[viewDimDayType2_auto] [DAYTYPE2] on [DAYTYPE2].[DayType2ID] = [grp9F8A3E7BEB06485C914C72C4F66C593E].[DayType2ID]
LEFT JOIN [fw].[viewDimDayType3_auto] [DAYTYPE3] on [DAYTYPE3].[DayType3ID] = [grp9F8A3E7BEB06485C914C72C4F66C593E].[DayType3ID]
LEFT JOIN [dss].[viewDimUBRevenueCode_auto] [DimUBRevenue] on [DimUBRevenue].[UBRevenueCodeID] = [grp9F8A3E7BEB06485C914C72C4F66C593E].[UBRevenueCodeID]
LEFT JOIN [dss].[viewDimCPT_auto] [DimCPT] on [DimCPT].[CPTID] = [grp9F8A3E7BEB06485C914C72C4F66C593E].[CPTID]
GO
---------------------------------------------
-- fw.viewDimColumnHider_auto
CREATE VIEW [fw].[viewDimColumnHider_auto]
AS
SELECT
grpDB3AC50ADCA7400E918D0BF9DAA2A474.[Name]
,grpDB3AC50ADCA7400E918D0BF9DAA2A474.[ColumnHiderID]
,grpDB3AC50ADCA7400E918D0BF9DAA2A474.[MemberGUID]
, [grpDB3AC50ADCA7400E918D0BF9DAA2A474].[Version], [grpDB3AC50ADCA7400E918D0BF9DAA2A474].[HistoryItemGUID]FROM [fw].[DimColumnHider] grpDB3AC50ADCA7400E918D0BF9DAA2A474 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimCompAnDepartment
--Last Modified 11/15/2023 3:55 PM
CREATE VIEW [fw].[viewDimCompAnDepartment]
AS
SELECT
grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnDepartmentID]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnDepartmentCode]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[Description]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[DescriptionLong]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnDepartmentRollup1]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnDepartmentRollup2]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnDepartmentRollup3]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnDepartmentRollup4]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[CompAnPrimaryStat]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[SPHDepartmentRollupID]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[MemberGUID]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[TransactionID]
,grp945F64DE366646BD8ACA55CDD45A8F1C.[HistoryItemGUID]
,ISNULL([SPHDEPARTMENTROLLUP].[Name], 'Not Specified') as [SPHDepartmentRollup]
FROM [fw].[DimCompAnDepartment] grp945F64DE366646BD8ACA55CDD45A8F1C (readuncommitted)
INNER JOIN [fw].[viewDimSPHDepartmentRollup] [SPHDEPARTMENTROLLUP] on [SPHDEPARTMENTROLLUP].[SPHDepartmentRollupID] = [grp945F64DE366646BD8ACA55CDD45A8F1C].[SPHDepartmentRollupID]
GO
---------------------------------------------
-- fw.viewDimCompAnPeerGroup_auto
--Last Modified 3/20/2024 5:05 PM
CREATE VIEW [fw].[viewDimCompAnPeerGroup_auto]
AS
SELECT
grpE48D7237FE824CCE9822B88C3CAC7AB5.[CompAnPeerGroupID]
,grpE48D7237FE824CCE9822B88C3CAC7AB5.[Name]
,grpE48D7237FE824CCE9822B88C3CAC7AB5.[Description]
,grpE48D7237FE824CCE9822B88C3CAC7AB5.[CompAnPeerGroupCode]
,grpE48D7237FE824CCE9822B88C3CAC7AB5.[TransactionID]
,grpE48D7237FE824CCE9822B88C3CAC7AB5.[MemberGUID]
,grpE48D7237FE824CCE9822B88C3CAC7AB5.[HistoryItemGUID]
FROM [fw].[DimCompAnPeerGroup] grpE48D7237FE824CCE9822B88C3CAC7AB5 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimConsolidatedFinancialReporting
CREATE VIEW [fw].[viewDimConsolidatedFinancialReporting]
AS
SELECT
[ConsolidatedFinancialReportingID],
[Statement],
[Section],
[LineName],
COALESCE([Name],'') as [Name],
[SortOrder],
[MemberGUID],
[HistoryItemGUID]
FROM [fw].[DimConsolidatedFinancialReporting] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimConsolidatedFinancialReporting_source
CREATE VIEW [fw].[viewDimConsolidatedFinancialReporting_source]
AS
SELECT
grpB839D1E3EA3544B1802E3D15F28F859E.[ConsolidatedFinancialReportingID]
,grpB839D1E3EA3544B1802E3D15F28F859E.[MemberGUID]
,grpB839D1E3EA3544B1802E3D15F28F859E.[HistoryItemGUID]
,[grpB839D1E3EA3544B1802E3D15F28F859E].[Statement] + ' - ' + [grpB839D1E3EA3544B1802E3D15F28F859E].[Section] + ' - ' + [grpB839D1E3EA3544B1802E3D15F28F859E].[LineName] AS [Name]
FROM [fw].[DimConsolidatedFinancialReporting] grpB839D1E3EA3544B1802E3D15F28F859E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDataType
CREATE VIEW [fw].[viewDimDataType]
AS
SELECT
grp7931E63E49A84444B96A3473EF2E8342.[DataTypeID]
,grp7931E63E49A84444B96A3473EF2E8342.[Name]
,grp7931E63E49A84444B96A3473EF2E8342.[GlobalID]
,grp7931E63E49A84444B96A3473EF2E8342.[MemberGUID]
,grp7931E63E49A84444B96A3473EF2E8342.[HistoryItemGUID]
FROM [fw].[DimDataType] grp7931E63E49A84444B96A3473EF2E8342 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDate_auto
--Last Modified 4/5/2019 11:00 PM
CREATE VIEW [fw].[viewDimDate_auto]
AS
SELECT
grpFE562A75A28047209619C1D86C699238.[DateID]
,grpFE562A75A28047209619C1D86C699238.[TransactionID]
,grpFE562A75A28047209619C1D86C699238.[DayNumberOfWeek]
,grpFE562A75A28047209619C1D86C699238.[DayNameOfWeek]
,grpFE562A75A28047209619C1D86C699238.[DayNumberOfMonth]
,grpFE562A75A28047209619C1D86C699238.[DayNumberOfYear]
,grpFE562A75A28047209619C1D86C699238.[WeekNumberOfYear]
,grpFE562A75A28047209619C1D86C699238.[IsWeekDay]
,grpFE562A75A28047209619C1D86C699238.[CalendarQuarter]
,grpFE562A75A28047209619C1D86C699238.[CalendarDateTime]
,grpFE562A75A28047209619C1D86C699238.[CalendarYear]
,grpFE562A75A28047209619C1D86C699238.[CalendarMonth]
,grpFE562A75A28047209619C1D86C699238.[CalendarMonthName]
,grpFE562A75A28047209619C1D86C699238.[FiscalYear]
,coalesce(grpFE562A75A28047209619C1D86C699238.[FiscalYearName],'') as [FiscalYearName]
,grpFE562A75A28047209619C1D86C699238.[HistoryItemGUID]
,grpFE562A75A28047209619C1D86C699238.[MemberGUID]
,grpFE562A75A28047209619C1D86C699238.[FiscalMonth]
,grpFE562A75A28047209619C1D86C699238.[FiscalQuarter]
,grpFE562A75A28047209619C1D86C699238.[YearMonth]
,grpFE562A75A28047209619C1D86C699238.[MonthYear]
,grpFE562A75A28047209619C1D86C699238.[DaysInMonth]
,coalesce(grpFE562A75A28047209619C1D86C699238.[PremierMapping],'') as [PremierMapping]
, [grpFE562A75A28047209619C1D86C699238].[Version]FROM [fw].[DimDate] grpFE562A75A28047209619C1D86C699238 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDayType2
CREATE VIEW fw.viewDimDayType2
AS
SELECT
DayTypeID [DayType2ID]
,DayTypeCode
,Description
,Name
,PrecedentOrder
,GlobalID
,Rollup
,MemberGUID
,HistoryItemGUID
FROM
fw.DimDayType
GO
---------------------------------------------
-- fw.viewDimDayType2_auto
CREATE VIEW [fw].[viewDimDayType2_auto]
AS
SELECT
grp143B285CCD194B4EBEF270972EB02575.[DayType2ID]
,grp143B285CCD194B4EBEF270972EB02575.[DayTypeCode]
,grp143B285CCD194B4EBEF270972EB02575.[Description]
,grp143B285CCD194B4EBEF270972EB02575.[Name]
,grp143B285CCD194B4EBEF270972EB02575.[PrecedentOrder]
,grp143B285CCD194B4EBEF270972EB02575.[GlobalID]
,grp143B285CCD194B4EBEF270972EB02575.[Rollup]
,grp143B285CCD194B4EBEF270972EB02575.[MemberGUID]
,grp143B285CCD194B4EBEF270972EB02575.[HistoryItemGUID]
FROM [fw].[viewDimDayType2] grp143B285CCD194B4EBEF270972EB02575
GO
---------------------------------------------
-- fw.viewDimDayType3
CREATE VIEW fw.viewDimDayType3
AS
SELECT
DayTypeID [DayType3ID]
,DayTypeCode
,Description
,Name
,PrecedentOrder
,GlobalID
,Rollup
,MemberGUID
,HistoryItemGUID
FROM
fw.DimDayType
GO
---------------------------------------------
-- fw.viewDimDayType3_auto
CREATE VIEW [fw].[viewDimDayType3_auto]
AS
SELECT
grp5B075EFFA79145A69E8B48E63306F374.[DayType3ID]
,grp5B075EFFA79145A69E8B48E63306F374.[DayTypeCode]
,grp5B075EFFA79145A69E8B48E63306F374.[Description]
,grp5B075EFFA79145A69E8B48E63306F374.[Name]
,grp5B075EFFA79145A69E8B48E63306F374.[PrecedentOrder]
,grp5B075EFFA79145A69E8B48E63306F374.[GlobalID]
,grp5B075EFFA79145A69E8B48E63306F374.[Rollup]
,grp5B075EFFA79145A69E8B48E63306F374.[MemberGUID]
,grp5B075EFFA79145A69E8B48E63306F374.[HistoryItemGUID]
FROM [fw].[viewDimDayType3] grp5B075EFFA79145A69E8B48E63306F374
GO
---------------------------------------------
-- fw.viewDimDayType_auto
--Last Modified 3/8/2016 3:28 PM
CREATE VIEW [fw].[viewDimDayType_auto]
AS
SELECT
grpCCD1FA368B434C7B949582F5A942303E.[DayTypeID]
,grpCCD1FA368B434C7B949582F5A942303E.[DayTypeCode]
,grpCCD1FA368B434C7B949582F5A942303E.[Description]
,coalesce(grpCCD1FA368B434C7B949582F5A942303E.[Name],'') as [Name]
,grpCCD1FA368B434C7B949582F5A942303E.[PrecedentOrder]
,grpCCD1FA368B434C7B949582F5A942303E.[GlobalID]
,grpCCD1FA368B434C7B949582F5A942303E.[MemberGUID]
,grpCCD1FA368B434C7B949582F5A942303E.[HistoryItemGUID]
,grpCCD1FA368B434C7B949582F5A942303E.[Rollup]
FROM [fw].[DimDayType] grpCCD1FA368B434C7B949582F5A942303E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDayType_auto_0
CREATE VIEW [fw].[viewDimDayType_auto_0]
AS
SELECT
grp78A73D3E10C0427BB8F87BD131D0742E.[DayTypeID]
,grp78A73D3E10C0427BB8F87BD131D0742E.[DayTypeCode]
,grp78A73D3E10C0427BB8F87BD131D0742E.[Description]
,coalesce(grp78A73D3E10C0427BB8F87BD131D0742E.[Name],'') as [Name]
,grp78A73D3E10C0427BB8F87BD131D0742E.[PrecedentOrder]
,grp78A73D3E10C0427BB8F87BD131D0742E.[GlobalID]
,grp78A73D3E10C0427BB8F87BD131D0742E.[MemberGUID]
,grp78A73D3E10C0427BB8F87BD131D0742E.[HistoryItemGUID]
,grp78A73D3E10C0427BB8F87BD131D0742E.[Rollup]
FROM [fw].[DimDayType] grp78A73D3E10C0427BB8F87BD131D0742E
GO
---------------------------------------------
-- fw.viewDimDayofStay
CREATE VIEW [fw].[viewDimDayofStay]
AS
SELECT
grp13B341BB37FF431BA7F941247BF19B9E.[DayofStayID]
,grp13B341BB37FF431BA7F941247BF19B9E.[Name]
,grp13B341BB37FF431BA7F941247BF19B9E.[MemberGUID]
,grp13B341BB37FF431BA7F941247BF19B9E.[HistoryItemGUID]
FROM [fw].[DimDayofStay] grp13B341BB37FF431BA7F941247BF19B9E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartment
CREATE VIEW [fw].[viewDimDepartment]
AS
SELECT
[DepartmentID],
COALESCE([Name],'') as [Name],
[DepartmentCode],
[Description],
[SystemID],
[EntityID],
[DepartmentRollup1ID],
[DepartmentRollup2ID],
[DepartmentRollup3ID],
[DepartmentRollup4ID],
[DepartmentRollup5ID],
[DepartmentRollup6ID],
[CareSettingID],
[SortOrder],
[FunctionalAreaID],
[ResearchDepartmentCategoryID],
[AttributionTypeID],
[CAPIsDefined],
[IsCAP],
[DSSIsDefined],
[IsDSS],
[DepartmentTypeOLD],
[DSSDeptGrouping],
[DSSDepartmentRollup1ID],
[DSSDepartmentRollup2ID],
[DSSDepartmentRollup3ID],
[DSSDepartmentRollup4ID],
[DSSDepartmentRollup5ID],
[DSSDepartmentRollup6ID],
[DSSDepartmentRollup7ID],
[IsOverhead],
[OBIsDefined],
[IsOB],
[IsMRPlan],
[IsMRMetricTracking],
[IsPR],
[IsActive],
[IsVariable],
[IsAccountFlexing],
[FlexingBucketGUID],
[OBGlobalStatisticsPlanID],
[OBReimbursementPlanID],
[OBServiceLinePlanID],
[SPIsDefined],
[IsLRFP],
[RollingPlanID],
[OpsPlanID],
[BalPlanID],
[PatientTypeRollup],
[SPJobCodeGroup],
[SPPhysicianGroup],
[SPAccountRollup],
COALESCE([System],'') as [System],
[SystemSortOrder],
COALESCE([Entity],'') as [Entity],
[EntitySortOrder],
[EntityTypeOverride],
COALESCE([EntityCode],'') as [EntityCode],
COALESCE([CareSetting],'') as [CareSetting],
COALESCE([DepartmentRollup1],'') as [DepartmentRollup1],
[DepartmentRollup1SortOrder],
COALESCE([DepartmentRollup2],'') as [DepartmentRollup2],
[DepartmentRollup2SortOrder],
COALESCE([DepartmentRollup3],'') as [DepartmentRollup3],
[DepartmentRollup3SortOrder],
COALESCE([DepartmentRollup4],'') as [DepartmentRollup4],
[DepartmentRollup4SortOrder],
[SPHDepartmentRollupID],
COALESCE([SPHDepartmentRollupName],'') as [SPHDepartmentRollupName],
[SPHDepartmentRollupConfidenceScore],
COALESCE([DepartmentRollup5],'') as [DepartmentRollup5],
[SPHDepartmentConfidenceScore],
[DepartmentRollup5SortOrder],
COALESCE([DepartmentRollup6],'') as [DepartmentRollup6],
[DepartmentRollup6SortOrder],
COALESCE([DSSDepartmentRollup1Name],'') as [DSSDepartmentRollup1Name],
COALESCE([DSSDepartmentRollup2Name],'') as [DSSDepartmentRollup2Name],
COALESCE([DSSDepartmentRollup3Name],'') as [DSSDepartmentRollup3Name],
COALESCE([DSSDepartmentRollup4Name],'') as [DSSDepartmentRollup4Name],
COALESCE([DSSDepartmentRollup5Name],'') as [DSSDepartmentRollup5Name],
COALESCE([DSSDepartmentRollup6Name],'') as [DSSDepartmentRollup6Name],
COALESCE([DSSDepartmentRollup7Name],'') as [DSSDepartmentRollup7Name],
COALESCE([FunctionalArea],'') as [FunctionalArea],
COALESCE([ResearchDepartmentCategoryName],'') as [ResearchDepartmentCategoryName],
[ResearchDepartmentCategorySortOrder],
COALESCE([AttributionType],'') as [AttributionType],
[IsConsolidated],
[ConsolidatedCode],
COALESCE([OBGlobalStatisticsPlan],'') as [OBGlobalStatisticsPlan],
COALESCE([OBReimbursementPlan],'') as [OBReimbursementPlan],
COALESCE([OBServiceLinePlan],'') as [OBServiceLinePlan],
COALESCE([SPRollingForecastPlanName],'') as [SPRollingForecastPlanName],
COALESCE([SPOperationsPlanName],'') as [SPOperationsPlanName],
COALESCE([SPBalanceSheetPlanName],'') as [SPBalanceSheetPlanName],
[IsDepartmentRollup],
[SPServiceLineForecastType],
COALESCE([PatientTypeRollupName],'') as [PatientTypeRollupName],
[DepartmentTypeID],
COALESCE([DepartmentType],'') as [DepartmentType],
COALESCE([SPJobCodeGroupName],'') as [SPJobCodeGroupName],
COALESCE([SPPhysicianGroupName],'') as [SPPhysicianGroupName],
COALESCE([SPAccountRollupName],'') as [SPAccountRollupName],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[WorkWeekID],
[CAPDefaultSalesTax],
[FundID],
COALESCE([Fund],'') as [Fund],
[FundSortOrder],
[ProjectID],
COALESCE([Project],'') as [Project],
[ProjectSortOrder],
[HomeDepartmentID],
COALESCE([HomeDepartment],'') as [HomeDepartment],
[HomeDepartmentSortOrder],
[ProgramID],
COALESCE([Program],'') as [Program],
[ProgramSortOrder],
[PayCycleID],
[FWIsDefined],
[DepartmentCodeRaw],
[MRVicePresident],
[MRDirector],
[MRManager],
[IsMROrPR],
[IsHealthPlanAdmin],
COALESCE([DepartmentRollup1Code],'') as [DepartmentRollup1Code],
COALESCE([DepartmentRollup2Code],'') as [DepartmentRollup2Code],
COALESCE([DepartmentRollup3Code],'') as [DepartmentRollup3Code],
COALESCE([DepartmentRollup4Code],'') as [DepartmentRollup4Code],
COALESCE([DepartmentRollup5Code],'') as [DepartmentRollup5Code],
COALESCE([DepartmentRollup6Code],'') as [DepartmentRollup6Code],
[TransactionID],
[SPHDepartmentTypeID],
[SPHDepartmentRollupIsValidated],
[SPHDepartmentIsValidated],
[SPHDepartmentID],
COALESCE([SPHDepartmentName],'') as [SPHDepartmentName],
[SPHDepartmentType],
[IsClaimsCosting],
[ProductivityPercentileID],
COALESCE([ProductivityPercentile],'') as [ProductivityPercentile],
[CompAnDepartmentID],
COALESCE([CompAnDepartment],'') as [CompAnDepartment] ,[Version]
FROM [fw].[DimDepartment] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentPH_auto
CREATE VIEW [fw].[viewDimDepartmentPH_auto]
AS
SELECT
grpDC20824AF9C5477F9045CAAEF2A933B7.[Name]
,grpDC20824AF9C5477F9045CAAEF2A933B7.[MemberGUID]
,grpDC20824AF9C5477F9045CAAEF2A933B7.[DepartmentPHID]
, [grpDC20824AF9C5477F9045CAAEF2A933B7].[Version], [grpDC20824AF9C5477F9045CAAEF2A933B7].[HistoryItemGUID]FROM [fw].[DimDepartmentPH] grpDC20824AF9C5477F9045CAAEF2A933B7 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup1
CREATE VIEW [fw].[viewDimDepartmentRollup1]
AS
SELECT
[DepartmentRollup1ID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[EliminationsDepartmentID]
FROM [fw].[DimDepartmentRollup1] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup1_source
CREATE VIEW [fw].[viewDimDepartmentRollup1_source]
AS
SELECT
grpFA10FD701D9D4868B178EDDF1FC3BABD.[DepartmentRollup1ID]
,grpFA10FD701D9D4868B178EDDF1FC3BABD.[Name]
,grpFA10FD701D9D4868B178EDDF1FC3BABD.[SecureGroupID]
,grpFA10FD701D9D4868B178EDDF1FC3BABD.[MemberGUID]
,grpFA10FD701D9D4868B178EDDF1FC3BABD.[HistoryItemGUID]
FROM [fw].[DimDepartmentRollup1] grpFA10FD701D9D4868B178EDDF1FC3BABD (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup2
CREATE VIEW [fw].[viewDimDepartmentRollup2]
AS
SELECT
[DepartmentRollup2ID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[EliminationsDepartmentID]
FROM [fw].[DimDepartmentRollup2] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup2_source
CREATE VIEW [fw].[viewDimDepartmentRollup2_source]
AS
SELECT
grpB2EDCD6A7E5448C8912DE6279CA5303C.[DepartmentRollup2ID]
,grpB2EDCD6A7E5448C8912DE6279CA5303C.[Name]
,grpB2EDCD6A7E5448C8912DE6279CA5303C.[SecureGroupID]
,grpB2EDCD6A7E5448C8912DE6279CA5303C.[MemberGUID]
,grpB2EDCD6A7E5448C8912DE6279CA5303C.[HistoryItemGUID]
FROM [fw].[DimDepartmentRollup2] grpB2EDCD6A7E5448C8912DE6279CA5303C (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup3
CREATE VIEW [fw].[viewDimDepartmentRollup3]
AS
SELECT
[DepartmentRollup3ID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[EliminationsDepartmentID]
FROM [fw].[DimDepartmentRollup3] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup3_source
CREATE VIEW [fw].[viewDimDepartmentRollup3_source]
AS
SELECT
grp0D6EBF23F8D6489DA85B11B8FF0DF237.[DepartmentRollup3ID]
,grp0D6EBF23F8D6489DA85B11B8FF0DF237.[Name]
,grp0D6EBF23F8D6489DA85B11B8FF0DF237.[SecureGroupID]
,grp0D6EBF23F8D6489DA85B11B8FF0DF237.[MemberGUID]
,grp0D6EBF23F8D6489DA85B11B8FF0DF237.[HistoryItemGUID]
FROM [fw].[DimDepartmentRollup3] grp0D6EBF23F8D6489DA85B11B8FF0DF237 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup4
CREATE VIEW [fw].[viewDimDepartmentRollup4]
AS
SELECT
[DepartmentRollup4ID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[EliminationsDepartmentID]
FROM [fw].[DimDepartmentRollup4] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup4_source
CREATE VIEW [fw].[viewDimDepartmentRollup4_source]
AS
SELECT
grp2823DE836C9241B29F219400CAE92824.[SecureGroupID]
,grp2823DE836C9241B29F219400CAE92824.[DepartmentRollup4ID]
,grp2823DE836C9241B29F219400CAE92824.[Name]
,grp2823DE836C9241B29F219400CAE92824.[MemberGUID]
,grp2823DE836C9241B29F219400CAE92824.[HistoryItemGUID]
FROM [fw].[DimDepartmentRollup4] grp2823DE836C9241B29F219400CAE92824 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup5
CREATE VIEW [fw].[viewDimDepartmentRollup5]
AS
SELECT
[DepartmentRollup5ID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[EliminationsDepartmentID]
FROM [fw].[DimDepartmentRollup5] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup5_source
CREATE VIEW [fw].[viewDimDepartmentRollup5_source]
AS
SELECT
grpFEF2ED58077B4941805CE8B84D4E763A.[SecureGroupID]
,grpFEF2ED58077B4941805CE8B84D4E763A.[DepartmentRollup5ID]
,grpFEF2ED58077B4941805CE8B84D4E763A.[Name]
,grpFEF2ED58077B4941805CE8B84D4E763A.[MemberGUID]
,grpFEF2ED58077B4941805CE8B84D4E763A.[HistoryItemGUID]
FROM [fw].[DimDepartmentRollup5] grpFEF2ED58077B4941805CE8B84D4E763A (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup6
CREATE VIEW [fw].[viewDimDepartmentRollup6]
AS
SELECT
[DepartmentRollup6ID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[MemberGUID],
[HistoryItemGUID],
[EliminationsDepartmentID]
FROM [fw].[DimDepartmentRollup6] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentRollup6_source
CREATE VIEW [fw].[viewDimDepartmentRollup6_source]
AS
SELECT
grp43C5EF4D49654C9B9526374DD9E2FC93.[DepartmentRollup6ID]
,grp43C5EF4D49654C9B9526374DD9E2FC93.[SecureGroupID]
,grp43C5EF4D49654C9B9526374DD9E2FC93.[Name]
,grp43C5EF4D49654C9B9526374DD9E2FC93.[MemberGUID]
,grp43C5EF4D49654C9B9526374DD9E2FC93.[HistoryItemGUID]
FROM [fw].[DimDepartmentRollup6] grp43C5EF4D49654C9B9526374DD9E2FC93 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartmentType
--Last Modified 1/20/2016 8:39 AM
CREATE VIEW [fw].[viewDimDepartmentType]
AS
SELECT
grpFC24FBAFBE8449659F87692015E8BC45.[DepartmentTypeID]
,grpFC24FBAFBE8449659F87692015E8BC45.[Name]
,grpFC24FBAFBE8449659F87692015E8BC45.[TransactionID]
,grpFC24FBAFBE8449659F87692015E8BC45.[MemberGUID]
,grpFC24FBAFBE8449659F87692015E8BC45.[HistoryItemGUID]
,grpFC24FBAFBE8449659F87692015E8BC45.[Rollup]
FROM [fw].[DimDepartmentType] grpFC24FBAFBE8449659F87692015E8BC45 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimDepartment_Pseudo
CREATE view fw.viewDimDepartment_Pseudo AS
SELECT DepartmentID, Name, DepartmentCode, Description, SystemID, EntityID, DepartmentRollup1ID, DepartmentRollup2ID, DepartmentRollup3ID, DepartmentRollup4ID,
DepartmentRollup5ID, DepartmentRollup6ID, CareSettingID, SortOrder, FunctionalAreaID, ResearchDepartmentCategoryID, AttributionTypeID, CAPIsDefined, IsCAP,
DSSIsDefined, IsDSS, DepartmentTypeOLD, DSSDeptGrouping, DSSDepartmentRollup1ID, DSSDepartmentRollup2ID, DSSDepartmentRollup3ID, IsOverhead,
OBIsDefined, IsOB, IsMRPlan, IsActive, IsVariable, IsAccountFlexing, FlexingBucketGUID, OBGlobalStatisticsPlanID, OBReimbursementPlanID,
OBServiceLinePlanID, SPIsDefined, IsLRFP, RollingPlanID, OpsPlanID, BalPlanID, PatientTypeRollup, SPJobCodeGroup, SPPhysicianGroup, SPAccountRollup,
System, SystemSortOrder, Entity, EntitySortOrder, EntityTypeOverride, EntityCode, CareSetting, DepartmentRollup1, DepartmentRollup1SortOrder,
DepartmentRollup2, DepartmentRollup2SortOrder, DepartmentRollup3, DepartmentRollup3SortOrder, DepartmentRollup4, DepartmentRollup4SortOrder,
DepartmentRollup5, DepartmentRollup5SortOrder, DepartmentRollup6, DepartmentRollup6SortOrder, DSSDepartmentRollup1Name, DSSDepartmentRollup2Name,
DSSDepartmentRollup3Name, FunctionalArea, ResearchDepartmentCategoryName, ResearchDepartmentCategorySortOrder, AttributionType, IsConsolidated,
ConsolidatedCode, OBGlobalStatisticsPlan, OBReimbursementPlan, OBServiceLinePlan, SPRollingForecastPlanName, SPOperationsPlanName,
SPBalanceSheetPlanName, IsDepartmentRollup, SPServiceLineForecastType, PatientTypeRollupName, DepartmentTypeID, DepartmentType,
SPJobCodeGroupName, SPPhysicianGroupName, SPAccountRollupName, SecureGroupID, MemberGUID, HistoryItemGUID, WorkWeekID, CAPDefaultSalesTax,
FundID, Fund, FundSortOrder, ProjectID, Project, ProjectSortOrder, HomeDepartmentID, HomeDepartment, HomeDepartmentSortOrder, ProgramID, Program,
ProgramSortOrder, PayCycleID, FWIsDefined, DepartmentCodeRaw, IsPR, SPHDepartmentTypeID, SPHDepartmentType, Version
FROM fw.viewDimDepartment AS d
WHERE (IsDepartmentRollup = 1) OR
(DepartmentID = 0)
GO
---------------------------------------------
-- fw.viewDimDepartment_Real
CREATE view [fw].[viewDimDepartment_Real]
AS
SELECT
DepartmentID, Name, DepartmentCode, Description, SystemID, EntityID, DepartmentRollup1ID, DepartmentRollup2ID, DepartmentRollup3ID, DepartmentRollup4ID,
DepartmentRollup5ID, DepartmentRollup6ID, CareSettingID, SortOrder, FunctionalAreaID, ResearchDepartmentCategoryID, AttributionTypeID, CAPIsDefined, IsCAP,
DSSIsDefined, IsDSS, DSSDeptGrouping, DSSDepartmentRollup1ID, DSSDepartmentRollup2ID, DSSDepartmentRollup3ID,DSSDepartmentRollup4ID, DSSDepartmentRollup5ID, DSSDepartmentRollup6ID, DSSDepartmentRollup7ID, IsOverhead,
OBIsDefined, IsOB, IsMRPlan, IsMRMetricTracking, IsActive, IsVariable, IsAccountFlexing, FlexingBucketGUID, OBGlobalStatisticsPlanID, OBReimbursementPlanID,
OBServiceLinePlanID, SPIsDefined, IsLRFP, RollingPlanID, OpsPlanID, BalPlanID, PatientTypeRollup, SPJobCodeGroup, SPPhysicianGroup, SPAccountRollup,
System, SystemSortOrder, Entity, EntitySortOrder, EntityTypeOverride, EntityCode, CareSetting, DepartmentRollup1, DepartmentRollup1SortOrder,
DepartmentRollup2, DepartmentRollup2SortOrder, DepartmentRollup3, DepartmentRollup3SortOrder, DepartmentRollup4, DepartmentRollup4SortOrder,
DepartmentRollup5, DepartmentRollup5SortOrder, DepartmentRollup6, DepartmentRollup6SortOrder, DSSDepartmentRollup1Name, DSSDepartmentRollup2Name,
DSSDepartmentRollup3Name,DSSDepartmentRollup4Name,DSSDepartmentRollup5Name,DSSDepartmentRollup6Name,DSSDepartmentRollup7Name, FunctionalArea, ResearchDepartmentCategoryName, ResearchDepartmentCategorySortOrder, AttributionType, IsConsolidated,
ConsolidatedCode, OBGlobalStatisticsPlan, OBReimbursementPlan, OBServiceLinePlan, SPRollingForecastPlanName, SPOperationsPlanName,
SPBalanceSheetPlanName, IsDepartmentRollup, SPServiceLineForecastType, PatientTypeRollupName, DepartmentTypeID, DepartmentType,
SPJobCodeGroupName, SPPhysicianGroupName, SPAccountRollupName, SecureGroupID, MemberGUID, HistoryItemGUID, WorkWeekID, CAPDefaultSalesTax,
FundID, Fund, FundSortOrder, ProjectID, Project, ProjectSortOrder, HomeDepartmentID, HomeDepartment, HomeDepartmentSortOrder, ProgramID, Program,
ProgramSortOrder, PayCycleID, FWIsDefined, DepartmentCodeRaw, IsPR, SPHDepartmentTypeID, SPHDepartmentType, Version, SPHDepartmentID, SPHDepartmentName, SPHDepartmentConfidenceScore, SPHDepartmentIsValidated, SPHDepartmentRollupID, SPHDepartmentRollupName, SPHDepartmentRollupConfidenceScore
FROM
fw.viewDimDepartment d
WHERE
(IsDepartmentRollup = 0 OR DepartmentID = 0)
GO
---------------------------------------------
-- fw.viewDimDepartment_source
CREATE VIEW [fw].[viewDimDepartment_source]
AS
SELECT
grp34146F449F3140ECB03A8BC6153DE46F.[DepartmentID]
,grp34146F449F3140ECB03A8BC6153DE46F.[Name]
,grp34146F449F3140ECB03A8BC6153DE46F.[EntityTypeOverride]
,grp34146F449F3140ECB03A8BC6153DE46F.[SPHDepartmentRollupID]
,grp34146F449F3140ECB03A8BC6153DE46F.[SPHDepartmentConfidenceScore]
,grp34146F449F3140ECB03A8BC6153DE46F.[SecureGroupID]
,grp34146F449F3140ECB03A8BC6153DE46F.[MemberGUID]
,grp34146F449F3140ECB03A8BC6153DE46F.[HistoryItemGUID]
,grp34146F449F3140ECB03A8BC6153DE46F.[IsMROrPR]
,grp34146F449F3140ECB03A8BC6153DE46F.[TransactionID]
,ISNULL([SYSTEM].[Name], 'Not Specified') as [System]
,ISNULL([SYSTEM].[SortOrder], 0) as [SystemSortOrder]
,ISNULL([ENT].[Name], 'Not Specified') as [Entity]
,ISNULL([ENT].[SortOrder], 0) as [EntitySortOrder]
,ISNULL([ENT].[Code], 'Not Specified') as [EntityCode]
,ISNULL([ENT].[SPServiceLineForecastType], 0) as [SPServiceLineForecastType]
,ISNULL([ENT].[WorkWeekID], 0) as [WorkWeekID]
,ISNULL([ENT].[CAPDefaultSalesTax], 0) as [CAPDefaultSalesTax]
,ISNULL([ENT].[PayCycleID], 0) as [PayCycleID]
,ISNULL([DeptRollup1].[Name], 'Not Specified') as [DepartmentRollup1]
,ISNULL([DeptRollup1].[SortOrder], 0) as [DepartmentRollup1SortOrder]
,ISNULL([DeptRollup1].[Code], 'Not Specified') as [DepartmentRollup1Code]
,ISNULL([DeptRollup2].[Name], 'Not Specified') as [DepartmentRollup2]
,ISNULL([DeptRollup2].[SortOrder], 0) as [DepartmentRollup2SortOrder]
,ISNULL([DeptRollup2].[Code], 'Not Specified') as [DepartmentRollup2Code]
,ISNULL([DeptRollup3].[Name], 'Not Specified') as [DepartmentRollup3]
,ISNULL([DeptRollup3].[SortOrder], 0) as [DepartmentRollup3SortOrder]
,ISNULL([DeptRollup3].[Code], 'Not Specified') as [DepartmentRollup3Code]
,ISNULL([DeptRollup4].[Name], 'Not Specified') as [DepartmentRollup4]
,ISNULL([DeptRollup4].[SortOrder], 0) as [DepartmentRollup4SortOrder]
,ISNULL([DeptRollup4].[Code], 'Not Specified') as [DepartmentRollup4Code]
,ISNULL([DeptRollup5].[Name], 'Not Specified') as [DepartmentRollup5]
,ISNULL([DeptRollup5].[SortOrder], 0) as [DepartmentRollup5SortOrder]
,ISNULL([DeptRollup5].[Code], 'Not Specified') as [DepartmentRollup5Code]
,ISNULL([DeptRollup6].[Name], 'Not Specified') as [DepartmentRollup6]
,ISNULL([DeptRollup6].[SortOrder], 0) as [DepartmentRollup6SortOrder]
,ISNULL([DeptRollup6].[Code], 'Not Specified') as [DepartmentRollup6Code]
,ISNULL([CARESETTING].[Name], 'Not Specified') as [CareSetting]
,ISNULL([FUNCTIONALAREA].[Name], 'Not Specified') as [FunctionalArea]
,ISNULL([RESEARCHDEPARTMENTCATEGORY].[Name], 'Not Specified') as [ResearchDepartmentCategoryName]
,ISNULL([RESEARCHDEPARTMENTCATEGORY].[SortOrder], 0) as [ResearchDepartmentCategorySortOrder]
,ISNULL([ATTRIBUTIONTYPE].[Name], 'Not Specified') as [AttributionType]
,ISNULL([DSSDEPTROLLUP1].[Name], 'Not Specified') as [DSSDepartmentRollup1Name]
,ISNULL([DSSDEPTROLLUP2].[Name], 'Not Specified') as [DSSDepartmentRollup2Name]
,ISNULL([DSSDEPTROLLUP3].[Name], 'Not Specified') as [DSSDepartmentRollup3Name]
,ISNULL([DSDEPTR4].[Name], 'Not Specified') as [DSSDepartmentRollup4Name]
,ISNULL([DSSDEPT5].[Name], 'Not Specified') as [DSSDepartmentRollup5Name]
,ISNULL([DSSDEPTROLL6].[Name], 'Not Specified') as [DSSDepartmentRollup6Name]
,ISNULL([DSSDEPARTMENTROLLUP7].[Name], 'Not Specified') as [DSSDepartmentRollup7Name]
,ISNULL([OBGLOBALSTATISTICSPLAN].[Name], 'Not Specified') as [OBGlobalStatisticsPlan]
,ISNULL([OBREIMBURSEMENTPLAN].[Name], 'Not Specified') as [OBReimbursementPlan]
,ISNULL([OBSERVICELINEPLAN].[Name], 'Not Specified') as [OBServiceLinePlan]
,ISNULL([SPRFPLAN].[Name], 'Not Specified') as [SPRollingForecastPlanName]
,ISNULL([SPLRPLAN].[Name], 'Not Specified') as [SPOperationsPlanName]
,ISNULL([SPLRPLAN_1].[Name], 'Not Specified') as [SPBalanceSheetPlanName]
,ISNULL([PatientTyRo].[Name], 'Not Specified') as [PatientTypeRollupName]
,ISNULL([JobCodeGrp].[Name], 'Not Specified') as [SPJobCodeGroupName]
,ISNULL([PhyGrp].[Name], 'Not Specified') as [SPPhysicianGroupName]
,ISNULL([SPAccountRollup].[Name], 'Not Specified') as [SPAccountRollupName]
,ISNULL([SPHDEPARTMENTROLLUP].[Name], 'Not Specified') as [SPHDepartmentRollupName]
,ISNULL([DEPTTYPE].[Name], 'Not Specified') as [DepartmentType]
,ISNULL([FUND].[Name], 'Not Specified') as [Fund]
,ISNULL([FUND].[SortOrder], 0) as [FundSortOrder]
,ISNULL([FWPROJECT].[Name], 'Not Specified') as [Project]
,ISNULL([FWPROJECT].[SortOrder], 0) as [ProjectSortOrder]
,ISNULL([FWPROJECT].[ProjectID], 0) as [HomeDepartmentID]
,ISNULL([HOMEDEPARTMENT].[Name], 'Not Specified') as [HomeDepartment]
,ISNULL([HOMEDEPARTMENT].[SortOrder], 0) as [HomeDepartmentSortOrder]
,ISNULL([PROGRAM].[Name], 'Not Specified') as [Program]
,ISNULL([PROGRAM].[SortOrder], 0) as [ProgramSortOrder]
,ISNULL([SPHDEPARTMENT].[Name], 'Not Specified') as [SPHDepartmentName]
,ISNULL([PRODUCTIVITYPERCENTILE].[Name], 'Not Specified') as [ProductivityPercentile]
,ISNULL([COMPANDEPARTMENT].[Description], 'Not Specified') as [CompAnDepartment]
, [grp34146F449F3140ECB03A8BC6153DE46F].[Version]FROM [fw].[DimDepartment] grp34146F449F3140ECB03A8BC6153DE46F (readuncommitted)
LEFT JOIN [fw].[viewDimSystem] [SYSTEM] on [SYSTEM].[SystemID] = [grp34146F449F3140ECB03A8BC6153DE46F].[SystemID]
LEFT JOIN [fw].[viewDimEntity] [ENT] on [ENT].[EntityID] = [grp34146F449F3140ECB03A8BC6153DE46F].[EntityID]
LEFT JOIN [fw].[viewDimDepartmentRollup1] [DeptRollup1] on [DeptRollup1].[DepartmentRollup1ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentRollup1ID]
LEFT JOIN [fw].[viewDimDepartmentRollup2] [DeptRollup2] on [DeptRollup2].[DepartmentRollup2ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentRollup2ID]
LEFT JOIN [fw].[viewDimDepartmentRollup3] [DeptRollup3] on [DeptRollup3].[DepartmentRollup3ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentRollup3ID]
LEFT JOIN [fw].[viewDimDepartmentRollup4] [DeptRollup4] on [DeptRollup4].[DepartmentRollup4ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentRollup4ID]
LEFT JOIN [fw].[viewDimDepartmentRollup5] [DeptRollup5] on [DeptRollup5].[DepartmentRollup5ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentRollup5ID]
LEFT JOIN [fw].[viewDimDepartmentRollup6] [DeptRollup6] on [DeptRollup6].[DepartmentRollup6ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentRollup6ID]
LEFT JOIN [fw].[viewDimCareSetting] [CARESETTING] on [CARESETTING].[CareSettingID] = [grp34146F449F3140ECB03A8BC6153DE46F].[CareSettingID]
INNER JOIN [fw].[viewDimFunctionalArea] [FUNCTIONALAREA] on [FUNCTIONALAREA].[FunctionalAreaID] = [grp34146F449F3140ECB03A8BC6153DE46F].[FunctionalAreaID]
LEFT JOIN [fw].[viewDimResearchDepartmentCategory] [RESEARCHDEPARTMENTCATEGORY] on [RESEARCHDEPARTMENTCATEGORY].[ResearchDepartmentCategoryID] = [grp34146F449F3140ECB03A8BC6153DE46F].[ResearchDepartmentCategoryID]
INNER JOIN [dss].[viewDimAttributionType] [ATTRIBUTIONTYPE] on [ATTRIBUTIONTYPE].[AttributionTypeID] = [grp34146F449F3140ECB03A8BC6153DE46F].[AttributionTypeID]
LEFT JOIN [dss].[viewDimDepartmentRollup1] [DSSDEPTROLLUP1] on [DSSDEPTROLLUP1].[DSSDepartmentRollup1ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup1ID]
LEFT JOIN [dss].[viewDimDepartmentRollup2] [DSSDEPTROLLUP2] on [DSSDEPTROLLUP2].[DSSDepartmentRollup2ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup2ID]
LEFT JOIN [dss].[viewDimDepartmentRollup3] [DSSDEPTROLLUP3] on [DSSDEPTROLLUP3].[DSSDepartmentRollup3ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup3ID]
LEFT JOIN [dss].[viewDimDepartmentRollup4] [DSDEPTR4] on [DSDEPTR4].[DSSDepartmentRollup4ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup4ID]
LEFT JOIN [dss].[viewDimDepartmentRollup5] [DSSDEPT5] on [DSSDEPT5].[DSSDepartmentRollup5ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup5ID]
INNER JOIN [dss].[viewDimDepartmentRollup6] [DSSDEPTROLL6] on [DSSDEPTROLL6].[DSSDepartmentRollup6ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup6ID]
LEFT JOIN [dss].[viewDimDepartmentRollup7] [DSSDEPARTMENTROLLUP7] on [DSSDEPARTMENTROLLUP7].[DSSDepartmentRollup7ID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DSSDepartmentRollup7ID]
LEFT JOIN [ob].[viewDimOBGlobalStatisticsPlan] [OBGLOBALSTATISTICSPLAN] on [OBGLOBALSTATISTICSPLAN].[OBGlobalStatisticsPlanID] = [grp34146F449F3140ECB03A8BC6153DE46F].[OBGlobalStatisticsPlanID]
LEFT JOIN [ob].[viewDimOBReimbursementPlan] [OBREIMBURSEMENTPLAN] on [OBREIMBURSEMENTPLAN].[OBReimbursementPlanID] = [grp34146F449F3140ECB03A8BC6153DE46F].[OBReimbursementPlanID]
LEFT JOIN [ob].[viewDimOBServiceLinePlan] [OBSERVICELINEPLAN] on [OBSERVICELINEPLAN].[OBServiceLinePlanID] = [grp34146F449F3140ECB03A8BC6153DE46F].[OBServiceLinePlanID]
LEFT JOIN [sp].[viewDimSPRollingForecastPlan] [SPRFPLAN] on [SPRFPLAN].[SPRollingForecastPlanID] = [grp34146F449F3140ECB03A8BC6153DE46F].[RollingPlanID]
LEFT JOIN [sp].[viewDimSPLongRangePlan] [SPLRPLAN] on [SPLRPLAN].[SPLongRangePlanID] = [grp34146F449F3140ECB03A8BC6153DE46F].[OpsPlanID]
LEFT JOIN [sp].[viewDimSPLongRangePlan] [SPLRPLAN_1] on [SPLRPLAN_1].[SPLongRangePlanID] = [grp34146F449F3140ECB03A8BC6153DE46F].[BalPlanID]
LEFT JOIN [fw].[viewDimPatientTypeRollup] [PatientTyRo] on [PatientTyRo].[PatientTypeRollupID] = [grp34146F449F3140ECB03A8BC6153DE46F].[PatientTypeRollup]
LEFT JOIN [fw].[viewDimJobCodeGroup] [JobCodeGrp] on [JobCodeGrp].[JobCodeGroupID] = [grp34146F449F3140ECB03A8BC6153DE46F].[SPJobCodeGroup]
LEFT JOIN [fw].[viewDimPhysicianGroup] [PhyGrp] on [PhyGrp].[PhysicianGroupID] = [grp34146F449F3140ECB03A8BC6153DE46F].[SPPhysicianGroup]
LEFT JOIN [sp].[viewDimAccountRollup] [SPAccountRollup] on [SPAccountRollup].[AccountRollupID] = [grp34146F449F3140ECB03A8BC6153DE46F].[SPAccountRollup]
LEFT JOIN [fw].[viewDimSPHDepartmentRollup] [SPHDEPARTMENTROLLUP] on [SPHDEPARTMENTROLLUP].[SPHDepartmentRollupID] = [grp34146F449F3140ECB03A8BC6153DE46F].[SPHDepartmentRollupID]
INNER JOIN [fw].[viewDimDepartmentType] [DEPTTYPE] on [DEPTTYPE].[DepartmentTypeID] = [grp34146F449F3140ECB03A8BC6153DE46F].[DepartmentTypeID]
LEFT JOIN [fw].[viewDimFund] [FUND] on [FUND].[FundID] = [grp34146F449F3140ECB03A8BC6153DE46F].[FundID]
LEFT JOIN [fw].[viewDimProject] [FWPROJECT] on [FWPROJECT].[ProjectID] = [grp34146F449F3140ECB03A8BC6153DE46F].[ProjectID]
LEFT JOIN [fw].[viewDimHomeDepartment] [HOMEDEPARTMENT] on [HOMEDEPARTMENT].[HomeDepartmentID] = [grp34146F449F3140ECB03A8BC6153DE46F].[HomeDepartmentID]
LEFT JOIN [fw].[viewDimProgram] [PROGRAM] on [PROGRAM].[ProgramID] = [grp34146F449F3140ECB03A8BC6153DE46F].[ProgramID]
INNER JOIN [fw].[viewDimSPHDepartment_auto] [SPHDEPARTMENT] on [SPHDEPARTMENT].[SPHDepartmentID] = [grp34146F449F3140ECB03A8BC6153DE46F].[SPHDepartmentID]
INNER JOIN [pi].[viewDimProductivityPercentile] [PRODUCTIVITYPERCENTILE] on [PRODUCTIVITYPERCENTILE].[ProductivityPercentileID] = [grp34146F449F3140ECB03A8BC6153DE46F].[ProductivityPercentileID]
INNER JOIN [fw].[viewDimCompAnDepartment] [COMPANDEPARTMENT] on [COMPANDEPARTMENT].[CompAnDepartmentID] = [grp34146F449F3140ECB03A8BC6153DE46F].[CompAnDepartmentID]
GO
---------------------------------------------
-- fw.viewDimDepartment_triggers
CREATE view fw.viewDimDepartment_triggers
as
select
d.FriendlyName as RefreshDimension,
'exec procScoreSetDimensionSecurity30 ''' + cast(d.DimensionGUID as nvarchar(36)) + ''',0,0' as RefreshSQL,
'drop trigger fw.' + tg.Name as DropSQL
from
sys.triggers tg
inner join [dbo].[ScoreDimension] d on tg.name like '%' + replace(cast(d.DimensionGUID as nvarchar(36)),'-', '') + '%' where tg.parent_id in(select t.object_id from sys.tables t inner join sys.schemas s on s.schema_id = t.schema_id where t.name = 'DimDepartment' and s.name = 'fw')
and name like '%ScoreDimension%'
GO
---------------------------------------------
-- fw.viewDimEmployee
CREATE VIEW [fw].[viewDimEmployee]
AS
SELECT
[EmployeeID],
COALESCE([Name],'') as [Name],
[NameLast],
[NameFirst],
[Number],
[JobCodeID],
[Code],
[OBIsDefined],
[WageRate],
[IsProvider],
[ProviderID],
COALESCE([JobCode],'') as [JobCode],
COALESCE([JobCodeCode],'') as [JobCodeCode],
[IsVariable],
[HireDate],
[IsActive],
[Status],
[NextReview],
[MemberGUID],
[HistoryItemGUID],
[WorkWeekOverrideID],
[HomeDepartmentID],
COALESCE([HomeDepartment],'') as [HomeDepartment],
COALESCE([HomeDepartmentCode],'') as [HomeDepartmentCode],
COALESCE([NameFull],'') as [NameFull],
[EmployeeCohortID],
COALESCE([EmployeeCohortName],'') as [EmployeeCohortName],
[EmployeeCohortContractDate],
COALESCE([EmployeeCohortMeritType],'') as [EmployeeCohortMeritType],
[StandardHours],
[FWIsDefined],
[TerminationDate],
[AdjustedHireDate],
[FTETotal],
[HomeAccountID],
COALESCE([HomeAccount],'') as [HomeAccount],
COALESCE([HomeAccountCode],'') as [HomeAccountCode],
[EmployeeClass],
[NPI],
[TransactionID],
[PositionControlNumber] ,[Version]
FROM [fw].[DimEmployee] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimEmployeeCohort
--Last Modified 4/13/2015 3:16 PM
CREATE VIEW [fw].[viewDimEmployeeCohort]
AS
SELECT
grp62E0F8DE46CB42D18A44A996145E4741.[EmployeeCohortID]
,grp62E0F8DE46CB42D18A44A996145E4741.[Name]
,grp62E0F8DE46CB42D18A44A996145E4741.[Code]
,grp62E0F8DE46CB42D18A44A996145E4741.[Description]
,grp62E0F8DE46CB42D18A44A996145E4741.[MeritType]
,grp62E0F8DE46CB42D18A44A996145E4741.[ContractDate]
,grp62E0F8DE46CB42D18A44A996145E4741.[SortOrder]
,grp62E0F8DE46CB42D18A44A996145E4741.[TransactionID]
,grp62E0F8DE46CB42D18A44A996145E4741.[MemberGUID]
,grp62E0F8DE46CB42D18A44A996145E4741.[HistoryItemGUID]
FROM [fw].[DimEmployeeCohort] grp62E0F8DE46CB42D18A44A996145E4741 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimEmployeePH
CREATE VIEW [fw].[viewDimEmployeePH]
AS
SELECT
grpAE7FA4E45FE14270A057580F39CDA6F1.[EmployeePHID]
,grpAE7FA4E45FE14270A057580F39CDA6F1.[Name]
,grpAE7FA4E45FE14270A057580F39CDA6F1.[MemberGUID]
FROM [fw].[DimEmployeePH] grpAE7FA4E45FE14270A057580F39CDA6F1 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimEmployee_source
CREATE VIEW [fw].[viewDimEmployee_source]
AS
SELECT
grp304BAC4BC73943CCBFF4E85B307B146A.[EmployeeID]
,grp304BAC4BC73943CCBFF4E85B307B146A.[Name]
,grp304BAC4BC73943CCBFF4E85B307B146A.[MemberGUID]
,grp304BAC4BC73943CCBFF4E85B307B146A.[HistoryItemGUID]
,grp304BAC4BC73943CCBFF4E85B307B146A.[NameFull]
,grp304BAC4BC73943CCBFF4E85B307B146A.[TransactionID]
,ISNULL([JOBCODE].[Name], 'Not Specified') as [JobCode]
,ISNULL([JOBCODE].[JobCode], 'Not Specified') as [JobCodeCode]
,ISNULL([JOBCODE].[IsVariable], 0) as [IsVariable]
,ISNULL([JOBCODE].[WorkWeekOverrideID], 0) as [WorkWeekOverrideID]
,ISNULL([DEPT].[Name], 'Not Specified') as [HomeDepartment]
,ISNULL([DEPT].[DepartmentCode], 'Not Specified') as [HomeDepartmentCode]
,ISNULL([EMPLOYEECOHORT].[Name], 'Not Specified') as [EmployeeCohortName]
,ISNULL([EMPLOYEECOHORT].[ContractDate], getdate()) as [EmployeeCohortContractDate]
,ISNULL([EMPLOYEECOHORT].[MeritType], 'Not Specified') as [EmployeeCohortMeritType]
,ISNULL([ACCT].[Name], 'Not Specified') as [HomeAccount]
,ISNULL([ACCT].[AccountCode], 'Not Specified') as [HomeAccountCode]
, [grp304BAC4BC73943CCBFF4E85B307B146A].[Version]FROM [fw].[DimEmployee] grp304BAC4BC73943CCBFF4E85B307B146A (readuncommitted)
LEFT JOIN [fw].[viewDimJobCode] [JOBCODE] on [JOBCODE].[JobCodeID] = [grp304BAC4BC73943CCBFF4E85B307B146A].[JobCodeID]
LEFT JOIN [fw].[viewDimDepartment] [DEPT] on [DEPT].[DepartmentID] = [grp304BAC4BC73943CCBFF4E85B307B146A].[HomeDepartmentID]
INNER JOIN [fw].[viewDimEmployeeCohort] [EMPLOYEECOHORT] on [EMPLOYEECOHORT].[EmployeeCohortID] = [grp304BAC4BC73943CCBFF4E85B307B146A].[EmployeeCohortID]
INNER JOIN [fw].[viewDimAccount] [ACCT] on [ACCT].[AccountID] = [grp304BAC4BC73943CCBFF4E85B307B146A].[HomeAccountID]
GO
---------------------------------------------
-- fw.viewDimEntity
CREATE VIEW [fw].[viewDimEntity]
AS
SELECT
[EntityID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[EntityType],
[IsActive],
[CAPIsDefined],
[DSSIsDefined],
[OBIsDefined],
[OBBenefitsDepartmentID],
COALESCE([OBBenefitsDepartment],'') as [OBBenefitsDepartment],
[OBHasGlobalStatisticsPlan],
[OBHasReimbursementPlan],
[OBHasServiceLinePlan],
[OBIsUsingProviderComp],
[SPIsDefined],
[SPGrossChargesPatientTypeRollup],
[SPGrossChargesPayorGroup],
[SPContractualsPatientTypeRollup],
[SPContractualsPayorGroup],
[SPIPVolumesPatientTypeRollup],
[SPIPVolumesPayorGroup],
[SPIPDaysPatientTypeRollup],
[SPIPDaysPayorGroup],
[SPOPVolumesPatientTypeRollup],
[SPOPVolumesPayorGroup],
[SPFTEsJobCodeGroup],
[SPSalariesJobCodeGroup],
[SPClinicGrossChargesPayorGroup],
[SPClinicContractualsPayorGroup],
[SPClinicPrimaryVolumePhysicianGroup],
[SPClinicSecondaryVolumePhysicianGroup],
[SPClinicFTEsPhysicianGroup],
[SPClinicSalariesPhysicianGroup],
[SPOperationsSLDrivenModelID],
[SPRollingForecastSLDrivenModelID],
[SPServiceLineForecastType],
[SecureGroupID],
[WorkWeekID],
[TransactionID],
[PayCycleID],
[HistoryItemGUID],
[MemberGUID],
[CAPDefaultSalesTax],
[FWIsDefined],
[EliminationsDepartmentID],
[CompAnPeerGroupID]
FROM [fw].[DimEntity] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimEntityPH
Create VIEW [fw].[viewDimEntityPH]
AS
SELECT
[EntityPHID],
[Name],
[MemberGUID],
[HistoryItemGUID],
[TransactionID]
FROM [fw].[DimEntityPH] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimEntity_source
CREATE VIEW [fw].[viewDimEntity_source]
AS
SELECT
grpDE819FBD8CE84979B478F0E94260A8F7.[EntityID]
,grpDE819FBD8CE84979B478F0E94260A8F7.[Name]
,grpDE819FBD8CE84979B478F0E94260A8F7.[SecureGroupID]
,grpDE819FBD8CE84979B478F0E94260A8F7.[TransactionID]
,grpDE819FBD8CE84979B478F0E94260A8F7.[HistoryItemGUID]
,grpDE819FBD8CE84979B478F0E94260A8F7.[MemberGUID]
,ISNULL([DEPT].[Name], 'Not Specified') as [OBBenefitsDepartment]
FROM [fw].[DimEntity] grpDE819FBD8CE84979B478F0E94260A8F7 (readuncommitted)
INNER JOIN [fw].[viewDimDepartment] [DEPT] on [DEPT].[DepartmentID] = [grpDE819FBD8CE84979B478F0E94260A8F7].[OBBenefitsDepartmentID]
GO
---------------------------------------------
-- fw.viewDimFiscalMonth
--Last Modified 5/8/2015 5:50 PM
CREATE VIEW [fw].[viewDimFiscalMonth]
AS
SELECT
grpC5A4CCC2DC85403F8A1BD9849CF14E18.[FiscalMonthID]
,coalesce(grpC5A4CCC2DC85403F8A1BD9849CF14E18.[Name],'') as [Name]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[FiscalMonthCode]
,coalesce(grpC5A4CCC2DC85403F8A1BD9849CF14E18.[Abbreviation],'') as [Abbreviation]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[QuarterID]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[SortOrder]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[DaysInMonth]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[YTDDaysInMonth]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[MemberGUID]
,coalesce(grpC5A4CCC2DC85403F8A1BD9849CF14E18.[MonthColumnName],'') as [MonthColumnName]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[HistoryItemGUID]
,grpC5A4CCC2DC85403F8A1BD9849CF14E18.[IsReal]
, [grpC5A4CCC2DC85403F8A1BD9849CF14E18].[Version]FROM [fw].[DimFiscalMonth] grpC5A4CCC2DC85403F8A1BD9849CF14E18 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFiscalTime
--Last Modified 3/15/2022 10:09 PM
CREATE VIEW [fw].[viewDimFiscalTime]
AS
SELECT
grp32094482DE9943D5832B9F8295DACBDF.[FiscalTimeID]
,grp32094482DE9943D5832B9F8295DACBDF.[FiscalTime]
,grp32094482DE9943D5832B9F8295DACBDF.[TransactionID]
,grp32094482DE9943D5832B9F8295DACBDF.[MemberGUID]
,grp32094482DE9943D5832B9F8295DACBDF.[HistoryItemGUID]
,grp32094482DE9943D5832B9F8295DACBDF.[FiscalYearID]
,grp32094482DE9943D5832B9F8295DACBDF.[FiscalMonthID]
,grp32094482DE9943D5832B9F8295DACBDF.[YearMonth]
,grp32094482DE9943D5832B9F8295DACBDF.[CountFromCurrentMonth]
,grp32094482DE9943D5832B9F8295DACBDF.[StartDate]
,grp32094482DE9943D5832B9F8295DACBDF.[EndDate]
FROM [fw].[DimFiscalTime] grp32094482DE9943D5832B9F8295DACBDF (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFiscalYear
--Last Modified 5/8/2015 5:50 PM
CREATE VIEW [fw].[viewDimFiscalYear]
AS
SELECT
grp07DC08C1A3354C289D66B7FAF5CEC935.[FiscalYearID]
,grp07DC08C1A3354C289D66B7FAF5CEC935.[MemberGUID]
,grp07DC08C1A3354C289D66B7FAF5CEC935.[Name]
,grp07DC08C1A3354C289D66B7FAF5CEC935.[SortOrder]
,grp07DC08C1A3354C289D66B7FAF5CEC935.[IsSP]
,grp07DC08C1A3354C289D66B7FAF5CEC935.[HistoryItemGUID]
,grp07DC08C1A3354C289D66B7FAF5CEC935.[IsCAP]
, [grp07DC08C1A3354C289D66B7FAF5CEC935].[Version]FROM [fw].[DimFiscalYear] grp07DC08C1A3354C289D66B7FAF5CEC935 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFiscalYearPH_auto
CREATE VIEW [fw].[viewDimFiscalYearPH_auto]
AS
SELECT
grp74AEECE5F9BE4AAFA6BADD6EF917266F.[Name]
,grp74AEECE5F9BE4AAFA6BADD6EF917266F.[MemberGUID]
,grp74AEECE5F9BE4AAFA6BADD6EF917266F.[FiscalYearPHID]
,grp74AEECE5F9BE4AAFA6BADD6EF917266F.[HistoryItemGUID]
, [grp74AEECE5F9BE4AAFA6BADD6EF917266F].[Version]FROM [fw].[DimFiscalYearPH] grp74AEECE5F9BE4AAFA6BADD6EF917266F (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFlag
--Last Modified 4/12/2019 11:35 AM
CREATE VIEW [fw].[viewDimFlag]
AS
SELECT
grp7ECC55FC3D4F41479EA1C29BC253029B.[FlagID]
,grp7ECC55FC3D4F41479EA1C29BC253029B.[Code]
,grp7ECC55FC3D4F41479EA1C29BC253029B.[Description]
,coalesce(grp7ECC55FC3D4F41479EA1C29BC253029B.[Name],'') as [Name]
,grp7ECC55FC3D4F41479EA1C29BC253029B.[TransactionID]
,grp7ECC55FC3D4F41479EA1C29BC253029B.[MemberGUID]
,grp7ECC55FC3D4F41479EA1C29BC253029B.[HistoryItemGUID]
FROM [fw].[DimFlag] grp7ECC55FC3D4F41479EA1C29BC253029B (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFlexJobCodeGroup
--Last Modified 2/25/2015 11:46 AM
CREATE VIEW [fw].[viewDimFlexJobCodeGroup]
AS
SELECT
grp37D108FB34FF431799A3DD4B6EDB7CDC.[FlexJobCodeGroupID]
,grp37D108FB34FF431799A3DD4B6EDB7CDC.[Name]
,grp37D108FB34FF431799A3DD4B6EDB7CDC.[Code]
,grp37D108FB34FF431799A3DD4B6EDB7CDC.[SortOrder]
,grp37D108FB34FF431799A3DD4B6EDB7CDC.[TransactionID]
,grp37D108FB34FF431799A3DD4B6EDB7CDC.[MemberGUID]
,grp37D108FB34FF431799A3DD4B6EDB7CDC.[HistoryItemGUID]
FROM [fw].[DimFlexJobCodeGroup] grp37D108FB34FF431799A3DD4B6EDB7CDC (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimForecastDetail
CREATE VIEW [fw].[viewDimForecastDetail]
AS
SELECT
[ForecastDetailID],
COALESCE([Name],'') as [Name],
[ForecastDetailCode],
[Description],
[CAPForecastDetailID],
[CPIsDefined],
[OBForecastDetailID],
[OBIsDefined],
[SPAccountRollupID],
[SPIsDefined],
[TransactionID],
[SPCostComponentID],
[MemberGUID],
[HistoryItemGUID]
FROM [fw].[DimForecastDetail] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimForecastDetail_source
CREATE VIEW [fw].[viewDimForecastDetail_source]
AS
SELECT
grp19542254A1554DCB89A76BAACAB6E162.[ForecastDetailID]
,grp19542254A1554DCB89A76BAACAB6E162.[Name]
,grp19542254A1554DCB89A76BAACAB6E162.[TransactionID]
,grp19542254A1554DCB89A76BAACAB6E162.[MemberGUID]
,grp19542254A1554DCB89A76BAACAB6E162.[HistoryItemGUID]
FROM [fw].[DimForecastDetail] grp19542254A1554DCB89A76BAACAB6E162 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFramework
CREATE view [fw].[viewDimFramework]
as
select
fwk.FrameworkID,
fwk.Name,
fwk.Abbreviation,
fwk.FrameworkSchemaName,
fwk.ClientSchemaName,
fwk.IsLatestDataModel,
case when fwk.Name = 'General' then cast(1 as bit) else cast(max(cast(isnull(m.IsLicensed, 0) as int)) as bit) end as IsLicensed,
cast(max(cast(isnull(m.IsSetupComplete, 0) as int)) as bit) as IsSetupComplete
from
[fw].[DimFramework] fwk
left join [dbo].[SystemCenterSolution] s on s.Name = fwk.Name
left join [dbo].[SystemCenterModule] m on m.SolutionGUID = s.SolutionGUID or m.Name = fwk.Name
group by
fwk.FrameworkID,
fwk.Name,
fwk.Abbreviation,
fwk.FrameworkSchemaName,
fwk.ClientSchemaName,
fwk.IsLatestDataModel
GO
---------------------------------------------
-- fw.viewDimFramework_auto
CREATE VIEW [fw].[viewDimFramework_auto]
AS
SELECT
coalesce(grp67F5902643D4451785A9B828FC66FFFD.[Name],'') as [Name]
,grp67F5902643D4451785A9B828FC66FFFD.[MemberGUID]
,grp67F5902643D4451785A9B828FC66FFFD.[FrameworkID]
, [grp67F5902643D4451785A9B828FC66FFFD].[Version], [grp67F5902643D4451785A9B828FC66FFFD].[HistoryItemGUID]FROM [fw].[DimFramework] grp67F5902643D4451785A9B828FC66FFFD (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFunctionalArea
CREATE VIEW [fw].[viewDimFunctionalArea]
AS
SELECT
grp6CD1220F54B84B4F9BA381B12A98DDB4.[FunctionalAreaID]
,grp6CD1220F54B84B4F9BA381B12A98DDB4.[Name]
,grp6CD1220F54B84B4F9BA381B12A98DDB4.[TransactionID]
,grp6CD1220F54B84B4F9BA381B12A98DDB4.[MemberGUID]
,grp6CD1220F54B84B4F9BA381B12A98DDB4.[HistoryItemGUID]
FROM [fw].[DimFunctionalArea] grp6CD1220F54B84B4F9BA381B12A98DDB4 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimFund
--Last Modified 5/27/2015 1:34 PM
CREATE VIEW [fw].[viewDimFund]
AS
SELECT
grp15688121574D4B38A25965FF7CA63FCE.[FundID]
,coalesce(grp15688121574D4B38A25965FF7CA63FCE.[Name],'') as [Name]
,grp15688121574D4B38A25965FF7CA63FCE.[Code]
,grp15688121574D4B38A25965FF7CA63FCE.[Description]
,grp15688121574D4B38A25965FF7CA63FCE.[SortOrder]
,grp15688121574D4B38A25965FF7CA63FCE.[TransactionID]
,grp15688121574D4B38A25965FF7CA63FCE.[MemberGUID]
,grp15688121574D4B38A25965FF7CA63FCE.[HistoryItemGUID]
FROM [fw].[DimFund] grp15688121574D4B38A25965FF7CA63FCE (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimGLAndPayrollInitiative
--Last Modified 9/12/2022 9:10 PM
CREATE VIEW [fw].[viewDimGLAndPayrollInitiative]
AS
SELECT
grpBE8428F4CC9543D192CBE7EBD767DB6C.[GLAndPayrollInitiativeGUID]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[Name]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[Owner]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[Author]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[CostLeader]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[ExecutiveSponsor]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[EffectiveDate]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[AnnualGoal]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[DateCreated]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[GoalStartDate]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[GoalEndDate]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[SavingsEstimate]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[SourceOfSavings]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[Description]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[Workstream]
,grpBE8428F4CC9543D192CBE7EBD767DB6C.[InitiativeStatus]
FROM [cci].[viewDimGLAndPayrollInitiative] grpBE8428F4CC9543D192CBE7EBD767DB6C
GO
---------------------------------------------
-- fw.viewDimGLAndPayrollOpportunity
--Last Modified 9/12/2022 9:10 PM
CREATE VIEW [fw].[viewDimGLAndPayrollOpportunity]
AS
SELECT
grp45B56B6F4F434F229DB3FA943E5107AE.[GLAndPayrollOpportunityGUID]
,grp45B56B6F4F434F229DB3FA943E5107AE.[Name]
,grp45B56B6F4F434F229DB3FA943E5107AE.[Owner]
,grp45B56B6F4F434F229DB3FA943E5107AE.[AnnualGoal]
,grp45B56B6F4F434F229DB3FA943E5107AE.[SavingsEstimate]
,grp45B56B6F4F434F229DB3FA943E5107AE.[OpportunityKey]
,grp45B56B6F4F434F229DB3FA943E5107AE.[DateCreated]
,grp45B56B6F4F434F229DB3FA943E5107AE.[BaselineStartDate]
,grp45B56B6F4F434F229DB3FA943E5107AE.[BaselineEndDate]
,grp45B56B6F4F434F229DB3FA943E5107AE.[SavingsIdentified]
,grp45B56B6F4F434F229DB3FA943E5107AE.[SavingsGoal]
,grp45B56B6F4F434F229DB3FA943E5107AE.[HasInitiative]
,grp45B56B6F4F434F229DB3FA943E5107AE.[SourceOfSavings]
,grp45B56B6F4F434F229DB3FA943E5107AE.[IsHidden]
FROM [cci].[viewDimGLAndPayrollOpportunity] grp45B56B6F4F434F229DB3FA943E5107AE
GO
---------------------------------------------
-- fw.viewDimGLPostDate
CREATE VIEW [fw].[viewDimGLPostDate]
AS
SELECT
DateID AS [GLPostDateID]
,TransactionID
,DayNumberOfWeek
,DayNameOfWeek
,DayNumberOfMonth
,DayNumberOfYear
,WeekNumberOfYear
,IsWeekDay
,CalendarQuarter
,CalendarDateTime
,CalendarYear
,CalendarMonth
,CalendarMonthName
,FiscalYear
,FiscalYearName
,HistoryItemGUID
,MemberGUID
,FiscalMonth
,FiscalQuarter
,YearMonth
,MonthYear
,DaysInMonth
,PremierMapping
FROM [fw].[DimDate];
GO
---------------------------------------------
-- fw.viewDimGLPostDate_auto
--Last Modified 6/8/2020 3:11 PM
CREATE VIEW [fw].[viewDimGLPostDate_auto]
AS
SELECT
grp5D0EB954A8774F2B9816D9D0814D3F9F.[GLPostDateID]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[TransactionID]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[DayNumberOfWeek]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[DayNameOfWeek]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[DayNumberOfMonth]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[DayNumberOfYear]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[WeekNumberOfYear]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[IsWeekDay]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[CalendarQuarter]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[CalendarDateTime]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[CalendarYear]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[CalendarMonth]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[CalendarMonthName]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[FiscalYear]
,coalesce(grp5D0EB954A8774F2B9816D9D0814D3F9F.[FiscalYearName],'') as [FiscalYearName]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[HistoryItemGUID]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[MemberGUID]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[FiscalMonth]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[FiscalQuarter]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[YearMonth]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[MonthYear]
,grp5D0EB954A8774F2B9816D9D0814D3F9F.[DaysInMonth]
,coalesce(grp5D0EB954A8774F2B9816D9D0814D3F9F.[PremierMapping],'') as [PremierMapping]
FROM [fw].[viewDimGLPostDate] grp5D0EB954A8774F2B9816D9D0814D3F9F
GO
---------------------------------------------
-- fw.viewDimGMTestFWProj
CREATE VIEW [fw].[viewDimGMTestFWProj]
AS
SELECT
grpDB12BF7D35E34296A3CBFCDACB880F51.[GMTestFWDateCreated]
,grpDB12BF7D35E34296A3CBFCDACB880F51.[GMTestFWName]
,grpDB12BF7D35E34296A3CBFCDACB880F51.[MemberGUID]
,grpDB12BF7D35E34296A3CBFCDACB880F51.[GMTestFWProjID]
,ISNULL([DimXP].[PlanID], 0) as [PlanID]
,ISNULL([DimXP].[Name], 'Not Specified') as [Name]
FROM [cap].[DimGMTestFWProj] grpDB12BF7D35E34296A3CBFCDACB880F51 (readuncommitted)
INNER JOIN [fw].[viewDimXPlan_auto] [DimXP] on [DimXP].[MemberGUID] = [grpDB12BF7D35E34296A3CBFCDACB880F51].[MemberGUID]
GO
---------------------------------------------
-- fw.viewDimHealthPlanRegion
CREATE VIEW [fw].[viewDimHealthPlanRegion]
AS
SELECT
DepartmentRollup1ID AS [HealthPlanRegionID]
,Name
,Code AS [Code]
,Description
,SortOrder
,SecureGroupID
,MemberGUID
,HistoryItemGUID
,EliminationsDepartmentID
FROM [fw].[DimDepartmentRollup1];
GO
---------------------------------------------
-- fw.viewDimHealthPlanRegion_auto
--Last Modified 10/30/2018 9:41 AM
CREATE VIEW [fw].[viewDimHealthPlanRegion_auto]
AS
SELECT
grp59F984CE07874F708A1B24F9C8376E7D.[HealthPlanRegionID]
,coalesce(grp59F984CE07874F708A1B24F9C8376E7D.[Name],'') as [Name]
,grp59F984CE07874F708A1B24F9C8376E7D.[Code]
,grp59F984CE07874F708A1B24F9C8376E7D.[Description]
,grp59F984CE07874F708A1B24F9C8376E7D.[SortOrder]
,grp59F984CE07874F708A1B24F9C8376E7D.[SecureGroupID]
,grp59F984CE07874F708A1B24F9C8376E7D.[MemberGUID]
,grp59F984CE07874F708A1B24F9C8376E7D.[HistoryItemGUID]
,grp59F984CE07874F708A1B24F9C8376E7D.[EliminationsDepartmentID]
FROM [fw].[viewDimHealthPlanRegion] grp59F984CE07874F708A1B24F9C8376E7D
GO
---------------------------------------------
-- fw.viewDimHomeDepartment
--Last Modified 5/26/2015 10:11 AM
CREATE VIEW [fw].[viewDimHomeDepartment]
AS
SELECT
grp4A1ECAA1FE314B2F8C73E9A238625529.[HomeDepartmentID]
,coalesce(grp4A1ECAA1FE314B2F8C73E9A238625529.[Name],'') as [Name]
,grp4A1ECAA1FE314B2F8C73E9A238625529.[Code]
,grp4A1ECAA1FE314B2F8C73E9A238625529.[Description]
,grp4A1ECAA1FE314B2F8C73E9A238625529.[SortOrder]
,grp4A1ECAA1FE314B2F8C73E9A238625529.[TransactionID]
,grp4A1ECAA1FE314B2F8C73E9A238625529.[MemberGUID]
,grp4A1ECAA1FE314B2F8C73E9A238625529.[HistoryItemGUID]
FROM [fw].[DimHomeDepartment] grp4A1ECAA1FE314B2F8C73E9A238625529 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimInitiative
CREATE VIEW [fw].[viewDimInitiative]
AS
SELECT
grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Name]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Description]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[MemberGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[MemberGUID] AS [InitiativeGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[HistoryItemGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[TransactionID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeStatusID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeStatus]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[AuthorGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Author]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[CostLeaderGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[CostLeader]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[OwnerGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Owner]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[ExecutiveSponsorGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[ExecutiveSponsor]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[SourceOfSavingsID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[SourceOfSavings]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Workstream]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[DateCreated]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[EffectiveDate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[GoalStartDate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[GoalEndDate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[AnnualGoal]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[SavingsEstimate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeRollup1ID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeRollup1]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeRollup2ID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeRollup2]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeRollup3ID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeRollup3]
FROM [fw].[DimInitiative] grp63E2E9DC1F4747C7A31CA6E43ECE1FF4
GO
---------------------------------------------
-- fw.viewDimInitiativeStatus
--Last Modified 10/31/2018 10:40 AM
CREATE VIEW [fw].[viewDimInitiativeStatus]
AS
SELECT
grpC9DC306912F4434CA7D806FB28CC0AF9.[InitiativeStatusID]
,grpC9DC306912F4434CA7D806FB28CC0AF9.[Name]
,grpC9DC306912F4434CA7D806FB28CC0AF9.[MemberGUID]
,grpC9DC306912F4434CA7D806FB28CC0AF9.[HistoryItemGUID]
,grpC9DC306912F4434CA7D806FB28CC0AF9.[TransactionID]
FROM [fw].[DimInitiativeStatus] grpC9DC306912F4434CA7D806FB28CC0AF9 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimInitiative_auto
--Last Modified 7/10/2024 5:05 PM
CREATE VIEW [fw].[viewDimInitiative_auto]
AS
SELECT
grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Name]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[TransactionID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[MemberGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[HistoryItemGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Description]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Workstream]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[DateCreated]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[Author]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[EffectiveDate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[SourceOfSavingsId]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[SourceOfSavings]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[InitiativeStatusID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[GoalStartDate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[GoalEndDate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[CostLeaderGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[AnnualGoal]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[SavingsEstimate]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[OwnerGUID]
,grp63E2E9DC1F4747C7A31CA6E43ECE1FF4.[ExecutiveSponsorGUID]
,ISNULL([INITIATIVESTATUS].[Name], 'Not Specified') as [InitiativeStatus]
,ISNULL([CICOSTLEADER].[NameFull], 'Not Specified') as [CostLeader]
,ISNULL([CIOWNER].[NameFull], 'Not Specified') as [Owner]
,ISNULL([CIEXECUTIVESPONSOR].[NameFull], 'Not Specified') as [ExecutiveSponsor]
FROM [fw].[viewDimInitiative] grp63E2E9DC1F4747C7A31CA6E43ECE1FF4
INNER JOIN [fw].[viewDimInitiativeStatus] [INITIATIVESTATUS] on [INITIATIVESTATUS].[InitiativeStatusID] = [grp63E2E9DC1F4747C7A31CA6E43ECE1FF4].[InitiativeStatusID]
INNER JOIN [fw].[viewDimCICostLeader_auto] [CICOSTLEADER] on [CICOSTLEADER].[CICostLeaderID] = [grp63E2E9DC1F4747C7A31CA6E43ECE1FF4].[CostLeaderGUID]
INNER JOIN [fw].[viewDimCIOwner_auto] [CIOWNER] on [CIOWNER].[CIOwnerID] = [grp63E2E9DC1F4747C7A31CA6E43ECE1FF4].[OwnerGUID]
INNER JOIN [fw].[viewDimCIExecutiveSponsor_auto] [CIEXECUTIVESPONSOR] on [CIEXECUTIVESPONSOR].[CIExecutiveSponsorID] = [grp63E2E9DC1F4747C7A31CA6E43ECE1FF4].[ExecutiveSponsorGUID]
GO
---------------------------------------------
-- fw.viewDimJobCode
--Last Modified 8/21/2024 10:16 AM
CREATE VIEW [fw].[viewDimJobCode]
AS
SELECT
grpAAD69FC0ED76427EA52ED356470BFE0A.[JobCodeID]
,coalesce(grpAAD69FC0ED76427EA52ED356470BFE0A.[Name],'') as [Name]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[JobCode]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[Description]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[JobCodeGroupID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsVariable]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsPR]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsDaily]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsActive]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsProvider]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsAgency]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSIsDefined]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSCostingRollup]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSRate]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[OBIsDefined]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[FlexBucketGUID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[SPIsDefined]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[Rollup]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[Variability]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[MemberGUID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[FlexJobCodeGroupID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[HistoryItemGUID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[WorkWeekOverrideID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSCostingRollup2]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSCostingRollup3]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[FWIsDefined]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[PRIsDefined]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[CIIsDefined]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsPatientCare]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsBedside]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[IsLicensed]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[ManagementLevel]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSCostComponentID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[SkillMix]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSJobCodeRollup1ID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSJobCodeRollup2ID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[DSSJobCodeRollup3ID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[SPHJobCodeRollupID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[SPHJobCodeRollupIsValidated]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[TransactionID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[SPHVariability]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[StaffingCategoryID]
,grpAAD69FC0ED76427EA52ED356470BFE0A.[SPHJobCodeRollupConfidenceScore]
,ISNULL([JobCodeGrp].[Name], 'Not Specified') as [JobCodeGroup]
,ISNULL([FLEXJOBCODEGROUP].[Name], 'Not Specified') as [FlexJobCodeGroup]
,ISNULL([DSJCROL].[Name], 'Not Specified') as [DSSCostComponent]
,ISNULL([DSJCROL_1].[Name], 'Not Specified') as [DSSJobCodeRollup1]
,ISNULL([DSSJOBCODEROLLUP2].[Name], 'Not Specified') as [DSSJobCodeRollup2]
,ISNULL([DSSJOBCODEROLLUP3].[Name], 'Not Specified') as [DSSJobCodeRollup3]
,ISNULL([SPHJOBCODEROLLUP].[Name], 'Not Specified') as [SPHJobCodeRollupName]
,ISNULL([SPHJOBCODEROLLUP].[SPHCostComponent], 'Not Specified') as [SPHCostComponent]
,ISNULL([STAFFINGCATEGORY].[Name], 'Not Specified') as [StaffingCategory]
, [grpAAD69FC0ED76427EA52ED356470BFE0A].[Version]FROM [fw].[DimJobCode] grpAAD69FC0ED76427EA52ED356470BFE0A (readuncommitted)
LEFT JOIN [fw].[viewDimJobCodeGroup] [JobCodeGrp] on [JobCodeGrp].[JobCodeGroupID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[JobCodeGroupID]
LEFT JOIN [fw].[viewDimFlexJobCodeGroup] [FLEXJOBCODEGROUP] on [FLEXJOBCODEGROUP].[FlexJobCodeGroupID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[FlexJobCodeGroupID]
INNER JOIN [dss].[viewDimDSSJobCodeRollup1] [DSJCROL] on [DSJCROL].[DSSJobCodeRollup1ID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[DSSCostComponentID]
INNER JOIN [dss].[viewDimDSSJobCodeRollup1] [DSJCROL_1] on [DSJCROL_1].[DSSJobCodeRollup1ID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[DSSJobCodeRollup1ID]
LEFT JOIN [dss].[viewDimJobCodeRollup2] [DSSJOBCODEROLLUP2] on [DSSJOBCODEROLLUP2].[DSSJobCodeRollup2ID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[DSSJobCodeRollup2ID]
INNER JOIN [dss].[viewDimJobCodeRollup3] [DSSJOBCODEROLLUP3] on [DSSJOBCODEROLLUP3].[DSSJobCodeRollup3ID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[DSSJobCodeRollup3ID]
INNER JOIN [fw].[viewDimSPHJobCodeRollup] [SPHJOBCODEROLLUP] on [SPHJOBCODEROLLUP].[SPHJobCodeRollupID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[SPHJobCodeRollupID]
INNER JOIN [fw].[viewDimStaffingCategory_auto] [STAFFINGCATEGORY] on [STAFFINGCATEGORY].[StaffingCategoryID] = [grpAAD69FC0ED76427EA52ED356470BFE0A].[StaffingCategoryID]
GO
---------------------------------------------
-- fw.viewDimJobCodeGroup
CREATE VIEW [fw].[viewDimJobCodeGroup]
AS
SELECT
[JobCodeGroupID],
[Category],
[Name],
[SPStaffType],
[SPSalariesFinancialReportingID],
[SPFTEsFinancialReportingID],
[SPDefaultVolumeDriver],
[CAPFinancialReportingID],
[IsSP],
[IsCapital],
[IsOB],
[IsMR],
[IsDSS],
[SortOrder],
COALESCE([SPSalariesFinancialReporting],'') as [SPSalariesFinancialReporting],
COALESCE([SPFTEsFinancialReporting],'') as [SPFTEsFinancialReporting],
COALESCE([CAPFinancialReporting],'') as [CAPFinancialReporting],
[MemberGUID],
[WorkWeekOverrideID] ,[HistoryItemGUID]
FROM [fw].[DimJobCodeGroup] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimJobCodeGroupPH
CREATE VIEW [fw].[viewDimJobCodeGroupPH]
AS
SELECT
[JobCodeGroupPHID],
[MemberGUID],
[Name] ,[HistoryItemGUID]
FROM [fw].[DimJobCodeGroupPH] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimJobCodeGroupPH_source
CREATE VIEW [fw].[viewDimJobCodeGroupPH_source]
AS
SELECT
grpDC670445EFFE4323B34B44C1C17F8B0C.[JobCodeGroupPHID]
,grpDC670445EFFE4323B34B44C1C17F8B0C.[MemberGUID]
, [grpDC670445EFFE4323B34B44C1C17F8B0C].[HistoryItemGUID]FROM [fw].[DimJobCodeGroupPH] grpDC670445EFFE4323B34B44C1C17F8B0C (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimJobCodeGroup_source
CREATE VIEW [fw].[viewDimJobCodeGroup_source]
AS
SELECT
grpCC17B05111184E228AA364D935410A33.[JobCodeGroupID]
,grpCC17B05111184E228AA364D935410A33.[MemberGUID]
,ISNULL([SPFINANCIALREP].[Name], 'Not Specified') as [SPSalariesFinancialReporting]
,ISNULL([SPFINANCIALREP_1].[Name], 'Not Specified') as [SPFTEsFinancialReporting]
,ISNULL([CAPFINANCIALREP].[Name], 'Not Specified') as [CAPFinancialReporting]
, [grpCC17B05111184E228AA364D935410A33].[HistoryItemGUID]FROM [fw].[DimJobCodeGroup] grpCC17B05111184E228AA364D935410A33 (readuncommitted)
LEFT JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP] on [SPFINANCIALREP].[FinancialReportingID] = [grpCC17B05111184E228AA364D935410A33].[SPSalariesFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_1] on [SPFINANCIALREP_1].[FinancialReportingID] = [grpCC17B05111184E228AA364D935410A33].[SPFTEsFinancialReportingID]
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP] on [CAPFINANCIALREP].[FinancialReportingID] = [grpCC17B05111184E228AA364D935410A33].[CAPFinancialReportingID]
GO
---------------------------------------------
-- fw.viewDimJobCodePH
CREATE VIEW [fw].[viewDimJobCodePH]
AS
SELECT
grpB5738AC6D8C2411DAAA2747D17D10AC1.[JobCodePHID]
,grpB5738AC6D8C2411DAAA2747D17D10AC1.[Name]
,grpB5738AC6D8C2411DAAA2747D17D10AC1.[MemberGUID]
FROM [fw].[DimJobCodePH] grpB5738AC6D8C2411DAAA2747D17D10AC1 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimLineNumber
CREATE VIEW [fw].[viewDimLineNumber]
AS
SELECT
grpFF26C92DA42548758DE9652EF433A8D7.[LineNumberID]
,grpFF26C92DA42548758DE9652EF433A8D7.[MemberGUID]
,grpFF26C92DA42548758DE9652EF433A8D7.[HistoryItemGUID]
FROM [fw].[DimLineNumber] grpFF26C92DA42548758DE9652EF433A8D7 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimManufacturer
--Last Modified 8/11/2015 12:21 PM
CREATE VIEW [fw].[viewDimManufacturer]
AS
SELECT
grp4B506B64C5C141E3A75D30F00344E01C.[ManufacturerID]
,coalesce(grp4B506B64C5C141E3A75D30F00344E01C.[Name],'') as [Name]
,grp4B506B64C5C141E3A75D30F00344E01C.[Code]
,grp4B506B64C5C141E3A75D30F00344E01C.[Description]
,grp4B506B64C5C141E3A75D30F00344E01C.[MemberGUID]
,grp4B506B64C5C141E3A75D30F00344E01C.[TransactionID]
,grp4B506B64C5C141E3A75D30F00344E01C.[HistoryItemGUID]
FROM [fw].[DimManufacturer] grp4B506B64C5C141E3A75D30F00344E01C (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimMedicalSurgical
CREATE VIEW [fw].[viewDimMedicalSurgical]
AS
SELECT
grp78A79D4B760C4847814C610A03087D52.[MedicalSurgicalID]
,grp78A79D4B760C4847814C610A03087D52.[Name]
,grp78A79D4B760C4847814C610A03087D52.[MemberGUID]
,grp78A79D4B760C4847814C610A03087D52.[HistoryItemGUID]
,grp78A79D4B760C4847814C610A03087D52.[TransactionID]
,grp78A79D4B760C4847814C610A03087D52.[Code]
,grp78A79D4B760C4847814C610A03087D52.[SortOrder]
FROM [fw].[DimMedicalSurgical] grp78A79D4B760C4847814C610A03087D52 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimModelingServiceLine
CREATE VIEW [fw].[viewDimModelingServiceLine]
AS
SELECT
[ModelingServiceLineID],
COALESCE([Name],'') as [Name],
[PatientClassID],
[ServiceLineID],
[MedicalSurgicalID],
[AgeCohortID],
COALESCE([SortOrder],'') as [SortOrder],
COALESCE([PatientClass],'') as [PatientClass],
COALESCE([PatientClassCode],'') as [PatientClassCode],
[PatientClassSortOrder],
COALESCE([ServiceLine],'') as [ServiceLine],
COALESCE([ServiceLineCode],'') as [ServiceLineCode],
[ServiceLineSortOrder],
COALESCE([ServiceLineRollup],'') as [ServiceLineRollup],
[ServiceLineRollupSortOrder],
COALESCE([MedicalSurgical],'') as [MedicalSurgical],
COALESCE([MedicalSurgicalCode],'') as [MedicalSurgicalCode],
[MedicalSurgicalSortOrder],
COALESCE([AgeCohort],'') as [AgeCohort],
COALESCE([AgeCohortCode],'') as [AgeCohortCode],
[AgeCohortSortOrder],
[TransactionID],
[MemberGUID],
[HistoryItemGUID]
FROM [fw].[DimModelingServiceLine] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimModelingServiceLinePH
CREATE VIEW [fw].[viewDimModelingServiceLinePH]
AS
SELECT
grp0760A281D6F040D39AF8F219869FCF1B.[ModelingServiceLinePHID]
,grp0760A281D6F040D39AF8F219869FCF1B.[Name]
,grp0760A281D6F040D39AF8F219869FCF1B.[MemberGUID]
,grp0760A281D6F040D39AF8F219869FCF1B.[HistoryItemGUID]
,grp0760A281D6F040D39AF8F219869FCF1B.[TransactionID]
FROM [fw].[DimModelingServiceLinePH] grp0760A281D6F040D39AF8F219869FCF1B (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimModelingServiceLine_source
CREATE VIEW [fw].[viewDimModelingServiceLine_source]
AS
SELECT
grpB6F9DA58A60D41B485FFBF15F95D40EF.[ModelingServiceLineID]
,grpB6F9DA58A60D41B485FFBF15F95D40EF.[Name]
,grpB6F9DA58A60D41B485FFBF15F95D40EF.[SortOrder]
,grpB6F9DA58A60D41B485FFBF15F95D40EF.[TransactionID]
,grpB6F9DA58A60D41B485FFBF15F95D40EF.[MemberGUID]
,grpB6F9DA58A60D41B485FFBF15F95D40EF.[HistoryItemGUID]
,ISNULL([PATIENTCLASS].[Name], 'Not Specified') as [PatientClass]
,ISNULL([PATIENTCLASS].[Code], 'Not Specified') as [PatientClassCode]
,ISNULL([PATIENTCLASS].[SortOrder], 0) as [PatientClassSortOrder]
,ISNULL([SL].[Name], 'Not Specified') as [ServiceLine]
,ISNULL([SL].[Code], 'Not Specified') as [ServiceLineCode]
,ISNULL([SL].[SortOrder], 0) as [ServiceLineSortOrder]
,ISNULL([SL].[Rollup], 'Not Specified') as [ServiceLineRollup]
,ISNULL([SL].[RollupSortOrder], 0) as [ServiceLineRollupSortOrder]
,ISNULL([MEDICALSURGICAL].[Name], 'Not Specified') as [MedicalSurgical]
,ISNULL([MEDICALSURGICAL].[Code], 'Not Specified') as [MedicalSurgicalCode]
,ISNULL([MEDICALSURGICAL].[SortOrder], 0) as [MedicalSurgicalSortOrder]
,ISNULL([AGECOHORT].[Name], 'Not Specified') as [AgeCohort]
,ISNULL([AGECOHORT].[Code], 'Not Specified') as [AgeCohortCode]
,ISNULL([AGECOHORT].[SortOrder], 0) as [AgeCohortSortOrder]
FROM [fw].[DimModelingServiceLine] grpB6F9DA58A60D41B485FFBF15F95D40EF (readuncommitted)
INNER JOIN [fw].[viewDimPatientClass] [PATIENTCLASS] on [PATIENTCLASS].[PatientClassID] = [grpB6F9DA58A60D41B485FFBF15F95D40EF].[PatientClassID]
INNER JOIN [fw].[viewDimServiceLine] [SL] on [SL].[ServiceLineID] = [grpB6F9DA58A60D41B485FFBF15F95D40EF].[ServiceLineID]
INNER JOIN [fw].[viewDimMedicalSurgical] [MEDICALSURGICAL] on [MEDICALSURGICAL].[MedicalSurgicalID] = [grpB6F9DA58A60D41B485FFBF15F95D40EF].[MedicalSurgicalID]
INNER JOIN [fw].[viewDimAgeCohort] [AGECOHORT] on [AGECOHORT].[AgeCohortID] = [grpB6F9DA58A60D41B485FFBF15F95D40EF].[AgeCohortID]
GO
---------------------------------------------
-- fw.viewDimOpportunity
CREATE VIEW [fw].[viewDimOpportunity]
AS
SELECT
grpB205B5DB5DD943E7B55EB4AC84FCFF14.[OpportunityKey]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Name]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[MemberGUID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[MemberGUID] [OpportunityGUID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[HistoryItemGUID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[TransactionID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[EntityID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SourceOfSavingsID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[IsHidden]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[HasInitiative]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeGUID]
,ISNULL([ENT].[Name], 'Not Specified') AS [Entity]
,ISNULL([ENT].[Code], 'Not Specified') AS [Code]
,ISNULL([ENT].[Description], 'Not Specified') AS [Description]
,ISNULL([ENT].[SortOrder], 0) AS [SortOrder]
,ISNULL([ENT].[EntityType], 0) AS [EntityType]
,ISNULL([ENT].[IsActive], 0) AS [IsActive]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SourceOfSavings]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Initiative]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeStatus]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.Owner
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.CostLeader
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.ExecutiveSponsor
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.Workstream
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.DateCreated
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.BaselineStartDate
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.BaselineEndDate
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.SavingsIdentified
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.SavingsGoal
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.AnnualGoal
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.SavingsEstimate
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeStatusID
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeRollup1Id
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeRollup1
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeRollup2Id
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeRollup2
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeRollup3Id
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.InitiativeRollup3
FROM [fw].[DimOpportunity] grpB205B5DB5DD943E7B55EB4AC84FCFF14
LEFT OUTER JOIN [fw].[viewDimEntity] [ENT] ON [ENT].[EntityID] = [grpB205B5DB5DD943E7B55EB4AC84FCFF14].[EntityID]
GO
---------------------------------------------
-- fw.viewDimOpportunity_auto
--Last Modified 6/12/2024 5:33 PM
CREATE VIEW [fw].[viewDimOpportunity_auto]
AS
SELECT
grpB205B5DB5DD943E7B55EB4AC84FCFF14.[OpportunityKey]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Name]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[TransactionID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[MemberGUID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[HistoryItemGUID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[DateCreated]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[BaselineStartDate]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[OpportunityGUID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[AnnualGoal]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SavingsEstimate]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeRollup1]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeRollup2]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[BaselineEndDate]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[EntityID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SavingsIdentified]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeRollup3]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeRollup1Id]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SavingsGoal]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Entity],'') as [Entity]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Code],'') as [Code]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeRollup2Id]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeRollup3Id]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Description],'') as [Description]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SortOrder]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeStatusID]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[EntityType]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[IsActive]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SourceOfSavingsID]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[SourceOfSavings],'') as [SourceOfSavings]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[IsHidden]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[HasInitiative]
,grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeGUID]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Initiative],'') as [Initiative]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[InitiativeStatus],'') as [InitiativeStatus]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[CostLeader],'') as [CostLeader]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Owner],'') as [Owner]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[ExecutiveSponsor],'') as [ExecutiveSponsor]
,coalesce(grpB205B5DB5DD943E7B55EB4AC84FCFF14.[Workstream],'') as [Workstream]
FROM [fw].[viewDimOpportunity] grpB205B5DB5DD943E7B55EB4AC84FCFF14
GO
---------------------------------------------
-- fw.viewDimPatientClass
CREATE VIEW [fw].[viewDimPatientClass]
AS
SELECT
grp30F99B15877C4FA6B62ED8D6E563E438.[PatientClassID]
,grp30F99B15877C4FA6B62ED8D6E563E438.[Name]
,grp30F99B15877C4FA6B62ED8D6E563E438.[Code]
,grp30F99B15877C4FA6B62ED8D6E563E438.[SortOrder]
,grp30F99B15877C4FA6B62ED8D6E563E438.[IsActive]
,grp30F99B15877C4FA6B62ED8D6E563E438.[IncludeInAdjustedCalculations]
,grp30F99B15877C4FA6B62ED8D6E563E438.[TransactionID]
,grp30F99B15877C4FA6B62ED8D6E563E438.[MemberGUID]
,grp30F99B15877C4FA6B62ED8D6E563E438.[OBServiceLinePrimaryVolumeAccountID]
,grp30F99B15877C4FA6B62ED8D6E563E438.[HistoryItemGUID]
FROM [fw].[DimPatientClass] grp30F99B15877C4FA6B62ED8D6E563E438 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPatientReimbursementGroup
CREATE VIEW [fw].[viewDimPatientReimbursementGroup]
AS
SELECT
[PatientReimbursementGroupID],
COALESCE([Name],'') as [Name],
[PatientClassID],
[CareSettingID],
COALESCE([Code],'') as [Code],
COALESCE([SortOrder],'') as [SortOrder],
COALESCE([PatientClass],'') as [PatientClass],
COALESCE([PatientClassCode],'') as [PatientClassCode],
[PatientClassSortOrder],
COALESCE([CareSetting],'') as [CareSetting],
COALESCE([CareSettingCode],'') as [CareSettingCode],
[CareSettingSortOrder],
[TransactionID],
[MemberGUID],
[HistoryItemGUID]
FROM [fw].[DimPatientReimbursementGroup] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPatientReimbursementGroupPH
CREATE VIEW [fw].[viewDimPatientReimbursementGroupPH]
AS
SELECT
grp7A426BF8FC8F4EBF8A76AA76229A06F2.[PatientReimbursementGroupPHID]
,grp7A426BF8FC8F4EBF8A76AA76229A06F2.[Name]
,grp7A426BF8FC8F4EBF8A76AA76229A06F2.[MemberGUID]
,grp7A426BF8FC8F4EBF8A76AA76229A06F2.[HistoryItemGUID]
,grp7A426BF8FC8F4EBF8A76AA76229A06F2.[TransactionID]
FROM [fw].[DimPatientReimbursementGroupPH] grp7A426BF8FC8F4EBF8A76AA76229A06F2 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPatientReimbursementGroup_source
CREATE VIEW [fw].[viewDimPatientReimbursementGroup_source]
AS
SELECT
grp795F9572D0D04ED390051C3D7CD34946.[PatientReimbursementGroupID]
,grp795F9572D0D04ED390051C3D7CD34946.[Name]
,grp795F9572D0D04ED390051C3D7CD34946.[Code]
,grp795F9572D0D04ED390051C3D7CD34946.[SortOrder]
,grp795F9572D0D04ED390051C3D7CD34946.[TransactionID]
,grp795F9572D0D04ED390051C3D7CD34946.[MemberGUID]
,grp795F9572D0D04ED390051C3D7CD34946.[HistoryItemGUID]
,ISNULL([PATIENTCLASS].[Name], 'Not Specified') as [PatientClass]
,ISNULL([PATIENTCLASS].[Code], 'Not Specified') as [PatientClassCode]
,ISNULL([PATIENTCLASS].[SortOrder], 0) as [PatientClassSortOrder]
,ISNULL([CARESETTING].[Name], 'Not Specified') as [CareSetting]
,ISNULL([CARESETTING].[Code], 'Not Specified') as [CareSettingCode]
,ISNULL([CARESETTING].[SortOrder], 0) as [CareSettingSortOrder]
FROM [fw].[DimPatientReimbursementGroup] grp795F9572D0D04ED390051C3D7CD34946 (readuncommitted)
LEFT JOIN [fw].[viewDimPatientClass] [PATIENTCLASS] on [PATIENTCLASS].[PatientClassID] = [grp795F9572D0D04ED390051C3D7CD34946].[PatientClassID]
LEFT JOIN [fw].[viewDimCareSetting] [CARESETTING] on [CARESETTING].[CareSettingID] = [grp795F9572D0D04ED390051C3D7CD34946].[CareSettingID]
GO
---------------------------------------------
-- fw.viewDimPatientType
--Last Modified 11/16/2020 3:28 PM
CREATE VIEW [fw].[viewDimPatientType]
AS
SELECT
grpF76658C4B97240B881CAF29A84373B98.[PatientTypeID]
,coalesce(grpF76658C4B97240B881CAF29A84373B98.[Name],'') as [Name]
,grpF76658C4B97240B881CAF29A84373B98.[Code]
,grpF76658C4B97240B881CAF29A84373B98.[Description]
,grpF76658C4B97240B881CAF29A84373B98.[PatientTypeRollupID]
,grpF76658C4B97240B881CAF29A84373B98.[MemberGUID]
,grpF76658C4B97240B881CAF29A84373B98.[HistoryItemGUID]
,grpF76658C4B97240B881CAF29A84373B98.[DSSRollup]
,grpF76658C4B97240B881CAF29A84373B98.[TransactionID]
,ISNULL([PatientTyRo].[Name], 'Not Specified') as [PatientTypeRollupName]
,ISNULL([PatientTyRo].[Sg2PatientTypeRollup], 'Not Specified') as [Sg2PatientTypeRollup]
FROM [fw].[DimPatientType] grpF76658C4B97240B881CAF29A84373B98 (readuncommitted)
LEFT JOIN [fw].[viewDimPatientTypeRollup] [PatientTyRo] on [PatientTyRo].[PatientTypeRollupID] = [grpF76658C4B97240B881CAF29A84373B98].[PatientTypeRollupID]
GO
---------------------------------------------
-- fw.viewDimPatientTypeRollup
CREATE VIEW [fw].[viewDimPatientTypeRollup]
AS
SELECT
[PatientTypeRollupID],
[Type],
[Name],
[PatientClassID],
[SortOrder],
[IsSP],
[CareSettingID],
[IsCapital],
[IsOB],
[IsMR],
[IsDSS],
[SPChargesFinancialReportingID],
[SPContractualsFinancialReportingID],
[SPPrimaryStatisticFinancialReportingID],
[SPSecondaryStatisticFinancialReportingID],
[SPTertiaryStatisticFinancialReportingID],
[CAPChargesFinancialReportingID],
[CAPContractualsFinancialReportingID],
[CAPPrimaryStatisticFinancialReportingID],
[CAPSecondaryStatisticFinancialReportingID],
COALESCE([SPChargesFinancialReporting],'') as [SPChargesFinancialReporting],
COALESCE([SPContractualsFinancialReporting],'') as [SPContractualsFinancialReporting],
COALESCE([SPPrimaryStatisticFinancialReporting],'') as [SPPrimaryStatisticFinancialReporting],
COALESCE([PatientClassName],'') as [PatientClassName],
COALESCE([CareSettingName],'') as [CareSettingName],
COALESCE([SPSecondaryStatisticFinancialReporting],'') as [SPSecondaryStatisticFinancialReporting],
COALESCE([SPTertiaryStatisticFinancialReporting],'') as [SPTertiaryStatisticFinancialReporting],
COALESCE([SPPrimaryStatisticFinancialReportingLineName],'') as [SPPrimaryStatisticFinancialReportingLineName],
COALESCE([SPSecondaryStatisticFinancialReportingLineName],'') as [SPSecondaryStatisticFinancialReportingLineName],
COALESCE([SPTertiaryStatisticFinancialReportingLineName],'') as [SPTertiaryStatisticFinancialReportingLineName],
COALESCE([CAPChargesFinancialReporting],'') as [CAPChargesFinancialReporting],
COALESCE([CAPContractualsFinancialReporting],'') as [CAPContractualsFinancialReporting],
COALESCE([CAPPrimaryStatisticFinancialReporting],'') as [CAPPrimaryStatisticFinancialReporting],
COALESCE([CAPSecondaryStatisticFinancialReporting],'') as [CAPSecondaryStatisticFinancialReporting],
[MemberGUID],
[HistoryItemGUID],
COALESCE([CAPPrimaryStatisticFinancialReportingLineName],'') as [CAPPrimaryStatisticFinancialReportingLineName],
COALESCE([CAPSecondaryStatisticFinancialReportingLineName],'') as [CAPSecondaryStatisticFinancialReportingLineName],
[Sg2PatientTypeRollup] ,[Version]
FROM [fw].[DimPatientTypeRollup] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPatientTypeRollupPH
CREATE VIEW [fw].[viewDimPatientTypeRollupPH]
AS
SELECT
grpB3573F00604F4FA28AF6435494C52F6C.[PatientTypeRollupPHID]
,grpB3573F00604F4FA28AF6435494C52F6C.[Name]
,grpB3573F00604F4FA28AF6435494C52F6C.[MemberGUID]
,grpB3573F00604F4FA28AF6435494C52F6C.[HistoryItemGUID]
FROM [fw].[DimPatientTypeRollupPH] grpB3573F00604F4FA28AF6435494C52F6C (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPatientTypeRollup_source
CREATE VIEW [fw].[viewDimPatientTypeRollup_source]
AS
SELECT
grpFE81F461D5C6457B8209E3E5F86A30DB.[PatientTypeRollupID]
,grpFE81F461D5C6457B8209E3E5F86A30DB.[MemberGUID]
,grpFE81F461D5C6457B8209E3E5F86A30DB.[HistoryItemGUID]
,ISNULL([PATIENTCLASS].[Name], 'Not Specified') as [PatientClassName]
,ISNULL([CARESETTING].[Name], 'Not Specified') as [CareSettingName]
,ISNULL([SPFINANCIALREP].[Name], 'Not Specified') as [SPChargesFinancialReporting]
,ISNULL([SPFINANCIALREP_1].[Name], 'Not Specified') as [SPContractualsFinancialReporting]
,ISNULL([SPFINANCIALREP_2].[Name], 'Not Specified') as [SPPrimaryStatisticFinancialReporting]
,ISNULL([SPFINANCIALREP_2].[LineName], 'Not Specified') as [SPPrimaryStatisticFinancialReportingLineName]
,ISNULL([SPFINANCIALREP_3].[Name], 'Not Specified') as [SPSecondaryStatisticFinancialReporting]
,ISNULL([SPFINANCIALREP_3].[LineName], 'Not Specified') as [SPSecondaryStatisticFinancialReportingLineName]
,ISNULL([SPFINANCIALREP_4].[Name], 'Not Specified') as [SPTertiaryStatisticFinancialReporting]
,ISNULL([SPFINANCIALREP_4].[LineName], 'Not Specified') as [SPTertiaryStatisticFinancialReportingLineName]
,ISNULL([CAPFINANCIALREP].[Name], 'Not Specified') as [CAPChargesFinancialReporting]
,ISNULL([CAPFINANCIALREP_1].[Name], 'Not Specified') as [CAPContractualsFinancialReporting]
,ISNULL([CAPFINANCIALREP_2].[Name], 'Not Specified') as [CAPPrimaryStatisticFinancialReporting]
,ISNULL([CAPFINANCIALREP_2].[LineName], 'Not Specified') as [CAPPrimaryStatisticFinancialReportingLineName]
,ISNULL([CAPFINANCIALREP_3].[Name], 'Not Specified') as [CAPSecondaryStatisticFinancialReporting]
,ISNULL([CAPFINANCIALREP_3].[LineName], 'Not Specified') as [CAPSecondaryStatisticFinancialReportingLineName]
, [grpFE81F461D5C6457B8209E3E5F86A30DB].[Version]FROM [fw].[DimPatientTypeRollup] grpFE81F461D5C6457B8209E3E5F86A30DB (readuncommitted)
INNER JOIN [fw].[viewDimPatientClass] [PATIENTCLASS] on [PATIENTCLASS].[PatientClassID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[PatientClassID]
INNER JOIN [fw].[viewDimCareSetting] [CARESETTING] on [CARESETTING].[CareSettingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[CareSettingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP] on [SPFINANCIALREP].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[SPChargesFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_1] on [SPFINANCIALREP_1].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[SPContractualsFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_2] on [SPFINANCIALREP_2].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[SPPrimaryStatisticFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_3] on [SPFINANCIALREP_3].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[SPSecondaryStatisticFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_4] on [SPFINANCIALREP_4].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[SPTertiaryStatisticFinancialReportingID]
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP] on [CAPFINANCIALREP].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[CAPChargesFinancialReportingID]
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP_1] on [CAPFINANCIALREP_1].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[CAPContractualsFinancialReportingID]
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP_2] on [CAPFINANCIALREP_2].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[CAPPrimaryStatisticFinancialReportingID]
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP_3] on [CAPFINANCIALREP_3].[FinancialReportingID] = [grpFE81F461D5C6457B8209E3E5F86A30DB].[CAPSecondaryStatisticFinancialReportingID]
GO
---------------------------------------------
-- fw.viewDimPayCode
CREATE VIEW [fw].[viewDimPayCode]
AS
SELECT
[PayCodeID],
COALESCE([Name],'') as [Name],
[Description],
[PayCode],
[PayCodeGroupID],
[IsAccrued],
[IsHoursIgnored],
[IsDollarsIgnored],
[DSSIsDefined],
[DSSPayCodeRollup1ID],
[DSSCostingRollup],
COALESCE([DSSPayCodeRollup1],'') as [DSSPayCodeRollup1],
[OBIsDefined],
[OBForecastDetailID],
[SPIsDefined],
[ImportIDAlt],
[IsPayCodeGroup],
[Rollup],
[SubRollup],
COALESCE([PayCodeGroup],'') as [PayCodeGroup],
[PayCodeGroupSortOrder],
COALESCE([PayClass],'') as [PayClass],
COALESCE([ProductiveClass],'') as [ProductiveClass],
[Variability],
COALESCE([ReportingCategory],'') as [ReportingCategory],
[MemberGUID],
[HistoryItemGUID],
[DSSCostingRollup2],
[FWIsDefined],
[DSSPayCodeRollup2ID],
COALESCE([DSSPayCodeRollup2],'') as [DSSPayCodeRollup2],
[TransactionID],
[SPHPayCodeRollupIsValidated],
[ProviderLineItemID],
COALESCE([ProviderLineItem],'') as [ProviderLineItem],
COALESCE([SPHProductiveClass],'') as [SPHProductiveClass],
[SPHPayCodeRollupID],
COALESCE([SPHPayCodeRollupName],'') as [SPHPayCodeRollupName],
[SPHPayCodeRollupConfidenceScore] ,[Version]
FROM [fw].[DimPayCode] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayCodeGroup
--Last Modified 3/20/2024 5:05 PM
CREATE VIEW [fw].[viewDimPayCodeGroup]
AS
SELECT
grpB9F3A1C540C14A449028ADA57350A79D.[PayCodeGroupID]
,grpB9F3A1C540C14A449028ADA57350A79D.[Name]
,grpB9F3A1C540C14A449028ADA57350A79D.[SortOrder]
,grpB9F3A1C540C14A449028ADA57350A79D.[PayCodeGroupCode]
,grpB9F3A1C540C14A449028ADA57350A79D.[PayClass]
,grpB9F3A1C540C14A449028ADA57350A79D.[ProductiveClassID]
,grpB9F3A1C540C14A449028ADA57350A79D.[IsVariable]
,grpB9F3A1C540C14A449028ADA57350A79D.[IsOvertime]
,grpB9F3A1C540C14A449028ADA57350A79D.[IsAgency]
,grpB9F3A1C540C14A449028ADA57350A79D.[IsExcludedFromBenefits]
,grpB9F3A1C540C14A449028ADA57350A79D.[IsDirect]
,grpB9F3A1C540C14A449028ADA57350A79D.[IsPremium]
,grpB9F3A1C540C14A449028ADA57350A79D.[WageRateMultiplier]
,grpB9F3A1C540C14A449028ADA57350A79D.[DefaultPayCodeID]
,grpB9F3A1C540C14A449028ADA57350A79D.[ReportingCategory]
,grpB9F3A1C540C14A449028ADA57350A79D.[MemberGUID]
,grpB9F3A1C540C14A449028ADA57350A79D.[TransactionID]
,grpB9F3A1C540C14A449028ADA57350A79D.[HistoryItemGUID]
,ISNULL([PRODUCTIVECL].[Name], 'Not Specified') as [ProductiveClass]
,ISNULL([PAYCODE].[Name], 'Not Specified') as [DefaultPayCode]
, [grpB9F3A1C540C14A449028ADA57350A79D].[Version]FROM [fw].[DimPayCodeGroup] grpB9F3A1C540C14A449028ADA57350A79D (readuncommitted)
LEFT JOIN [fw].[viewDimProductiveClass] [PRODUCTIVECL] on [PRODUCTIVECL].[ProductiveClassID] = [grpB9F3A1C540C14A449028ADA57350A79D].[ProductiveClassID]
LEFT JOIN [fw].[viewDimPayCode] [PAYCODE] on [PAYCODE].[PayCodeID] = [grpB9F3A1C540C14A449028ADA57350A79D].[DefaultPayCodeID]
GO
---------------------------------------------
-- fw.viewDimPayCodeGroupPH
CREATE VIEW [fw].[viewDimPayCodeGroupPH]
AS
SELECT
grpCAA5DF4BE5434757B51AD811109F16DB.[PayCodeGroupPHID]
,grpCAA5DF4BE5434757B51AD811109F16DB.[Name]
,grpCAA5DF4BE5434757B51AD811109F16DB.[TransactionID]
,grpCAA5DF4BE5434757B51AD811109F16DB.[MemberGUID]
,grpCAA5DF4BE5434757B51AD811109F16DB.[HistoryItemGUID]
FROM [fw].[DimPayCodeGroupPH] grpCAA5DF4BE5434757B51AD811109F16DB (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayCode_source
CREATE VIEW [fw].[viewDimPayCode_source]
AS
SELECT
grpB323F295F71F4248991D24C571ED8831.[PayCodeID]
,grpB323F295F71F4248991D24C571ED8831.[Name]
,grpB323F295F71F4248991D24C571ED8831.[MemberGUID]
,grpB323F295F71F4248991D24C571ED8831.[HistoryItemGUID]
,grpB323F295F71F4248991D24C571ED8831.[TransactionID]
,ISNULL([PCG].[Name], 'Not Specified') as [PayCodeGroup]
,ISNULL([PCG].[SortOrder], 0) as [PayCodeGroupSortOrder]
,ISNULL([PCG].[PayClass], 'Not Specified') as [PayClass]
,ISNULL([PCG].[ProductiveClass], 'Not Specified') as [ProductiveClass]
,ISNULL([PCG].[ReportingCategory], 'Not Specified') as [ReportingCategory]
,ISNULL([DSSPAYCODEROLLUP1].[Name], 'Not Specified') as [DSSPayCodeRollup1]
,ISNULL([DSSPAYCODEROLLUP2].[Name], 'Not Specified') as [DSSPayCodeRollup2]
,ISNULL([PROVIDERLI].[Description], 'Not Specified') as [ProviderLineItem]
,ISNULL([SPHPAYCODEROLLUP].[SPHProductiveClass], 'Not Specified') as [SPHProductiveClass]
,ISNULL([SPHPAYCODEROLLUP].[Name], 'Not Specified') as [SPHPayCodeRollupName]
, [grpB323F295F71F4248991D24C571ED8831].[Version]FROM [fw].[DimPayCode] grpB323F295F71F4248991D24C571ED8831 (readuncommitted)
LEFT JOIN [fw].[viewDimPayCodeGroup] [PCG] on [PCG].[PayCodeGroupID] = [grpB323F295F71F4248991D24C571ED8831].[PayCodeGroupID]
INNER JOIN [dss].[viewDimPayCodeRollup1] [DSSPAYCODEROLLUP1] on [DSSPAYCODEROLLUP1].[DSSPayCodeRollup1ID] = [grpB323F295F71F4248991D24C571ED8831].[DSSPayCodeRollup1ID]
INNER JOIN [dss].[viewDimPayCodeRollup2] [DSSPAYCODEROLLUP2] on [DSSPAYCODEROLLUP2].[DSSPayCodeRollup2ID] = [grpB323F295F71F4248991D24C571ED8831].[DSSPayCodeRollup2ID]
LEFT JOIN [fp].[viewProviderLineItem_auto] [PROVIDERLI] on [PROVIDERLI].[ProviderLineItemID] = [grpB323F295F71F4248991D24C571ED8831].[ProviderLineItemID]
INNER JOIN [fw].[viewDimSPHPayCodeRollup] [SPHPAYCODEROLLUP] on [SPHPAYCODEROLLUP].[SPHPayCodeRollupID] = [grpB323F295F71F4248991D24C571ED8831].[SPHPayCodeRollupID]
GO
---------------------------------------------
-- fw.viewDimPayCycle
--Last Modified 11/30/2015 12:22 PM
CREATE VIEW [fw].[viewDimPayCycle]
AS
SELECT
grp97FA080700B74428A51EDA0423536FBB.[PayCycleID]
,grp97FA080700B74428A51EDA0423536FBB.[Name]
,grp97FA080700B74428A51EDA0423536FBB.[Code]
,grp97FA080700B74428A51EDA0423536FBB.[SortOrder]
,grp97FA080700B74428A51EDA0423536FBB.[PeriodDays]
,grp97FA080700B74428A51EDA0423536FBB.[FirstPayPeriodStartDate]
,grp97FA080700B74428A51EDA0423536FBB.[AccrualMethod]
,grp97FA080700B74428A51EDA0423536FBB.[TransactionID]
,grp97FA080700B74428A51EDA0423536FBB.[MemberGUID]
,grp97FA080700B74428A51EDA0423536FBB.[HistoryItemGUID]
,grp97FA080700B74428A51EDA0423536FBB.[CurrentPayPeriodID]
FROM [fw].[DimPayCycle] grp97FA080700B74428A51EDA0423536FBB (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayPeriod
CREATE VIEW [fw].[viewDimPayPeriod]
AS
SELECT
[PayPeriodID],
[Name],
[PeriodNumber],
[Code],
[PayPeriodCode],
[FiscalYearIDStart],
[FiscalYearIDSecond],
[PeriodStartCalendarDate],
[PeriodEndCalendarDate],
[PeriodDays],
[WorkingDays],
[FiscalMonthIDStart],
[FiscalMonthIDSecond],
[CalendarDaysStart],
[CalendarDaysSecond],
[PeriodDaysStart],
[PeriodDaysSecond],
[PeriodWeightStart],
[PeriodWeightSecond],
[DaysInPeriodWeightStart],
[DaysInPeriodWeightSecond],
[HistoryItemGUID],
[PayCycleID],
COALESCE([PayCycleName],'') as [PayCycleName],
[MemberGUID],
[TransactionID],
COALESCE([PayCycleCode],'') as [PayCycleCode],
[PayCycleSortOrder],
COALESCE([AccrualMethod],'') as [AccrualMethod],
[IsCurrentPayPeriod],
[CountFromCurrentPayPeriod] ,[Version]
FROM [fw].[DimPayPeriod] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayPeriod_source
CREATE VIEW [fw].[viewDimPayPeriod_source]
AS
SELECT
grp90F54C2D43B54BE39642E686F8DE7839.[PayPeriodID]
,grp90F54C2D43B54BE39642E686F8DE7839.[PeriodStartCalendarDate]
,grp90F54C2D43B54BE39642E686F8DE7839.[FiscalMonthIDStart]
,grp90F54C2D43B54BE39642E686F8DE7839.[FiscalMonthIDSecond]
,grp90F54C2D43B54BE39642E686F8DE7839.[CalendarDaysStart]
,grp90F54C2D43B54BE39642E686F8DE7839.[CalendarDaysSecond]
,grp90F54C2D43B54BE39642E686F8DE7839.[PeriodDaysStart]
,grp90F54C2D43B54BE39642E686F8DE7839.[PeriodDaysSecond]
,grp90F54C2D43B54BE39642E686F8DE7839.[PeriodWeightStart]
,grp90F54C2D43B54BE39642E686F8DE7839.[PeriodWeightSecond]
,grp90F54C2D43B54BE39642E686F8DE7839.[DaysInPeriodWeightStart]
,grp90F54C2D43B54BE39642E686F8DE7839.[DaysInPeriodWeightSecond]
,grp90F54C2D43B54BE39642E686F8DE7839.[HistoryItemGUID]
,grp90F54C2D43B54BE39642E686F8DE7839.[MemberGUID]
,grp90F54C2D43B54BE39642E686F8DE7839.[TransactionID]
,ISNULL([PAYCYCLE].[Name], 'Not Specified') as [PayCycleName]
,ISNULL([PAYCYCLE].[Code], 'Not Specified') as [PayCycleCode]
,ISNULL([PAYCYCLE].[SortOrder], 0) as [PayCycleSortOrder]
,ISNULL([PAYCYCLE].[AccrualMethod], 'Not Specified') as [AccrualMethod]
, [grp90F54C2D43B54BE39642E686F8DE7839].[Version]FROM [fw].[DimPayPeriod] grp90F54C2D43B54BE39642E686F8DE7839 (readuncommitted)
INNER JOIN [fw].[viewDimPayCycle] [PAYCYCLE] on [PAYCYCLE].[PayCycleID] = [grp90F54C2D43B54BE39642E686F8DE7839].[PayCycleID]
GO
---------------------------------------------
-- fw.viewDimPayor
--Last Modified 6/8/2020 3:13 PM
CREATE VIEW [fw].[viewDimPayor]
AS
SELECT
grp0887B09C7E9342638431A42A05EA03B5.[PayorID]
,coalesce(grp0887B09C7E9342638431A42A05EA03B5.[Name],'') as [Name]
,grp0887B09C7E9342638431A42A05EA03B5.[Description]
,grp0887B09C7E9342638431A42A05EA03B5.[DescriptionLong]
,grp0887B09C7E9342638431A42A05EA03B5.[PayorCode]
,grp0887B09C7E9342638431A42A05EA03B5.[PayorGroupID]
,grp0887B09C7E9342638431A42A05EA03B5.[IsOB]
,grp0887B09C7E9342638431A42A05EA03B5.[IsDSS]
,grp0887B09C7E9342638431A42A05EA03B5.[FinancialClassID]
,grp0887B09C7E9342638431A42A05EA03B5.[OBDefaultInpatientReimbursementMethod]
,grp0887B09C7E9342638431A42A05EA03B5.[OBDefaultOutpatientReimbursementMethod]
,grp0887B09C7E9342638431A42A05EA03B5.[MemberGUID]
,grp0887B09C7E9342638431A42A05EA03B5.[HistoryItemGUID]
,grp0887B09C7E9342638431A42A05EA03B5.[TransactionID]
,ISNULL([PayorGroup].[Name], 'Not Specified') as [PayorGroup]
,ISNULL([FINANCIALCLASS].[Name], 'Not Specified') as [FinancialClass]
FROM [fw].[DimPayor] grp0887B09C7E9342638431A42A05EA03B5 (readuncommitted)
LEFT JOIN [fw].[viewDimPayorGroup] [PayorGroup] on [PayorGroup].[PayorGroupID] = [grp0887B09C7E9342638431A42A05EA03B5].[PayorGroupID]
LEFT JOIN [clientdss].[viewDimFinancialClass] [FINANCIALCLASS] on [FINANCIALCLASS].[FinancialClassID] = [grp0887B09C7E9342638431A42A05EA03B5].[FinancialClassID]
GO
---------------------------------------------
-- fw.viewDimPayorGroup
CREATE VIEW [fw].[viewDimPayorGroup]
AS
SELECT
[PayorGroupID],
[Name],
[Category],
[ReimbursementType],
[PayorGroupCode],
[SortOrder],
[IsCapital],
[CAPChargesFinancialReportingID],
[CAPContractualsFinancialReportingID],
[IsDSS],
[IsOB],
[IsMR],
[IsSP],
[SPHCRPayorID],
[SPChargesFinancialReportingID],
[SPContractualsFinancialReportingID],
[SPDefaultInpatientReimbursementMethod],
[SPDefaultOutpatientReimbursementMethod],
[SPDefaultClinicReimbursementMethod],
[OBDefaultInpatientReimbursementMethod],
COALESCE([CAPChargesFinancialReporting],'') as [CAPChargesFinancialReporting],
COALESCE([CAPContractualsFinancialReporting],'') as [CAPContractualsFinancialReporting],
[OBDefaultOutpatientReimbursementMethod],
COALESCE([SPHCRPayor],'') as [SPHCRPayor],
COALESCE([SPChargesFinancialReporting],'') as [SPChargesFinancialReporting],
COALESCE([SPContractualsFinancialReporting],'') as [SPContractualsFinancialReporting],
[SPCMISamplingSourceType],
[SPCMISamplingAccountID],
[MemberGUID] ,[HistoryItemGUID]
FROM [fw].[DimPayorGroup] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayorGroupPH
CREATE VIEW [fw].[viewDimPayorGroupPH]
AS
SELECT
[PayorGroupPHID],
[MemberGUID],
[Name] ,[HistoryItemGUID]
FROM [fw].[DimPayorGroupPH] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayorGroupPH_source
CREATE VIEW [fw].[viewDimPayorGroupPH_source]
AS
SELECT
grp4D76CDC6FB8D4D8FB7B95C7CD71A1E5A.[PayorGroupPHID]
,grp4D76CDC6FB8D4D8FB7B95C7CD71A1E5A.[MemberGUID]
, [grp4D76CDC6FB8D4D8FB7B95C7CD71A1E5A].[HistoryItemGUID]FROM [fw].[DimPayorGroupPH] grp4D76CDC6FB8D4D8FB7B95C7CD71A1E5A (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPayorGroup_source
CREATE VIEW [fw].[viewDimPayorGroup_source]
AS
SELECT
grpEF15CAACBD154F79B68A2D4655C8489C.[PayorGroupID]
,grpEF15CAACBD154F79B68A2D4655C8489C.[SPCMISamplingSourceType]
,grpEF15CAACBD154F79B68A2D4655C8489C.[SPCMISamplingAccountID]
,grpEF15CAACBD154F79B68A2D4655C8489C.[MemberGUID]
,ISNULL([CAPFINANCIALREP].[Name], 'Not Specified') as [CAPChargesFinancialReporting]
,ISNULL([CAPFINANCIALREP_1].[Name], 'Not Specified') as [CAPContractualsFinancialReporting]
,ISNULL([SPHCRPAYOR].[Name], 'Not Specified') as [SPHCRPayor]
,ISNULL([SPFINANCIALREP].[Name], 'Not Specified') as [SPChargesFinancialReporting]
,ISNULL([SPFINANCIALREP_1].[Name], 'Not Specified') as [SPContractualsFinancialReporting]
, [grpEF15CAACBD154F79B68A2D4655C8489C].[HistoryItemGUID]FROM [fw].[DimPayorGroup] grpEF15CAACBD154F79B68A2D4655C8489C (readuncommitted)
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP] on [CAPFINANCIALREP].[FinancialReportingID] = [grpEF15CAACBD154F79B68A2D4655C8489C].[CAPChargesFinancialReportingID]
INNER JOIN [cap].[viewDimFinancialReporting] [CAPFINANCIALREP_1] on [CAPFINANCIALREP_1].[FinancialReportingID] = [grpEF15CAACBD154F79B68A2D4655C8489C].[CAPContractualsFinancialReportingID]
INNER JOIN [sp].[viewDimHCRPayor] [SPHCRPAYOR] on [SPHCRPAYOR].[SPHCRPayorID] = [grpEF15CAACBD154F79B68A2D4655C8489C].[SPHCRPayorID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP] on [SPFINANCIALREP].[FinancialReportingID] = [grpEF15CAACBD154F79B68A2D4655C8489C].[SPChargesFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_1] on [SPFINANCIALREP_1].[FinancialReportingID] = [grpEF15CAACBD154F79B68A2D4655C8489C].[SPContractualsFinancialReportingID]
GO
---------------------------------------------
-- fw.viewDimPayorPH
CREATE VIEW [fw].[viewDimPayorPH]
AS
SELECT
grpF3B83E94F08649FDBDD59852FB8C7C47.[PayorPHID]
,grpF3B83E94F08649FDBDD59852FB8C7C47.[Name]
,grpF3B83E94F08649FDBDD59852FB8C7C47.[MemberGUID]
FROM [fw].[DimPayorPH] grpF3B83E94F08649FDBDD59852FB8C7C47 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPhysicianGroup
CREATE VIEW [fw].[viewDimPhysicianGroup]
AS
SELECT
[PhysicianGroupID],
[Category],
[Subcategory],
[Name],
[PhysicianType],
[IsSP],
[IsCapital],
[IsOB],
[IsMR],
[IsDSS],
[SortOrder],
[SPSalariesFinancialReportingID],
[SPFTEsFinancialReportingID],
COALESCE([SPSalariesFinancialReporting],'') as [SPSalariesFinancialReporting],
[SPSalariesVolumeDriverID],
[SPPhysicianBenefitsTypeID],
COALESCE([SPFTEsFinancialReporting],'') as [SPFTEsFinancialReporting],
COALESCE([SPSalariesVolumeDriver],'') as [SPSalariesVolumeDriver],
COALESCE([SPPhysicianBenefitsType],'') as [SPPhysicianBenefitsType],
[MemberGUID],
[HistoryItemGUID],
[WorkWeekOverrideID] ,[Version]
FROM [fw].[DimPhysicianGroup] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPhysicianGroupPH
CREATE VIEW [fw].[viewDimPhysicianGroupPH]
AS
SELECT
[PhysicianGroupPHID],
[Name],
[MemberGUID],
[HistoryItemGUID] ,[Version]
FROM [fw].[DimPhysicianGroupPH] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPhysicianGroupPH_source
CREATE VIEW [fw].[viewDimPhysicianGroupPH_source]
AS
SELECT
grpFA7033208877495E84B853F8157A91A4.[PhysicianGroupPHID]
,grpFA7033208877495E84B853F8157A91A4.[MemberGUID]
,grpFA7033208877495E84B853F8157A91A4.[HistoryItemGUID]
, [grpFA7033208877495E84B853F8157A91A4].[Version]FROM [fw].[DimPhysicianGroupPH] grpFA7033208877495E84B853F8157A91A4 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPhysicianGroup_source
CREATE VIEW [fw].[viewDimPhysicianGroup_source]
AS
SELECT
grpF4583D1A174C47B999BA61480A7A4378.[PhysicianGroupID]
,grpF4583D1A174C47B999BA61480A7A4378.[MemberGUID]
,grpF4583D1A174C47B999BA61480A7A4378.[HistoryItemGUID]
,ISNULL([SPFINANCIALREP].[Name], 'Not Specified') as [SPSalariesFinancialReporting]
,ISNULL([SPFINANCIALREP_1].[Name], 'Not Specified') as [SPFTEsFinancialReporting]
,ISNULL([SPAccountRollup].[Name], 'Not Specified') as [SPSalariesVolumeDriver]
,ISNULL([SPAccountRollup_1].[Name], 'Not Specified') as [SPPhysicianBenefitsType]
, [grpF4583D1A174C47B999BA61480A7A4378].[Version]FROM [fw].[DimPhysicianGroup] grpF4583D1A174C47B999BA61480A7A4378 (readuncommitted)
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP] on [SPFINANCIALREP].[FinancialReportingID] = [grpF4583D1A174C47B999BA61480A7A4378].[SPSalariesFinancialReportingID]
INNER JOIN [sp].[viewDimFinancialReporting] [SPFINANCIALREP_1] on [SPFINANCIALREP_1].[FinancialReportingID] = [grpF4583D1A174C47B999BA61480A7A4378].[SPFTEsFinancialReportingID]
INNER JOIN [sp].[viewDimAccountRollup] [SPAccountRollup] on [SPAccountRollup].[AccountRollupID] = [grpF4583D1A174C47B999BA61480A7A4378].[SPSalariesVolumeDriverID]
INNER JOIN [sp].[viewDimAccountRollup] [SPAccountRollup_1] on [SPAccountRollup_1].[AccountRollupID] = [grpF4583D1A174C47B999BA61480A7A4378].[SPPhysicianBenefitsTypeID]
GO
---------------------------------------------
-- fw.viewDimPhysicianPH
CREATE VIEW [fw].[viewDimPhysicianPH]
AS
SELECT
grp085BA6AC2CB14AD4A83D611E7B1646B1.[PhysicianPHID]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[Name]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[MemberGUID]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[HistoryItemGUID]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[TransactionID]
FROM [fw].[DimPhysicianPH] grp085BA6AC2CB14AD4A83D611E7B1646B1 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPhysicianSpecialty
CREATE VIEW [fw].[viewDimPhysicianSpecialty]
AS
SELECT
grp3091D7E63A5F4E09B9439680761F9990.[PhysicianSpecialtyID]
,coalesce(grp3091D7E63A5F4E09B9439680761F9990.[Name],'') as [Name]
,grp3091D7E63A5F4E09B9439680761F9990.[TransactionID]
,grp3091D7E63A5F4E09B9439680761F9990.[MemberGUID]
,grp3091D7E63A5F4E09B9439680761F9990.[HistoryItemGUID]
,grp3091D7E63A5F4E09B9439680761F9990.[PhysicianSpecialtyCode]
,grp3091D7E63A5F4E09B9439680761F9990.[SpecialtyGroup]
,grp3091D7E63A5F4E09B9439680761F9990.[Description]
,grp3091D7E63A5F4E09B9439680761F9990.[RVUTarget]
FROM [fw].[DimPhysicianSpecialty] grp3091D7E63A5F4E09B9439680761F9990 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimPositionType
--Last Modified 11/8/2024 12:46 AM
CREATE VIEW [fw].[viewDimPositionType]
AS
SELECT
grp69B5488AB512468F8B9002077835B307.[PositionTypeID]
,grp69B5488AB512468F8B9002077835B307.[Name]
,grp69B5488AB512468F8B9002077835B307.[TransactionID]
,grp69B5488AB512468F8B9002077835B307.[MemberGUID]
,grp69B5488AB512468F8B9002077835B307.[HistoryItemGUID]
,grp69B5488AB512468F8B9002077835B307.[PositionTypeAssignmentTypeID]
,ISNULL([POSITIONTYPEASSIGNMENTTYPE].[Name], 'Not Specified') as [PositionTypeAssignmentType]
FROM [fw].[DimPositionType] grp69B5488AB512468F8B9002077835B307 (readuncommitted)
INNER JOIN [fw].[viewDimPositionTypeAssignmentType] [POSITIONTYPEASSIGNMENTTYPE] on [POSITIONTYPEASSIGNMENTTYPE].[PositionTypeAssignmentTypeID] = [grp69B5488AB512468F8B9002077835B307].[PositionTypeAssignmentTypeID]
GO
---------------------------------------------
-- fw.viewDimPositionTypeAssignmentType
--Last Modified 11/8/2024 12:46 AM
CREATE VIEW [fw].[viewDimPositionTypeAssignmentType]
AS
SELECT
grp34DC76DCBD1B4EB7BB814C769354A3F5.[PositionTypeAssignmentTypeID]
,grp34DC76DCBD1B4EB7BB814C769354A3F5.[Name]
,grp34DC76DCBD1B4EB7BB814C769354A3F5.[TransactionID]
,grp34DC76DCBD1B4EB7BB814C769354A3F5.[MemberGUID]
,grp34DC76DCBD1B4EB7BB814C769354A3F5.[HistoryItemGUID]
FROM [fw].[DimPositionTypeAssignmentType] grp34DC76DCBD1B4EB7BB814C769354A3F5 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimProductiveClass
CREATE VIEW [fw].[viewDimProductiveClass]
AS
SELECT
grp6EF32EA816124EEF8860ED7A89141304.[ProductiveClassID]
,grp6EF32EA816124EEF8860ED7A89141304.[Name]
,grp6EF32EA816124EEF8860ED7A89141304.[MemberGUID]
,grp6EF32EA816124EEF8860ED7A89141304.[HistoryItemGUID]
FROM [fw].[DimProductiveClass] grp6EF32EA816124EEF8860ED7A89141304 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimProgram
--Last Modified 5/26/2015 10:11 AM
CREATE VIEW [fw].[viewDimProgram]
AS
SELECT
grp7D067B54714C46E1927FF61AE552BEA9.[ProgramID]
,coalesce(grp7D067B54714C46E1927FF61AE552BEA9.[Name],'') as [Name]
,grp7D067B54714C46E1927FF61AE552BEA9.[Code]
,grp7D067B54714C46E1927FF61AE552BEA9.[Description]
,grp7D067B54714C46E1927FF61AE552BEA9.[SortOrder]
,grp7D067B54714C46E1927FF61AE552BEA9.[TransactionID]
,grp7D067B54714C46E1927FF61AE552BEA9.[MemberGUID]
,grp7D067B54714C46E1927FF61AE552BEA9.[HistoryItemGUID]
FROM [fw].[DimProgram] grp7D067B54714C46E1927FF61AE552BEA9 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimProject
--Last Modified 5/26/2015 10:11 AM
CREATE VIEW [fw].[viewDimProject]
AS
SELECT
grp2CF09BEF8FF548EB995FA62246911542.[ProjectID]
,coalesce(grp2CF09BEF8FF548EB995FA62246911542.[Name],'') as [Name]
,grp2CF09BEF8FF548EB995FA62246911542.[Code]
,grp2CF09BEF8FF548EB995FA62246911542.[Description]
,grp2CF09BEF8FF548EB995FA62246911542.[SortOrder]
,grp2CF09BEF8FF548EB995FA62246911542.[TransactionID]
,grp2CF09BEF8FF548EB995FA62246911542.[MemberGUID]
,grp2CF09BEF8FF548EB995FA62246911542.[HistoryItemGUID]
FROM [fw].[DimProject] grp2CF09BEF8FF548EB995FA62246911542 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimProvider
--Last Modified 9/4/2018 7:30 PM
CREATE VIEW [fw].[viewDimProvider]
AS
SELECT
grp1D2F3A2E50034A10A3B63D4C0CC69235.[ProviderID]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[Type]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[NameFirst]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[IsPhysician]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[NameLast]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[ProviderCode]
,coalesce(grp1D2F3A2E50034A10A3B63D4C0CC69235.[Name],'') as [Name]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[PhysicianSpecialtyID]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[StateLicenseNumber]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[NPI]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[GroupAffiliaition]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[DSSIsDefined]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBIsDefined]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[IsEmployee]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBIsActive]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier1Rate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier2Rate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier3Rate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier4Rate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier5Rate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier6Rate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier1Threshold]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier2Threshold]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier3Threshold]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier4Threshold]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier5Threshold]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBTier6Threshold]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBVolumeTarget1]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBVolumeTarget2]
,coalesce(grp1D2F3A2E50034A10A3B63D4C0CC69235.[ProviderName],'') as [ProviderName]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[PayRate]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[OBVolumeTarget3]
,coalesce(grp1D2F3A2E50034A10A3B63D4C0CC69235.[CompensationMethod],'') as [CompensationMethod]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[BasePay]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[TransactionID]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[MemberGUID]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[HistoryItemGUID]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[WorkWeekOverrideID]
,grp1D2F3A2E50034A10A3B63D4C0CC69235.[IsVariable]
,ISNULL([PHYSICIANSPECIALTY].[Name], 'Not Specified') as [Specialty]
FROM [fw].[DimProvider] grp1D2F3A2E50034A10A3B63D4C0CC69235 (readuncommitted)
LEFT JOIN [fw].[viewDimPhysicianSpecialty] [PHYSICIANSPECIALTY] on [PHYSICIANSPECIALTY].[PhysicianSpecialtyID] = [grp1D2F3A2E50034A10A3B63D4C0CC69235].[PhysicianSpecialtyID]
GO
---------------------------------------------
-- fw.viewDimProviderPH
CREATE VIEW [fw].[viewDimProviderPH]
AS
SELECT
grp085BA6AC2CB14AD4A83D611E7B1646B1.[ProviderPHID]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[Name]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[TransactionID]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[MemberGUID]
,grp085BA6AC2CB14AD4A83D611E7B1646B1.[HistoryItemGUID]
FROM [fw].[DimProviderPH] grp085BA6AC2CB14AD4A83D611E7B1646B1 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimQuarter_auto
CREATE VIEW [fw].[viewDimQuarter_auto]
AS
SELECT
grp3CBAB808CE024FFBB6B5C2F2E6B7EC5E.[Name]
,grp3CBAB808CE024FFBB6B5C2F2E6B7EC5E.[MemberGUID]
,grp3CBAB808CE024FFBB6B5C2F2E6B7EC5E.[QuarterID]
, [grp3CBAB808CE024FFBB6B5C2F2E6B7EC5E].[Version], [grp3CBAB808CE024FFBB6B5C2F2E6B7EC5E].[HistoryItemGUID]FROM [fw].[DimQuarter] grp3CBAB808CE024FFBB6B5C2F2E6B7EC5E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimReportDetailType
CREATE VIEW [fw].[viewDimReportDetailType]
AS
SELECT
grp280082C30690409ABF34E0DC53FEDC09.[ReportDetailTypeID]
,grp280082C30690409ABF34E0DC53FEDC09.[Name]
,grp280082C30690409ABF34E0DC53FEDC09.[TransactionID]
,grp280082C30690409ABF34E0DC53FEDC09.[MemberGUID]
,grp280082C30690409ABF34E0DC53FEDC09.[HistoryItemGUID]
,grp280082C30690409ABF34E0DC53FEDC09.[TableName]
FROM [fw].[DimReportDetailType] grp280082C30690409ABF34E0DC53FEDC09 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimResearchDepartmentCategory
CREATE VIEW [fw].[viewDimResearchDepartmentCategory]
AS
SELECT
grpE9D662D6B156456CBA91AE99CF2DF414.[ResearchDepartmentCategoryID]
,grpE9D662D6B156456CBA91AE99CF2DF414.[Name]
,grpE9D662D6B156456CBA91AE99CF2DF414.[SortOrder]
,grpE9D662D6B156456CBA91AE99CF2DF414.[TransactionID]
,grpE9D662D6B156456CBA91AE99CF2DF414.[MemberGUID]
,grpE9D662D6B156456CBA91AE99CF2DF414.[HistoryItemGUID]
FROM [fw].[DimResearchDepartmentCategory] grpE9D662D6B156456CBA91AE99CF2DF414 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimRowNumber
CREATE VIEW [fw].[viewDimRowNumber]
AS
SELECT
grpCEA161A7FFE24D2B90F4491D4C324B8D.[RowNumberID]
,grpCEA161A7FFE24D2B90F4491D4C324B8D.[Name]
,grpCEA161A7FFE24D2B90F4491D4C324B8D.[MemberGUID]
,grpCEA161A7FFE24D2B90F4491D4C324B8D.[HistoryItemGUID]
FROM [fw].[DimRowNumber] grpCEA161A7FFE24D2B90F4491D4C324B8D (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSPHAccountRollup
--Last Modified 3/15/2022 10:09 PM
CREATE VIEW [fw].[viewDimSPHAccountRollup]
AS
SELECT
grp0FB965B53015438FA55B5196CD9FEEC1.[SPHAccountRollupID]
,coalesce(grp0FB965B53015438FA55B5196CD9FEEC1.[Name],'') as [Name]
,grp0FB965B53015438FA55B5196CD9FEEC1.[TransactionID]
,grp0FB965B53015438FA55B5196CD9FEEC1.[MemberGUID]
,grp0FB965B53015438FA55B5196CD9FEEC1.[HistoryItemGUID]
,grp0FB965B53015438FA55B5196CD9FEEC1.[Statement]
,grp0FB965B53015438FA55B5196CD9FEEC1.[Category]
,grp0FB965B53015438FA55B5196CD9FEEC1.[LineItem]
,grp0FB965B53015438FA55B5196CD9FEEC1.[Section]
,grp0FB965B53015438FA55B5196CD9FEEC1.[SortOrder]
,grp0FB965B53015438FA55B5196CD9FEEC1.[IsStandard]
,grp0FB965B53015438FA55B5196CD9FEEC1.[SPHCostComponent]
,grp0FB965B53015438FA55B5196CD9FEEC1.[SPHCostComponentRollup]
,grp0FB965B53015438FA55B5196CD9FEEC1.[SPHAccountRollupCode]
FROM [fw].[DimSPHAccountRollup] grp0FB965B53015438FA55B5196CD9FEEC1 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSPHDepartmentRollup
--Last Modified 11/16/2020 3:28 PM
CREATE VIEW [fw].[viewDimSPHDepartmentRollup]
AS
SELECT
grp5181C574309B42B29625F6AA66F56763.[SPHDepartmentRollupID]
,grp5181C574309B42B29625F6AA66F56763.[TransactionID]
,coalesce(grp5181C574309B42B29625F6AA66F56763.[Name],'') as [Name]
,grp5181C574309B42B29625F6AA66F56763.[MemberGUID]
,grp5181C574309B42B29625F6AA66F56763.[HistoryItemGUID]
,grp5181C574309B42B29625F6AA66F56763.[SPHDepartmentRollupCode]
,grp5181C574309B42B29625F6AA66F56763.[SortOrder]
,grp5181C574309B42B29625F6AA66F56763.[IsStandard]
FROM [fw].[DimSPHDepartmentRollup] grp5181C574309B42B29625F6AA66F56763 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSPHDepartmentType_auto
--Last Modified 11/16/2020 3:28 PM
CREATE VIEW [fw].[viewDimSPHDepartmentType_auto]
AS
SELECT
grp0A011FEFFE0943ACA25C28B87AF8BB5E.[SPHDepartmentTypeID]
,grp0A011FEFFE0943ACA25C28B87AF8BB5E.[Name]
,grp0A011FEFFE0943ACA25C28B87AF8BB5E.[TransactionID]
,grp0A011FEFFE0943ACA25C28B87AF8BB5E.[MemberGUID]
,grp0A011FEFFE0943ACA25C28B87AF8BB5E.[HistoryItemGUID]
,grp0A011FEFFE0943ACA25C28B87AF8BB5E.[SPHDepartmentTypeCode]
,grp0A011FEFFE0943ACA25C28B87AF8BB5E.[IsStandard]
FROM [fw].[DimSPHDepartmentType] grp0A011FEFFE0943ACA25C28B87AF8BB5E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSPHDepartment_auto
--Last Modified 4/5/2024 9:49 AM
CREATE VIEW [fw].[viewDimSPHDepartment_auto]
AS
SELECT
grpBA529E3553234961A9B03E2BB2DE62D6.[SPHDepartmentID]
,grpBA529E3553234961A9B03E2BB2DE62D6.[Name]
,grpBA529E3553234961A9B03E2BB2DE62D6.[SPHDepartmentRollup]
,grpBA529E3553234961A9B03E2BB2DE62D6.[TransactionID]
,grpBA529E3553234961A9B03E2BB2DE62D6.[MemberGUID]
,grpBA529E3553234961A9B03E2BB2DE62D6.[HistoryItemGUID]
,grpBA529E3553234961A9B03E2BB2DE62D6.[SPHDepartmentCode]
FROM [fw].[DimSPHDepartment] grpBA529E3553234961A9B03E2BB2DE62D6 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSPHJobCodeRollup
--Last Modified 12/15/2020 2:06 PM
CREATE VIEW [fw].[viewDimSPHJobCodeRollup]
AS
SELECT
grpCC5829E5D6334D34958CCF8057B6E850.[SPHJobCodeRollupID]
,grpCC5829E5D6334D34958CCF8057B6E850.[Name]
,grpCC5829E5D6334D34958CCF8057B6E850.[TransactionID]
,grpCC5829E5D6334D34958CCF8057B6E850.[MemberGUID]
,grpCC5829E5D6334D34958CCF8057B6E850.[HistoryItemGUID]
,grpCC5829E5D6334D34958CCF8057B6E850.[SPHJobCodeRollupCode]
,grpCC5829E5D6334D34958CCF8057B6E850.[SPHCostComponent]
,grpCC5829E5D6334D34958CCF8057B6E850.[SortOrder]
,grpCC5829E5D6334D34958CCF8057B6E850.[IsStandard]
FROM [fw].[DimSPHJobCodeRollup] grpCC5829E5D6334D34958CCF8057B6E850 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSPHPayCodeRollup
--Last Modified 02/17/2022 3:49 PM
CREATE VIEW [fw].[viewDimSPHPayCodeRollup]
AS
SELECT
grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[SPHPayCodeRollupID]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[Name]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[TransactionID]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[MemberGUID]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[HistoryItemGUID]
,coalesce(grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[SPHProductiveClass],'') as [SPHProductiveClass]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[SortOrder]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[IsStandard]
,grpCD15C19FF64B4AE6B4AEF15FE3E938C8.[SPHPayCodeRollupCode]
FROM [fw].[DimSPHPayCodeRollup] grpCD15C19FF64B4AE6B4AEF15FE3E938C8 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSecureGroup
CREATE VIEW [fw].[viewDimSecureGroup]
AS
SELECT
grpCD7483929A80421EB8FCB5F08DA13707.[SecureGroupID]
,grpCD7483929A80421EB8FCB5F08DA13707.[Name]
,grpCD7483929A80421EB8FCB5F08DA13707.[MemberGUID]
,grpCD7483929A80421EB8FCB5F08DA13707.[HistoryItemGUID]
FROM [fw].[DimSecureGroup] grpCD7483929A80421EB8FCB5F08DA13707 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine
CREATE VIEW [fw].[viewDimServiceLine]
AS
SELECT
[ServiceLineID],
COALESCE([Name],'') as [Name],
[RollupID],
[ProductLine],
[Code],
[SortOrder],
COALESCE([Rollup],'') as [Rollup],
[RollupSortOrder],
[MemberGUID],
[HistoryItemGUID]
FROM [fw].[DimServiceLine] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine2_auto
--Last Modified 8/1/2016 9:45 AM
CREATE VIEW [fw].[viewDimServiceLine2_auto]
AS
SELECT
grp49B904B3B0B047D8BE592BFC9B8A8AB5.[ServiceLine2ID]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[Name]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[MemberGUID]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[HistoryItemGUID]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[PatientTypeID]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[Rollup]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[Rollup2]
,grp49B904B3B0B047D8BE592BFC9B8A8AB5.[SortOrder]
FROM [fw].[DimServiceLine2] grp49B904B3B0B047D8BE592BFC9B8A8AB5 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine3_auto
--Last Modified 8/1/2016 9:45 AM
CREATE VIEW [fw].[viewDimServiceLine3_auto]
AS
SELECT
grp5974196196F64FC9A4F8AA9FACBDCD45.[ServiceLine3ID]
,grp5974196196F64FC9A4F8AA9FACBDCD45.[Name]
,grp5974196196F64FC9A4F8AA9FACBDCD45.[MemberGUID]
,grp5974196196F64FC9A4F8AA9FACBDCD45.[HistoryItemGUID]
,grp5974196196F64FC9A4F8AA9FACBDCD45.[PatientTypeID]
,grp5974196196F64FC9A4F8AA9FACBDCD45.[Rollup]
,grp5974196196F64FC9A4F8AA9FACBDCD45.[SortOrder]
FROM [fw].[DimServiceLine3] grp5974196196F64FC9A4F8AA9FACBDCD45 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine4_auto
--Last Modified 8/1/2016 9:45 AM
CREATE VIEW [fw].[viewDimServiceLine4_auto]
AS
SELECT
grp569AFAF6B05343CD97F0CAAF28DC8F00.[ServiceLine4ID]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[Name]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[MemberGUID]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[HistoryItemGUID]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[PatientTypeID]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[Rollup]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[SortOrder]
,grp569AFAF6B05343CD97F0CAAF28DC8F00.[Rollup2]
FROM [fw].[DimServiceLine4] grp569AFAF6B05343CD97F0CAAF28DC8F00 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine5_auto
--Last Modified 8/1/2016 9:45 AM
CREATE VIEW [fw].[viewDimServiceLine5_auto]
AS
SELECT
grpC0586B9CF59342389C2043964523F713.[ServiceLine5ID]
,grpC0586B9CF59342389C2043964523F713.[Name]
,grpC0586B9CF59342389C2043964523F713.[MemberGUID]
,grpC0586B9CF59342389C2043964523F713.[HistoryItemGUID]
,grpC0586B9CF59342389C2043964523F713.[PatientTypeID]
,grpC0586B9CF59342389C2043964523F713.[Rollup]
,grpC0586B9CF59342389C2043964523F713.[SortOrder]
FROM [fw].[DimServiceLine5] grpC0586B9CF59342389C2043964523F713 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine6_auto
--Last Modified 8/1/2016 9:45 AM
CREATE VIEW [fw].[viewDimServiceLine6_auto]
AS
SELECT
grpFAE2AC4E1DB34075B2113A9624D8EBDA.[ServiceLine6ID]
,grpFAE2AC4E1DB34075B2113A9624D8EBDA.[Name]
,grpFAE2AC4E1DB34075B2113A9624D8EBDA.[MemberGUID]
,grpFAE2AC4E1DB34075B2113A9624D8EBDA.[HistoryItemGUID]
,grpFAE2AC4E1DB34075B2113A9624D8EBDA.[PatientTypeID]
,grpFAE2AC4E1DB34075B2113A9624D8EBDA.[Rollup]
,grpFAE2AC4E1DB34075B2113A9624D8EBDA.[SortOrder]
FROM [fw].[DimServiceLine6] grpFAE2AC4E1DB34075B2113A9624D8EBDA (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLineRollup
CREATE VIEW [fw].[viewDimServiceLineRollup]
AS
SELECT
grp634CA27B835D4A18B1E58F8992F1B031.[ServiceLineRollupID]
,grp634CA27B835D4A18B1E58F8992F1B031.[Name]
,grp634CA27B835D4A18B1E58F8992F1B031.[MemberGUID]
,grp634CA27B835D4A18B1E58F8992F1B031.[HistoryItemGUID]
,grp634CA27B835D4A18B1E58F8992F1B031.[TransactionID]
,grp634CA27B835D4A18B1E58F8992F1B031.[SortOrder]
FROM [fw].[DimServiceLineRollup] grp634CA27B835D4A18B1E58F8992F1B031 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLineRollupPH
CREATE VIEW [fw].[viewDimServiceLineRollupPH]
AS
SELECT
grp6617B9B078794F479D91C0708CEED4F0.[ServiceLineRollupPHID]
,grp6617B9B078794F479D91C0708CEED4F0.[Name]
,grp6617B9B078794F479D91C0708CEED4F0.[MemberGUID]
,grp6617B9B078794F479D91C0708CEED4F0.[HistoryItemGUID]
,grp6617B9B078794F479D91C0708CEED4F0.[TransactionID]
FROM [fw].[DimServiceLineRollupPH] grp6617B9B078794F479D91C0708CEED4F0 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimServiceLine_source
CREATE VIEW [fw].[viewDimServiceLine_source]
AS
SELECT
grpB9907EAC036D4FC5BFF43432DC038E7A.[ServiceLineID]
,grpB9907EAC036D4FC5BFF43432DC038E7A.[Name]
,grpB9907EAC036D4FC5BFF43432DC038E7A.[MemberGUID]
,grpB9907EAC036D4FC5BFF43432DC038E7A.[HistoryItemGUID]
,ISNULL([SERVICELINEROLLUP].[Name], 'Not Specified') as [Rollup]
,ISNULL([SERVICELINEROLLUP].[SortOrder], 0) as [RollupSortOrder]
FROM [fw].[DimServiceLine] grpB9907EAC036D4FC5BFF43432DC038E7A (readuncommitted)
LEFT JOIN [fw].[viewDimServiceLineRollup] [SERVICELINEROLLUP] on [SERVICELINEROLLUP].[ServiceLineRollupID] = [grpB9907EAC036D4FC5BFF43432DC038E7A].[RollupID]
GO
---------------------------------------------
-- fw.viewDimSourceOfSavings
--Last Modified 10/31/2018 9:48 AM
CREATE VIEW [fw].[viewDimSourceOfSavings]
AS
SELECT
grp91260CC7FCE64FEE96459705BF43D6CB.[SourceOfSavingsID]
,grp91260CC7FCE64FEE96459705BF43D6CB.[Name]
,grp91260CC7FCE64FEE96459705BF43D6CB.[MemberGUID]
,grp91260CC7FCE64FEE96459705BF43D6CB.[HistoryItemGUID]
,grp91260CC7FCE64FEE96459705BF43D6CB.[TransactionID]
FROM [fw].[DimSourceOfSavings] grp91260CC7FCE64FEE96459705BF43D6CB (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimStaffingCategory_auto
--Last Modified 3/27/2023 4:41 PM
CREATE VIEW [fw].[viewDimStaffingCategory_auto]
AS
SELECT
grp14EBA885F7334C2AA07343FD9886CAF6.[StaffingCategoryID]
,coalesce(grp14EBA885F7334C2AA07343FD9886CAF6.[Name],'') as [Name]
,grp14EBA885F7334C2AA07343FD9886CAF6.[TransactionID]
,grp14EBA885F7334C2AA07343FD9886CAF6.[MemberGUID]
,grp14EBA885F7334C2AA07343FD9886CAF6.[HistoryItemGUID]
,grp14EBA885F7334C2AA07343FD9886CAF6.[StaffingCategoryCode]
,grp14EBA885F7334C2AA07343FD9886CAF6.[Description]
FROM [fw].[DimStaffingCategory] grp14EBA885F7334C2AA07343FD9886CAF6 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimStrataDecisionServiceLine
--Last Modified 6/3/2015 4:41 PM
CREATE VIEW [fw].[viewDimStrataDecisionServiceLine]
AS
SELECT
grp44649CCD9FB74ECF80BB88D6C5033A8C.[StrataDecisionServiceLineID]
,grp44649CCD9FB74ECF80BB88D6C5033A8C.[Name]
,grp44649CCD9FB74ECF80BB88D6C5033A8C.[TransactionID]
,grp44649CCD9FB74ECF80BB88D6C5033A8C.[MemberGUID]
,grp44649CCD9FB74ECF80BB88D6C5033A8C.[HistoryItemGUID]
,grp44649CCD9FB74ECF80BB88D6C5033A8C.[PatientTypeID]
FROM [fw].[DimStrataDecisionServiceLine] grp44649CCD9FB74ECF80BB88D6C5033A8C (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSystem
CREATE VIEW [fw].[viewDimSystem]
AS
SELECT
[SystemID],
COALESCE([Name],'') as [Name],
[Code],
[Description],
[SortOrder],
[SecureGroupID],
[TransactionID],
[HistoryItemGUID],
[MemberGUID],
[EliminationsDepartmentID]
FROM [fw].[DimSystem] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimSystemSection
create view [fw].[viewDimSystemSection]
as
select
SS.SYSTEMSECTIONGUID as MemberGUID,
SS.Name,
SS.ImageName,
coalesce(nullif(replace(replace(replace(substring(replace(SS.FullPath, 'SYSTEM\', ''), 1, patindex('%\%', replace(SS.FullPath, 'SYSTEM\', ''))), '\', ''), 'TOOLBAR_', ''), 'MENU_', ''), ''), 'System') as Area,
coalesce(nullif(replace(substring(replace(SS.FullPath, 'SYSTEM\', ''), 1, patindex('%\%', replace(SS.FullPath, 'SYSTEM\', ''))), '\', ''), ''), 'System') as Section,
coalesce(nullif(replace(replace(replace(substring(replace(SS.FullPath, 'SYSTEM\', ''), 1, patindex('%\%', replace(SS.FullPath, 'SYSTEM\', ''))), '\', ''), 'TOOLBAR_', ''), 'MENU_', ''), ''), 'System')
+ ' - ' +
coalesce(nullif(replace(substring(replace(SS.FullPath, 'SYSTEM\', ''), 1, patindex('%\%', replace(SS.FullPath, 'SYSTEM\', ''))), '\', ''), ''), 'System')
+ ' - ' + SS.Name as [FullName],
SS.ID,
SS.LootID,
coalesce(PSS.Name, 'System') as Parent,
coalesce(PSS.LootID, '1F30ED4A-DFA5-4EA6-8457-20D23DB372C3') as ParentLootID,
cast(0 as bit) as IsDeleted,
dbo.ZeroGUID() as HistoryItemGUID
from SystemSection SS
left join SystemSection PSS on PSS.SystemSectionGUID = SS.ParentGUID
--inner join S3Loot L on L.LootID = SS.LootID
--inner join S3PermissionSet PS on PS.PermissionSetID = L.PermissionSetID --why do we do this? AJK
--where PS.Name like '%System%'
GO
---------------------------------------------
-- fw.viewDimSystem_source
CREATE VIEW [fw].[viewDimSystem_source]
AS
SELECT
grpF27719422C1141E2BDF4C0F24660B263.[SystemID]
,grpF27719422C1141E2BDF4C0F24660B263.[Name]
,grpF27719422C1141E2BDF4C0F24660B263.[SecureGroupID]
,grpF27719422C1141E2BDF4C0F24660B263.[TransactionID]
,grpF27719422C1141E2BDF4C0F24660B263.[HistoryItemGUID]
,grpF27719422C1141E2BDF4C0F24660B263.[MemberGUID]
FROM [fw].[DimSystem] grpF27719422C1141E2BDF4C0F24660B263 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimTimeClass
CREATE VIEW [fw].[viewDimTimeClass]
AS
SELECT
grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[MemberGUID]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[TimeClassID]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[Name]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[TimeClassCode]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[GlobalID]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[IsSP]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[SPIsISForecast]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[HistoryItemGUID]
,grp5A23BD5828DE40AC868EBCB6F1CE3FF8.[SortOrder]
, [grp5A23BD5828DE40AC868EBCB6F1CE3FF8].[Version]FROM [fw].[DimTimeClass] grp5A23BD5828DE40AC868EBCB6F1CE3FF8 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimTimeClassPH
CREATE VIEW [fw].[viewDimTimeClassPH]
AS
SELECT
[TimeClassPHID],
[Name],
[MemberGUID]
FROM [fw].[DimTimeClassPH] (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimTimeClassPH_source
CREATE VIEW [fw].[viewDimTimeClassPH_source]
AS
SELECT
grp1132ACA8D57B494890AE52DD6857E83B.[TimeClassPHID]
,grp1132ACA8D57B494890AE52DD6857E83B.[MemberGUID]
FROM [fw].[DimTimeClassPH] grp1132ACA8D57B494890AE52DD6857E83B (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimTime_auto
--Last Modified 1/8/2019 1:37 PM
CREATE VIEW [fw].[viewDimTime_auto]
AS
SELECT
grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[TimeID]
,grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[TransactionID]
,coalesce(grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[Name],'') as [Name]
,grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[Hour]
,grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[Minute]
,grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[MemberGUID]
,grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[StandardTime]
,grp35B3D1A6EEAC4E0CA47893B67CD0FD99.[HistoryItemGUID]
, [grp35B3D1A6EEAC4E0CA47893B67CD0FD99].[Version]FROM [fw].[DimTime] grp35B3D1A6EEAC4E0CA47893B67CD0FD99 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimUnitType
CREATE VIEW [fw].[viewDimUnitType]
AS
SELECT
grp7B1AFC84DBD346F9A5E90839ADF09065.[UnitTypeID]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[Name]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[GlobalID]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[DisplayFormat]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[SPDisplayFormat]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[CapitalDisplayFormat]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[MemberGUID]
,grp7B1AFC84DBD346F9A5E90839ADF09065.[HistoryItemGUID]
, [grp7B1AFC84DBD346F9A5E90839ADF09065].[Version]FROM [fw].[DimUnitType] grp7B1AFC84DBD346F9A5E90839ADF09065 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimUnit_auto
--Last Modified 10/22/2020 5:41 PM
CREATE VIEW [fw].[viewDimUnit_auto]
AS
SELECT
grpB9BA9ECBC1214A079F252B81ED4DFE6F.[Name]
,grpB9BA9ECBC1214A079F252B81ED4DFE6F.[Abbreviation]
,grpB9BA9ECBC1214A079F252B81ED4DFE6F.[MemberGUID]
,grpB9BA9ECBC1214A079F252B81ED4DFE6F.[UnitID]
,grpB9BA9ECBC1214A079F252B81ED4DFE6F.[SortOrder]
,grpB9BA9ECBC1214A079F252B81ED4DFE6F.[IsActive]
, [grpB9BA9ECBC1214A079F252B81ED4DFE6F].[Version], [grpB9BA9ECBC1214A079F252B81ED4DFE6F].[HistoryItemGUID]FROM [fw].[DimUnit] grpB9BA9ECBC1214A079F252B81ED4DFE6F (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimUserProfile
CREATE view [fw].[viewDimUserProfile]
as
select
up.UserGUID as MemberGUID,
up.UserGUID,
up.UserName,
up.NameFull,
ISNULL(CAST(CASE WHEN IL.GroupingGUID IS NULL THEN 0 ELSE 1 END AS bit),0) AS IsSysAdmin,
CAST (0 as bit) as IsDeleted,
dbo.ZeroGUID() as HistoryItemGUID,
CAST(UserGUID as varchar(36)) as LootID
from UserProfile up
left join [dbo].[S3IdentityLink] IL on UP.UserGUID = IL.MemberGUID and IL.GroupingGUID = (select UserGroupGUID from [dbo].[UserGroup] where GlobalID = 'GEN - User Administrator')
where up.IsDisabled = 0
GO
---------------------------------------------
-- fw.viewDimUserRole
CREATE VIEW [fw].[viewDimUserRole]
AS
SELECT
grp35E4A606568B4382851EBD0183D9C8CF.[Description]
,grp35E4A606568B4382851EBD0183D9C8CF.[Type]
,grp35E4A606568B4382851EBD0183D9C8CF.[Category]
,grp35E4A606568B4382851EBD0183D9C8CF.[RoleID]
,grp35E4A606568B4382851EBD0183D9C8CF.[Name]
,grp35E4A606568B4382851EBD0183D9C8CF.[MemberGUID]
,grp35E4A606568B4382851EBD0183D9C8CF.[HistoryItemGUID]
FROM [fw].[viewDimUserRoleInfo] grp35E4A606568B4382851EBD0183D9C8CF
GO
---------------------------------------------
-- fw.viewDimUserRoleInfo
create view fw.viewDimUserRoleInfo
as
select
UserRoleGUID as MemberGUID,
RoleID,
Name,
Description,
Type,
Category,
dbo.ZeroGUID() as HistoryItemGUID
from
[dbo].[UserRole] with (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimUsers
CREATE view fw.viewDimUsers
AS
select
UP.UserGUID as [MemberGUID],
UP.UserGUID as [UserGUID],
UP.UserName,
UP.NameFirst,
UP.NameLast,
UP.NameFull,
UP.EmailAddress,
UP.PhoneNumber,
ISNULL(CAST(CASE WHEN IL.GroupingGUID IS NULL THEN 0 ELSE 1 END AS bit),0) AS IsSysAdmin
from dbo.UserProfile UP
left join [dbo].[S3IdentityLink] IL on UP.UserGUID = IL.MemberGUID and IL.GroupingGUID = (select UserGroupGUID from [dbo].[UserGroup] where GlobalID = 'GEN - User Administrator')
GO
---------------------------------------------
-- fw.viewDimUsers_auto
CREATE VIEW [fw].[viewDimUsers_auto]
AS
SELECT
grp1F25D2EFD624418E8482FEAB7BAE4841.[MemberGUID]
,coalesce(grp1F25D2EFD624418E8482FEAB7BAE4841.[UserName],'') as [UserName]
,coalesce(grp1F25D2EFD624418E8482FEAB7BAE4841.[NameFirst],'') as [NameFirst]
,coalesce(grp1F25D2EFD624418E8482FEAB7BAE4841.[NameLast],'') as [NameLast]
,coalesce(grp1F25D2EFD624418E8482FEAB7BAE4841.[EmailAddress],'') as [EmailAddress]
,coalesce(grp1F25D2EFD624418E8482FEAB7BAE4841.[PhoneNumber],'') as [PhoneNumber]
,grp1F25D2EFD624418E8482FEAB7BAE4841.[IsSysAdmin]
,coalesce(grp1F25D2EFD624418E8482FEAB7BAE4841.[NameFull],'') as [NameFull]
,grp1F25D2EFD624418E8482FEAB7BAE4841.[UserGUID]
FROM [fw].[viewDimUsers] grp1F25D2EFD624418E8482FEAB7BAE4841
GO
---------------------------------------------
-- fw.viewDimVariability
--Last Modified 12/9/2016 2:10 PM
CREATE VIEW [fw].[viewDimVariability]
AS
SELECT
grp093B96C5E7324756BDD0329EB4A55B43.[VariabilityID]
,grp093B96C5E7324756BDD0329EB4A55B43.[Name]
,grp093B96C5E7324756BDD0329EB4A55B43.[TransactionID]
,grp093B96C5E7324756BDD0329EB4A55B43.[MemberGUID]
,grp093B96C5E7324756BDD0329EB4A55B43.[HistoryItemGUID]
FROM [fw].[DimVariability] grp093B96C5E7324756BDD0329EB4A55B43 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimVendor
CREATE VIEW [fw].[viewDimVendor]
AS
SELECT
VendorCode AS [VendorCode]
,MemberGUID
,VendorID AS [VendorID]
,Name
,VendorRollup
,VendorDescription
,IsActive
FROM [cap].[DimVendor];
GO
---------------------------------------------
-- fw.viewDimVendor_auto
--Last Modified 7/18/2017 3:21 PM
CREATE VIEW [fw].[viewDimVendor_auto]
AS
SELECT
grpA3C8AA18CD8446948E36DB868059BC19.[VendorCode]
,grpA3C8AA18CD8446948E36DB868059BC19.[MemberGUID]
,grpA3C8AA18CD8446948E36DB868059BC19.[VendorID]
,coalesce(grpA3C8AA18CD8446948E36DB868059BC19.[VendorRollup],'') as [VendorRollup]
,grpA3C8AA18CD8446948E36DB868059BC19.[VendorDescription]
,grpA3C8AA18CD8446948E36DB868059BC19.[IsActive]
,[grpA3C8AA18CD8446948E36DB868059BC19].[VendorCode] + ' - ' + [grpA3C8AA18CD8446948E36DB868059BC19].[VendorDescription] AS [Name]
FROM [fw].[viewDimVendor] grpA3C8AA18CD8446948E36DB868059BC19
GO
---------------------------------------------
-- fw.viewDimWorkWeek
--Last Modified 3/3/2015 10:40 AM
CREATE VIEW [fw].[viewDimWorkWeek]
AS
SELECT
grpFDAFCE80DC5344DA9680D20E7596BC98.[MemberGUID]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[WorkWeekID]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[Name]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[WorkWeekCode]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[Type]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[TransactionID]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[HistoryItemGUID]
,grpFDAFCE80DC5344DA9680D20E7596BC98.[SortOrder]
FROM [fw].[DimWorkWeek] grpFDAFCE80DC5344DA9680D20E7596BC98 (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimWorkWeekPH
CREATE VIEW [fw].[viewDimWorkWeekPH]
AS
SELECT
grp5B25135186E54281B07A9C0128CEBF9E.[MemberGUID]
,grp5B25135186E54281B07A9C0128CEBF9E.[WorkWeekPHID]
,grp5B25135186E54281B07A9C0128CEBF9E.[Name]
,grp5B25135186E54281B07A9C0128CEBF9E.[TransactionID]
,grp5B25135186E54281B07A9C0128CEBF9E.[HistoryItemGUID]
FROM [fw].[DimWorkWeekPH] grp5B25135186E54281B07A9C0128CEBF9E (readuncommitted)
GO
---------------------------------------------
-- fw.viewDimXPlan
CREATE view [fw].[viewDimXPlan]
as
select
P.PlanGUID as MemberGUID,
ISNULL(case when P.IsDeletedPlan = 1 then 'DELETED ' + P.Name else P.Name end,'') as Name,
P.PlanID,
P.CachedLootID,
P.IsDeletedPlan as IsDeleted,
P.PlanTypeGUID,
PT.Name as PlanTypeName
from
XPlan P (readuncommitted)
inner join PlanType PT (readuncommitted) on PT.PlanTypeGUID = P.PlanTypeGUID
GO
---------------------------------------------
-- fw.viewDimXPlan_auto
CREATE VIEW [fw].[viewDimXPlan_auto]
AS
SELECT
grpF444702419784B9EB154D1C4369A77C8.[MemberGUID]
,coalesce(grpF444702419784B9EB154D1C4369A77C8.[Name],'') as [Name]
,grpF444702419784B9EB154D1C4369A77C8.[PlanID]
,coalesce(grpF444702419784B9EB154D1C4369A77C8.[CachedLootID],'') as [CachedLootID]
,grpF444702419784B9EB154D1C4369A77C8.[PlanTypeGUID]
,grpF444702419784B9EB154D1C4369A77C8.[PlanTypeName]
,grpF444702419784B9EB154D1C4369A77C8.[IsDeleted]
FROM [fw].[viewDimXPlan] grpF444702419784B9EB154D1C4369A77C8
GO
---------------------------------------------
-- fw.viewEliminationsDepartment
create view fw.viewEliminationsDepartment
as
select
d.DepartmentID,
d.Name
from
fw.viewDimDepartment d
where
d.DepartmentID != 0
and (
exists(select 1 from fw.DimSystem s where s.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimEntity e where e.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimDepartmentRollup1 r1 where r1.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimDepartmentRollup2 r2 where r2.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimDepartmentRollup3 r3 where r3.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimDepartmentRollup4 r4 where r4.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimDepartmentRollup5 r5 where r5.EliminationsDepartmentID = d.DepartmentID)
or exists(select 1 from fw.DimDepartmentRollup6 r6 where r6.EliminationsDepartmentID = d.DepartmentID)
)
GO
---------------------------------------------
-- fw.viewFactGLSampled
CREATE view [fw].[viewFactGLSampled] as
select
fact.DepartmentID,
dept.DepartmentCode,
fact.AccountID,
acc.AccountCode,
accrollup.LineName as AccountRollup,
accrollup.Section as AccountCategory,
accrollup.Name as FinancialReporting,
fact.TimeClassID,
tc.TimeClassCode,
fact.FiscalYearID,
fy.Name,
fact.FiscalMonthID,
fm.FiscalMonthCode,
fm.SortOrder as FiscalMonthSortOrder,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD
from
fw.FactGLSampled fact
left join fw.DimDepartment dept on dept.DepartmentID=fact.DepartmentID
left join fw.DimAccount acc on acc.AccountID=fact.AccountID
left join fw.DimTimeClass tc on tc.TimeClassID=fact.TimeClassID
left join fw.DimFiscalMonth fm on fm.FiscalMonthID=fact.FiscalMonthID
left join fw.DimFiscalYear fy on fy.FiscalYearID=fact.FiscalYearID
left join [ob].[DimFinancialReporting] accrollup on acc.OBDollarsFinancialReportingID = accrollup.FinancialReportingID
where
fact.IsDeleted = 0
GO
---------------------------------------------
-- fw.viewFactPayrollSampledDailyDetailedHours
--recreate referenced view
CREATE VIEW fw.viewFactPayrollSampledDailyDetailedHours
WITH SCHEMABINDING
AS
SELECT
pr.RowID,
pr.PayCodeGroupID,
pr.DateID,
pr.DepartmentID,
pr.EmployeeID,
pr.JobCodeID,
pr.TimeClassID,
pr.PayPeriodID,
pr.Hours
FROM
fw.FactPayrollSampledDailyDetailed pr
WHERE
pr.TimeClassID IN (1, 4, 20)
AND pr.EmployeeID <> 0
AND pr.Hours <> 0;
GO
---------------------------------------------
-- fw.viewFactPayrollSampledMonthly
CREATE view [fw].[viewFactPayrollSampledMonthly] as
select
fact.DepartmentID,
dept.DepartmentCode,
fact.JobCodeID,
jc.JobCode,
fact.PayCodeID,
pc.PayCode,
fact.TimeClassID,
tc.TimeClassCode,
fact.FiscalYearID,
fy.Name,
fact.FiscalMonthID,
fm.FiscalMonthCode,
fm.SortOrder as FiscalMonthSortOrder,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
fact.FTEs,
fact.FTEsYTD,
fact.FTEsPriorYear,
fact.FTEsPriorYTD
from
fw.FactPayrollSampledMonthly fact
left join fw.DimDepartment dept on dept.DepartmentID=fact.DepartmentID
left join fw.DimJobCode jc on jc.JobCodeID=fact.JobCodeID
left join fw.DimPayCode pc on pc.PayCodeID=fact.PayCodeID
left join fw.DimTimeClass tc on tc.TimeClassID=fact.TimeClassID
left join fw.DimFiscalMonth fm on fm.FiscalMonthID=fact.FiscalMonthID
left join fw.DimFiscalYear fy on fy.FiscalYearID=fact.FiscalYearID
where
fact.IsDeleted = 0
GO
---------------------------------------------
-- fw.viewFactStatiscticDailyWithReallocaitonAdjustments
/************************************************************
** Author: ipetriv
** Create Date: 2017-7-26
** Description: View to append to int.FactStatistic PR statistic reallocation adjustments
** Last Modified: 2017-7-26
** GM Release: 2018.1
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-7-26 IP B-16752 Added section for daily spread adjustments
*************************************************************/
CREATE VIEW fw.[viewFactStatiscticDailyWithReallocaitonAdjustments]
as
SELECT
SubSelect.DepartmentID,
SubSelect.AccountID,
SubSelect.FiscalMonthID,
SubSelect.FiscalYearID,
DT.DateID,
SubSelect.TimeClassID,
SUM(SubSelect.Units) AS Units
FROM (
select
STAT.DepartmentID,
STAT.AccountID,
STAT.FiscalYearID,
STAT.FiscalMonthID,
STAT.TimeClassID,
SUM(STAT.Value) AS Units
from
[int].[FactStatistic] STAT
inner join [fw].[DimDepartment] D on D.Departmentid = STAT.Departmentid
where
STAT.FiscalMonthID != 0
and STAT.FiscalYearID != 0
and STAT.IsDeleted = 0
and STAT.Value != 0
and (D.IsPR = 1 or exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache dc where dc.DriverDepartmentID = D.DepartmentID))
and stat.TimeClassID = 2
and stat.DepartmentID != 0
group by
STAT.DepartmentID,
STAT.AccountID,
STAT.FiscalMonthID,
STAT.FiscalYearID,
STAT.TimeClassID
UNION ALL
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change * -1 as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[DimDepartment] D on D.Departmentid = SourceDepartmentID and (D.IsPR = 1 or exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache dc where dc.DriverDepartmentID = D.DepartmentID))
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
UNION All
SELECT
TargetDepartmentID as DepartmentID,
TargetAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[DimDepartment] D on D.Departmentid = TargetDepartmentID and (D.IsPR = 1 or exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache dc where dc.DriverDepartmentID = D.DepartmentID))
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
--Spread Adjustments within same Department/Account
UNION All
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[DimDepartment] D on D.Departmentid = SourceDepartmentID and (D.IsPR = 1 or exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache dc where dc.DriverDepartmentID = D.DepartmentID))
WHERE b.TargetDepartmentID=0 AND b.TargetAccountID=0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
) SubSelect
inner join [fw].[DimDate] DT on DT.CalendarMonth = SubSelect.FiscalMonthID and DT.FiscalYear = SubSelect.FiscalYearID
GROUP BY
SubSelect.DepartmentID,
SubSelect.AccountID,
SubSelect.FiscalMonthID,
SubSelect.FiscalYearID,
DT.DateID,
SubSelect.TimeClassID
GO
---------------------------------------------
-- fw.viewFactStatiscticMonthlyWithReallocaitonAdjustments
CREATE View fw.[viewFactStatiscticMonthlyWithReallocaitonAdjustments] as
/************************************************************
** Author: ipetriv
** Create Date: 2017-7-26
** Description: View to append to int.FactStatistic MR statistic reallocation adjustments
** Last Modified: 2017-7-26
** GM Release: 2018.1
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-7-26 IP B-16752 Added section for monthly spread adjustments
*************************************************************/
SELECT
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
SUM(Amount) as Amount
FROM (
select
stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID,
STAT.Value as Amount
from
int.FactStatistic stat
inner join fw.DimAccount A on A.Accountid = STAT.Accountid
inner join fw.DimDepartment D on D.Departmentid = STAT.Departmentid
where
A.IsStat = 1
AND stat.IsDeleted = 0
and stat.Value != 0
UNION ALL
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change * -1 as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
UNION All
SELECT
TargetDepartmentID as DepartmentID,
TargetAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
--Spread Adjustments within same Department/Account
UNION All
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
WHERE b.TargetDepartmentID=0 AND b.TargetAccountID=0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
) SubSelect
GROUP BY
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID
GO
---------------------------------------------
-- fw.viewFactStatiscticPrimaryMonthlyWithReallocaitonAdjustments
CREATE View fw.[viewFactStatiscticPrimaryMonthlyWithReallocaitonAdjustments] as
/************************************************************
** Author: ipetriv
** Create Date: 2017-7-26
** Description: View to append to int.FactStatistic MR statistic reallocation adjustments
** Last Modified: 2017-7-26
** GM Release: 2018.1
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-7-26 IP B-16752 Added section for monthly spread adjustments
*************************************************************/
SELECT
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
SUM(Amount) as Amount
FROM (
select
stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID,
STAT.Value as Amount
from
int.FactStatistic stat
inner join fw.DimAccount A on A.Accountid = STAT.Accountid
inner join fw.DimDepartment D on D.Departmentid = STAT.Departmentid
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=stat.AccountID and V.DepartmentID=stat.DepartmentID
where
A.IsStat = 1
AND stat.IsDeleted = 0
and stat.Value != 0
UNION ALL
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change * -1 as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=A.AccountID and V.DepartmentID=SourceDepartmentID
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
UNION All
SELECT
TargetDepartmentID as DepartmentID,
TargetAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=A.AccountID and V.DepartmentID=TargetDepartmentID
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
--Spread Adjustments within same Department/Account
UNION All
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=A.AccountID and V.DepartmentID=SourceDepartmentID
WHERE b.TargetDepartmentID=0 AND b.TargetAccountID=0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
) SubSelect
GROUP BY
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID
GO
---------------------------------------------
-- fw.viewFactStatisticByPayPeriodWithReallocaitonAdjustments
CREATE VIEW fw.viewFactStatisticByPayPeriodWithReallocaitonAdjustments
/************************************************************
** Author: ipetriv
** Create Date: 2017-7-26
** Description: View to append to int.FactStatistic MR statistic reallocation adjustments
** Last Modified: 2017-7-26
** GM Release: 2018.1
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-7-26 IP B-16752 Added section for monthly spread adjustments
*************************************************************/
AS
SELECT DepartmentID,
AccountID,
PayPeriodID,
TimeClassID,
sum(Value) AS Value
FROM (
SELECT STAT.DepartmentID,
STAT.AccountID,
STAT.PayPeriodID,
STAT.TimeClassID,
STAT.Value
FROM [int].[FactStatisticsbyPayPeriod] STAT
INNER JOIN [fw].[DimDepartment] D
ON D.Departmentid = STAT.Departmentid
WHERE STAT.Value != 0
AND STAT.Isdeleted = 0
AND STAT.PayPeriodID != 0
AND (
D.IsPR = 1
OR EXISTS (
SELECT 1
FROM client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache dc
WHERE dc.DriverDepartmentID = D.DepartmentID
)
)
AND STAT.TimeClassID IN (1,2)
AND stat.DepartmentID <> 0
--ADD ADJUSTMENTS
UNION ALL
SELECT ADJ.DepartmentID,
ADJ.AccountID,
PP.PayPeriodID,
2 AS TimeClassID,
Adj.Amount * PP.PreriodWeight AS Units
FROM (
SELECT DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
SUM(Value) AS Amount
FROM (
SELECT SourceDepartmentID AS DepartmentID,
SourceAccountID AS AccountID,
FiscalYearID,
FiscalMonthID,
2 AS TimeclassID,
Change * - 1 AS Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba
ON b.BudgetReallocationGUID = ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A
ON SourceAccountID = A.AccountID
WHERE b.TargetDepartmentID <> 0
AND b.TargetAccountID <> 0
AND ba.UnitTypeID = 145 /*select * from fw.dimUnitType where Name = 'Units'*/
UNION ALL
SELECT TargetDepartmentID AS DepartmentID,
TargetAccountID AS AccountID,
FiscalYearID,
FiscalMonthID,
2 AS TimeclassID,
Change AS Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba
ON b.BudgetReallocationGUID = ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A
ON SourceAccountID = A.AccountID
WHERE b.TargetDepartmentID <> 0
AND b.TargetAccountID <> 0
AND ba.UnitTypeID = 145 /*select * from fw.dimUnitType where Name = 'Units'*/
--Spread Adjustments within same Department/Account
UNION ALL
SELECT SourceDepartmentID AS DepartmentID,
SourceAccountID AS AccountID,
FiscalYearID,
FiscalMonthID,
2 AS TimeclassID,
Change AS Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba
ON b.BudgetReallocationGUID = ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A
ON SourceAccountID = A.AccountID
WHERE b.TargetDepartmentID = 0
AND b.TargetAccountID = 0
AND ba.UnitTypeID = 145 /*select * from fw.dimUnitType where Name = 'Units'*/
) SubSelect
GROUP BY DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID
) AS Adj
INNER JOIN fw.DimDepartment dd
ON adj.DepartmentID = dd.DepartmentID
INNER JOIN (
SELECT [PayPeriodID],
PayCycleID,
[PeriodNumber],
[FiscalMonthIDStart] AS FiscalMonthID,
[FiscalYearIDStart] AS FiscalYearID,
[PeriodWeightStart] AS PreriodWeight
FROM [fw].[DimPayPeriod]
UNION ALL
SELECT [PayPeriodID],
PayCycleID,
[PeriodNumber],
FiscalMonthIDSecond AS FiscalMonthID,
FiscalYearIDSecond AS FiscalYearID,
PeriodWeightSecond AS PreriodWeight
FROM [fw].[DimPayPeriod]
) PP
ON PP.FiscalYearID = Adj.FiscalYearID
AND pp.FiscalMonthID = adj.FiscalMonthID
AND pp.PayCycleID = dd.PayCycleID
AND Adj.Amount * PP.PreriodWeight <> 0
) SubSelect
GROUP BY DepartmentID,
AccountID,
PayPeriodID,
TimeClassID
GO
---------------------------------------------
-- fw.viewFactStatisticRollupPrimarySampledMonthly
CREATE VIEW [fw].[viewFactStatisticRollupPrimarySampledMonthly]
AS
SELECT
cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID,
sum(fs.Amount) as Amount,
sum(fs.AmountYTD) as AmountYTD,
sum(fs.AmountPriorYear) as AmountPriorYear,
sum(fs.AmountPriorYTD) as AmountPriorYTD,
min(cast(fs.IsSystemGenerated AS INT)) AS IsSystemGenerated
FROM [fw].FactStatisticSampledMonthly fs
INNER JOIN fw.DimDepartment dd ON fs.DepartmentID = dd.DepartmentID
INNER JOIN fw.PrimaryStatisticsRollupsConfiguration cfg ON (
(cfg.RollupLevel = 'DepartmentRollup1' AND cfg.RollupMemberID = dd.DepartmentRollup1ID)
OR (cfg.RollupLevel = 'DepartmentRollup2' AND cfg.RollupMemberID = dd.DepartmentRollup2ID)
OR (cfg.RollupLevel = 'DepartmentRollup3' AND cfg.RollupMemberID = dd.DepartmentRollup3ID)
OR (cfg.RollupLevel = 'DepartmentRollup4' AND cfg.RollupMemberID = dd.DepartmentRollup4ID)
OR (cfg.RollupLevel = 'DepartmentRollup5' AND cfg.RollupMemberID = dd.DepartmentRollup5ID)
OR (cfg.RollupLevel = 'DepartmentRollup6' AND cfg.RollupMemberID = dd.DepartmentRollup6ID)
OR (cfg.RollupLevel = 'Entity' AND cfg.RollupMemberID = dd.EntityID)
OR (cfg.RollupLevel = 'System' AND cfg.RollupMemberID = dd.SystemID)
) AND fs.AccountID = cfg.AccountID
WHERE fs.IsDeleted = 0
AND IsMRMetricTracking = 1
GROUP BY
cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID
GO
---------------------------------------------
-- fw.viewFactStatisticSampledMonthly
CREATE view [fw].[viewFactStatisticSampledMonthly] as
select
fact.DepartmentID,
dept.DepartmentCode,
fact.AccountID,
acc.AccountCode,
accrollup.LineName as AccountRollup,
accrollup.Section as AccountCategory,
accrollup.Name as FinancialReporting,
fact.TimeClassID,
tc.TimeClassCode,
fact.FiscalYearID,
fy.Name,
fact.FiscalMonthID,
fm.FiscalMonthCode,
fm.SortOrder as FiscalMonthSortOrder,
fact.Amount,
fact.AmountPriorYear,
fact.AmountPriorYTD,
fact.AmountYTD
from
fw.FactStatisticSampledMonthly fact
left join fw.DimDepartment dept on dept.DepartmentID=fact.DepartmentID
left join fw.DimAccount acc on acc.AccountID=fact.AccountID
left join fw.DimTimeClass tc on tc.TimeClassID=fact.TimeClassID
left join fw.DimFiscalMonth fm on fm.FiscalMonthID=fact.FiscalMonthID
left join fw.DimFiscalYear fy on fy.FiscalYearID=fact.FiscalYearID
left join [ob].[DimFinancialReporting] accrollup on acc.OBDollarsFinancialReportingID = accrollup.FinancialReportingID
where
fact.IsDeleted = 0
GO
---------------------------------------------
-- fw.viewFactStatisticSecondaryMonthlyWithReallocaitonAdjustments
CREATE View fw.[viewFactStatisticSecondaryMonthlyWithReallocaitonAdjustments] as
/************************************************************
** Author: ipetriv
** Create Date: 2017-7-26
** Description: View to append to int.FactStatistic MR statistic reallocation adjustments
** Last Modified: 2017-7-26
** GM Release: 2018.1
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-7-26 IP B-16752 Added section for monthly spread adjustments
*************************************************************/
SELECT
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
SUM(Amount) as Amount
FROM (
select
stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID,
STAT.Value as Amount
from
int.FactStatistic stat
inner join fw.DimAccount A on A.Accountid = STAT.Accountid
inner join fw.DimDepartment D on D.Departmentid = STAT.Departmentid
inner join [fw].[viewStatisticSecondaryConfiguration] V on V.AccountID=stat.AccountID and V.DepartmentID=stat.DepartmentID
where
A.IsStat = 1
AND stat.IsDeleted = 0
and stat.Value != 0
UNION ALL
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change * -1 as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=A.AccountID and V.DepartmentID=SourceDepartmentID
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
UNION All
SELECT
TargetDepartmentID as DepartmentID,
TargetAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[viewStatisticSecondaryConfiguration] V on V.AccountID=A.AccountID and V.DepartmentID=TargetDepartmentID
WHERE b.TargetDepartmentID<>0 AND b.TargetAccountID<>0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
--Spread Adjustments within same Department/Account
UNION All
SELECT
SourceDepartmentID as DepartmentID,
SourceAccountID as AccountID,
FiscalYearID,
FiscalMonthID,
2 as TimeclassID,
Change as Value
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimAccount] A on SourceAccountID=A.AccountID
inner join [fw].[viewStatisticSecondaryConfiguration] V on V.AccountID=A.AccountID and V.DepartmentID=SourceDepartmentID
WHERE b.TargetDepartmentID=0 AND b.TargetAccountID=0
and ba.UnitTypeID =145 /*select * from fw.dimUnitType where Name = 'Units'*/
) SubSelect
GROUP BY
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID
GO
---------------------------------------------
-- fw.viewFiscalYearMonth
CREATE VIEW [fw].[viewFiscalYearMonth] AS
SELECT
ROW_NUMBER() over (order by y.fiscalyearid, m.sortorder) as FiscalTimeID,
FiscalMonthID, m.Name as [FiscalMonth],
y.FiscalYearID, y.Name as [FiscalYear]
FROM
fw.DimFiscalMonth m
CROSS JOIN
fw.DimFiscalYear y
WHERE
m.FiscalMonthID <> 0 AND y.FiscalYearID <> 0
GO
---------------------------------------------
-- fw.viewLeapYearByFiscalYear
CREATE VIEW fw.viewLeapYearByFiscalYear
AS
SELECT DISTINCT
CalendarYear,
FiscalYear,
CASE WHEN (FiscalYear % 4 = 0 AND FiscalYear % 100 != 0) OR FiscalYear % 400 = 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END AS IsLeapYear
FROM [fw].[DimDate]
WHERE CalendarMonth = 2
GO
---------------------------------------------
-- fw.viewMRGLBudgetCostPerRVUbyMonth
CREATE VIEW [fw].[viewMRGLBudgetCostPerRVUbyMonth] AS
SELECT
A.DepartmentID
,B.AccountID
,A.ChargeCodeID
,A.CostComponentID
,A.FiscalMonthID
,A.FiscalYearID
,A.ChargeVolume
,B.CostingResultID
,B.TimeClassID
,(A.ChargeVolume * A.RVU * B.VariableDirectUnitCostPerRVU) as ExtendedVariableDirectCost
,B.TotalCost
,B.TotalVariableDirectCost
FROM
(SELECT
b.DepartmentID
, b.ChargeCodeID
, ca.CostComponentID
, b.FiscalMonthID
, b.FiscalYearID
, MAX(ca.RVU) as RVU
, SUM(Volume) as ChargeVolume
FROM [dss].[FactDepartmentChargeSummary] b
INNER JOIN [dss].[ChargeAllocation] ca
ON ca.ChargeCodeID = b.ChargeCodeID
and ca.DepartmentID = b.DepartmentID
and AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
GROUP BY
b.DepartmentID, b.ChargeCodeID, ca.CostComponentID, b.FiscalMonthID, b.FiscalYearID) A
INNER JOIN
(SELECT
OriginalAccountID as AccountID
, gl.OriginalDepartmentID as DepartmentID
, gl.FiscalYearID
, gl.CostComponentID
, gl.CostingResultID
, gl.TimeClassID
, SUM(gl.VariableDirectUnitCost)/SUM(ca.RVU) as VariableDirectUnitCostPerRVU
, SUM(gl.VariableDirectUnitCost * gl.Volume) as TotalVariableDirectCost
, SUM(gl.TotalCost) as TotalCost
FROM [dss].[FactCostingOutDetailGL] gl
INNER JOIN [dss].[CostingResult] cr on gl.CostingResultID = cr.CostingResultID
INNER JOIN [dss].[CostingConfig] con on cr.CostingConfigGuid = con.CostingConfigGuid
INNER JOIN [dss].[ChargeAllocation] ca on
ca.CostingConfigGuid = con.CostingConfigGUID
and ca.ChargeCodeID = gl.ChargeCodeID
and ca.DepartmentID = gl.OriginalDepartmentID
and ca.CostComponentID = gl.CostComponentID
and AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
WHERE
gl.CostingResultID in (select CostingResultID from
(select FiscalYearID, max(CostingResultID) as CostingResultID
from [dss].[CostingResult] cr3
inner join [dss].[CostingConfig] cfg on cfg.CostingConfigGuid = cr3.CostingConfigGuid
where cr3.IsActivityBasedDetail = 1 and cr3.IsMarkedForDeletion = 0 and cr3.IsFailure = 0
group by FiscalYearID) C)
GROUP BY
gl.OriginalAccountID
, gl.OriginalDepartmentID
, gl.FiscalYearID
, gl.CostComponentID
, gl.CostingResultID
, gl.TimeClassID) B
ON
A.DepartmentID = B.DepartmentID
and A.CostComponentID = B.CostComponentID
and A.FiscalYearID = b.FiscalYearID
GO
---------------------------------------------
-- fw.viewMRPayrollBudgetCostPerRVUbyMonth
CREATE VIEW [fw].[viewMRPayrollBudgetCostPerRVUbyMonth] AS
SELECT
A.DepartmentID
,B.JobCodeID
,B.PayCodeGroupID
,A.ChargeCodeID
,A.CostComponentID
,A.FiscalMonthID
,A.FiscalYearID
,A.ChargeVolume
,B.CostingResultID
,B.TimeClassID
,(A.ChargeVolume * A.RVU * B.VariableDirectUnitCostPerRVU) as ExtendedVariableDirectCost
,B.TotalCost
,B.TotalVariableDirectCost
FROM
(SELECT
b.DepartmentID
, b.ChargeCodeID
, ca.CostComponentID
, b.FiscalMonthID
, b.FiscalYearID
, MAX(ca.RVU) as RVU
, SUM(Volume) as ChargeVolume
FROM [dss].[FactDepartmentChargeSummary] b
INNER JOIN [dss].[ChargeAllocation] ca
ON ca.ChargeCodeID = b.ChargeCodeID
and ca.DepartmentID = b.DepartmentID
and AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
GROUP BY
b.DepartmentID, b.ChargeCodeID, ca.CostComponentID, b.FiscalMonthID, b.FiscalYearID) A
INNER JOIN
(SELECT
OriginalJobCodeID as JobCodeID
, pc.PayCodeGroupID
, pay.OriginalDepartmentID as DepartmentID
, pay.FiscalYearID
, pay.CostComponentID
, pay.CostingResultID
, pay.TimeClassID
, SUM(pay.VariableDirectUnitCost)/SUM(ca.RVU) as VariableDirectUnitCostPerRVU
, SUM(pay.VariableDirectUnitCost * pay.Volume) as TotalVariableDirectCost
, SUM(pay.TotalCost) as TotalCost
FROM [dss].[FactCostingOutDetailPayroll] pay
INNER JOIN [dss].[CostingResult] cr on pay.CostingResultID = cr.CostingResultID
INNER JOIN [dss].[CostingConfig] con on cr.CostingConfigGuid = con.CostingConfigGuid
INNER JOIN [dss].[ChargeAllocation] ca on
ca.CostingConfigGuid = con.CostingConfigGUID
and ca.ChargeCodeID = pay.ChargeCodeID
and ca.DepartmentID = pay.OriginalDepartmentID
and ca.CostComponentID = pay.CostComponentID
and AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
INNER JOIN [fw].[DimPayCode] pc on pc.PayCodeID = pay.OriginalPayCodeID
WHERE
pay.CostingResultID in (select CostingResultID from
(select FiscalYearID, max(CostingResultID) as CostingResultID
from [dss].[CostingResult] cr3
inner join [dss].[CostingConfig] cfg on cfg.CostingConfigGuid = cr3.CostingConfigGuid
where cr3.IsActivityBasedDetail = 1 and cr3.IsMarkedForDeletion = 0 and cr3.IsFailure = 0
group by FiscalYearID) C)
GROUP BY
pay.OriginalJobCodeID
, pc.PayCodeGroupID
, pay.OriginalDepartmentID
, pay.FiscalYearID
, pay.CostComponentID
, pay.CostingResultID
, pay.TimeClassID) B
ON
A.DepartmentID = B.DepartmentID
and A.CostComponentID = B.CostComponentID
and A.FiscalYearID = B.FiscalYearID
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsByPayPeriod
-- primary statistics (by pay period) driver accounts
CREATE view [fw].[viewPrimaryStatisticsByPayPeriod] as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID], SUM([Units]) as Units, SUM([UnitsYTD]) as UnitsYTD, SUM([UnitsPriorYear]) as UnitsPriorYear, SUM([UnitsPriorYTD]) as UnitsPriorYTD, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.TimeClassID, fs.Units, fs.UnitsYTD, fs.UnitsPriorYear, fs.UnitsPriorYTD, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledPayPeriod] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.TimeClassID, pp.Units, pp.UnitsYTD, pp.UnitsPriorYear, pp.UnitsPriorYTD, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledPayPeriod] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsDaily
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-09-13 HV JAZZ-38145 PR Metrics Definition - Calculate Configured Daily Metrics
*************************************************************/
CREATE view [fw].[viewPrimaryStatisticsDaily]
as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID], SUM([Units]) as Units
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.DateID, fs.TimeClassID, fs.Units
FROM [fw].[FactStatisticSampledDaily] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.DateID, pp.TimeClassID, pp.Units
FROM [fw].[FactStatisticDriverDepartmentSampledDaily] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsNonStaffingExpenseByPayPeriod
-- primary statistics (by month) non-staffing driver accounts
CREATE view [fw].[viewPrimaryStatisticsNonStaffingExpenseByPayPeriod] as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID], SUM([Units]) as Units, SUM([UnitsYTD]) as UnitsYTD, SUM([UnitsPriorYear]) as UnitsPriorYear, SUM([UnitsPriorYTD]) as UnitsPriorYTD, MAX([RowID]) as RowID, cast(MAX(cast([IsDeleted] as int)) as bit) as IsDeleted, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.TimeClassID, fs.Units, fs.UnitsYTD, fs.UnitsPriorYear, fs.UnitsPriorYTD, fs.RowID, fs.IsDeleted, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledPayPeriod] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.NonStaffingExpense = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.TimeClassID, pp.Units, pp.UnitsYTD, pp.UnitsPriorYear, pp.UnitsPriorYTD, pp.RowID, pp.IsDeleted, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledPayPeriod] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE cfg.NonStaffingExpense = 1 AND pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsNonStaffingExpenseDaily
CREATE view [fw].[viewPrimaryStatisticsNonStaffingExpenseDaily]
as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID], SUM([Units]) as Units
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.DateID, fs.TimeClassID, fs.Units
FROM [fw].[FactStatisticSampledDaily] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.NonStaffingExpense = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.DateID, pp.TimeClassID, pp.Units
FROM [fw].[FactStatisticDriverDepartmentSampledDaily] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE cfg.NonStaffingExpense = 1 AND pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsNonStaffingExpenseMonthly
-- primary statistics (by month) non-staffing driver accounts
CREATE view [fw].[viewPrimaryStatisticsNonStaffingExpenseMonthly] as
SELECT [RowID], [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], SUM([Amount]) as Amount, SUM([AmountYTD]) as AmountYTD, SUM([AmountPriorYear]) as AmountPriorYear, SUM([AmountPriorYTD]) as AmountPriorYTD, cast(0 as bit) as IsDeleted, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.RowID, fs.DepartmentID, fs.AccountID, fs.FiscalYearID, fs.FiscalMonthID, fs.TimeClassID, fs.Amount, fs.AmountYTD, fs.AmountPriorYear, fs.AmountPriorYTD, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledMonthly] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.NonStaffingExpense = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT mo.RowID, mo.DepartmentID, mo.AccountID, mo.FiscalYearID, mo.FiscalMonthID, mo.TimeClassID, mo.Amount, mo.AmountYTD, mo.AmountPriorYear, mo.AmountPriorYTD, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledMonthly] mo
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON mo.DepartmentID = cfg.DepartmentID AND mo.AccountID = cfg.AccountID
WHERE cfg.NonStaffingExpense = 1 AND mo.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [RowID], [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsRevenueByPayPeriod
-- primary statistics (by pay period) revenue driver accounts
CREATE view [fw].[viewPrimaryStatisticsRevenueByPayPeriod] as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID], SUM([Units]) as Units, SUM([UnitsYTD]) as UnitsYTD, SUM([UnitsPriorYear]) as UnitsPriorYear, SUM([UnitsPriorYTD]) as UnitsPriorYTD, MAX([RowID]) as RowID, cast(MAX(cast([IsDeleted] as int)) as bit) as IsDeleted, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.TimeClassID, fs.Units, fs.UnitsYTD, fs.UnitsPriorYear, fs.UnitsPriorYTD, fs.RowID, fs.IsDeleted, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledPayPeriod] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.TimeClassID, pp.Units, pp.UnitsYTD, pp.UnitsPriorYear, pp.UnitsPriorYTD, pp.RowID, pp.IsDeleted, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledPayPeriod] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1 AND pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsRevenueDaily
CREATE view [fw].[viewPrimaryStatisticsRevenueDaily]
as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID], SUM([Units]) as Units
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.DateID, fs.TimeClassID, fs.Units
FROM [fw].[FactStatisticSampledDaily] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.DateID, pp.TimeClassID, pp.Units
FROM [fw].[FactStatisticDriverDepartmentSampledDaily] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1 AND pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsRevenueMonthly
-- primary statistics (by month) revenue driver accounts
CREATE view [fw].[viewPrimaryStatisticsRevenueMonthly] as
SELECT [RowID], [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], SUM([Amount]) as Amount, SUM([AmountYTD]) as AmountYTD, SUM([AmountPriorYear]) as AmountPriorYear, SUM([AmountPriorYTD]) as AmountPriorYTD, cast(0 as bit) as IsDeleted, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.RowID, fs.DepartmentID, fs.AccountID, fs.FiscalYearID, fs.FiscalMonthID, fs.TimeClassID, fs.Amount, fs.AmountYTD, fs.AmountPriorYear, fs.AmountPriorYTD, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledMonthly] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT mo.RowID, mo.DepartmentID, mo.AccountID, mo.FiscalYearID, mo.FiscalMonthID, mo.TimeClassID, mo.Amount, mo.AmountYTD, mo.AmountPriorYear, mo.AmountPriorYTD, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledMonthly] mo
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON mo.DepartmentID = cfg.DepartmentID AND mo.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1 AND mo.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [RowID], [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsRollupNonStaffingExpenseMonthly
CREATE VIEW [fw].[viewPrimaryStatisticsRollupNonStaffingExpenseMonthly]
AS
SELECT
cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID,
sum(fs.Amount) as Amount,
sum(fs.AmountYTD) as AmountYTD,
sum(fs.AmountPriorYear) as AmountPriorYear,
sum(fs.AmountPriorYTD) as AmountPriorYTD,
min(cast(fs.IsSystemGenerated AS INT)) AS IsSystemGenerated
FROM [fw].[FactStatisticSampledMonthly] fs
INNER JOIN fw.DimDepartment dd ON fs.DepartmentID = dd.DepartmentID
INNER JOIN fw.PrimaryStatisticsRollupsConfiguration cfg ON (
(cfg.RollupLevel = 'DepartmentRollup1' AND cfg.RollupMemberID = dd.DepartmentRollup1ID)
OR (cfg.RollupLevel = 'DepartmentRollup2' AND cfg.RollupMemberID = dd.DepartmentRollup2ID)
OR (cfg.RollupLevel = 'DepartmentRollup3' AND cfg.RollupMemberID = dd.DepartmentRollup3ID)
OR (cfg.RollupLevel = 'DepartmentRollup4' AND cfg.RollupMemberID = dd.DepartmentRollup4ID)
OR (cfg.RollupLevel = 'DepartmentRollup5' AND cfg.RollupMemberID = dd.DepartmentRollup5ID)
OR (cfg.RollupLevel = 'DepartmentRollup6' AND cfg.RollupMemberID = dd.DepartmentRollup6ID)
OR (cfg.RollupLevel = 'Entity' AND cfg.RollupMemberID = dd.EntityID)
OR (cfg.RollupLevel = 'System' AND cfg.RollupMemberID = dd.SystemID)
) AND fs.AccountID = cfg.AccountID
WHERE cfg.NonStaffing = 1
AND fs.IsDeleted = 0
AND IsMRMetricTracking = 1
GROUP BY
cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsRollupRevenueMonthly
CREATE VIEW [fw].[viewPrimaryStatisticsRollupRevenueMonthly]
AS
SELECT cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID,
sum(fs.Amount) as Amount,
sum(fs.AmountYTD) as AmountYTD,
sum(fs.AmountPriorYear) as AmountPriorYear,
sum(fs.AmountPriorYTD) as AmountPriorYTD,
min(cast(fs.IsSystemGenerated AS INT)) AS IsSystemGenerated
FROM [fw].[FactStatisticSampledMonthly] fs
INNER JOIN fw.DimDepartment dd ON fs.DepartmentID = dd.DepartmentID
INNER JOIN fw.PrimaryStatisticsRollupsConfiguration cfg ON (
(cfg.RollupLevel = 'DepartmentRollup1' AND cfg.RollupMemberID = dd.DepartmentRollup1ID)
OR (cfg.RollupLevel = 'DepartmentRollup2' AND cfg.RollupMemberID = dd.DepartmentRollup2ID)
OR (cfg.RollupLevel = 'DepartmentRollup3' AND cfg.RollupMemberID = dd.DepartmentRollup3ID)
OR (cfg.RollupLevel = 'DepartmentRollup4' AND cfg.RollupMemberID = dd.DepartmentRollup4ID)
OR (cfg.RollupLevel = 'DepartmentRollup5' AND cfg.RollupMemberID = dd.DepartmentRollup5ID)
OR (cfg.RollupLevel = 'DepartmentRollup6' AND cfg.RollupMemberID = dd.DepartmentRollup6ID)
OR (cfg.RollupLevel = 'Entity' AND cfg.RollupMemberID = dd.EntityID)
OR (cfg.RollupLevel = 'System' AND cfg.RollupMemberID = dd.SystemID)
)
AND fs.AccountID = cfg.AccountID
WHERE cfg.Revenue = 1
AND fs.IsDeleted = 0
AND IsMRMetricTracking = 1
GROUP BY
cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsRollupStaffingMonthly
CREATE VIEW [fw].[viewPrimaryStatisticsRollupStaffingMonthly]
AS
SELECT cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID,
sum(fs.Amount) as Amount,
sum(fs.AmountYTD) as AmountYTD,
sum(fs.AmountPriorYear) as AmountPriorYear,
sum(fs.AmountPriorYTD) as AmountPriorYTD,
min(cast(fs.IsSystemGenerated AS INT)) AS IsSystemGenerated
FROM [fw].[FactStatisticSampledMonthly] fs
INNER JOIN fw.DimDepartment dd ON fs.DepartmentID = dd.DepartmentID
INNER JOIN fw.PrimaryStatisticsRollupsConfiguration cfg ON (
(cfg.RollupLevel = 'DepartmentRollup1' AND cfg.RollupMemberID = dd.DepartmentRollup1ID)
OR (cfg.RollupLevel = 'DepartmentRollup2' AND cfg.RollupMemberID = dd.DepartmentRollup2ID)
OR (cfg.RollupLevel = 'DepartmentRollup3' AND cfg.RollupMemberID = dd.DepartmentRollup3ID)
OR (cfg.RollupLevel = 'DepartmentRollup4' AND cfg.RollupMemberID = dd.DepartmentRollup4ID)
OR (cfg.RollupLevel = 'DepartmentRollup5' AND cfg.RollupMemberID = dd.DepartmentRollup5ID)
OR (cfg.RollupLevel = 'DepartmentRollup6' AND cfg.RollupMemberID = dd.DepartmentRollup6ID)
OR (cfg.RollupLevel = 'Entity' AND cfg.RollupMemberID = dd.EntityID)
OR (cfg.RollupLevel = 'System' AND cfg.RollupMemberID = dd.SystemID)
)
AND fs.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1
AND fs.IsDeleted = 0
AND IsMRMetricTracking = 1
GROUP BY
cfg.RollupLevel,
cfg.RollupMemberID,
fs.AccountID,
fs.FiscalYearID,
fs.FiscalMonthID,
fs.TimeClassID
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsStaffingByPayPeriod
CREATE view [fw].[viewPrimaryStatisticsStaffingByPayPeriod] as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID], SUM([Units]) as Units, SUM([UnitsYTD]) as UnitsYTD, SUM([UnitsPriorYear]) as UnitsPriorYear, SUM([UnitsPriorYTD]) as UnitsPriorYTD, MAX([RowID]) as RowID, cast(MAX(cast([IsDeleted] as int)) as bit) as IsDeleted, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.TimeClassID, fs.Units, fs.UnitsYTD, fs.UnitsPriorYear, fs.UnitsPriorYTD, fs.RowID, fs.IsDeleted, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledPayPeriod] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.TimeClassID, pp.Units, pp.UnitsYTD, pp.UnitsPriorYear, pp.UnitsPriorYTD, pp.RowID, pp.IsDeleted, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledPayPeriod] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1 AND pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsStaffingDaily
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2016-04-22 gforeman initial implementation
** 2 2022-07-28 BS JAZZ-39738 Daily flexing - Payroll Hours and Dollars
** 3 2024-02-16 KF JAZZ-67769 Add BigRowID to fw.FactStatisticSampledDaily and fw.viewPrimaryStatisticsStaffingDaily
*************************************************************/
CREATE view [fw].[viewPrimaryStatisticsStaffingDaily]
as
SELECT [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID], SUM([Units]) as Units, MAX([RowID]) as RowID, cast(MAX(cast([IsDeleted] as int)) as bit) as IsDeleted, CAST(MAX(RowID) AS BIGINT) as BigRowID
FROM
(SELECT fs.DepartmentID, fs.AccountID, fs.PayPeriodID, fs.DateID, fs.TimeClassID, fs.Units, fs.RowID, fs.IsDeleted
FROM [fw].[FactStatisticSampledDaily] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT pp.DepartmentID, pp.AccountID, pp.PayPeriodID, pp.DateID, pp.TimeClassID, pp.Units, pp.RowID, pp.IsDeleted
FROM [fw].[FactStatisticDriverDepartmentSampledDaily] pp
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON pp.DepartmentID = cfg.DepartmentID AND pp.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1 AND pp.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [DepartmentID], [AccountID], [PayPeriodID], [DateID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewPrimaryStatisticsStaffingMonthly
-- primary statistics (by month) staffing driver accounts
CREATE view [fw].[viewPrimaryStatisticsStaffingMonthly] as
SELECT [RowID], [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], SUM([Amount]) as Amount, SUM([AmountYTD]) as AmountYTD, SUM([AmountPriorYear]) as AmountPriorYear, SUM([AmountPriorYTD]) as AmountPriorYTD, cast(0 as bit) as IsDeleted, cast(MIN([IsSystemGenerated]) as bit) as IsSystemGenerated
FROM
(SELECT fs.RowID, fs.DepartmentID, fs.AccountID, fs.FiscalYearID, fs.FiscalMonthID, fs.TimeClassID, fs.Amount, fs.AmountYTD, fs.AmountPriorYear, fs.AmountPriorYTD, cast(fs.IsSystemGenerated as int) as IsSystemGenerated
FROM [fw].[FactStatisticSampledMonthly] fs
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON fs.DepartmentID = cfg.DepartmentID AND fs.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1 AND fs.IsDeleted = 0 AND cfg.IsDeleted = 0
AND not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.FactDepartmentPrimaryStatisticConfigurationID = cfg.RowID)
UNION ALL
SELECT mo.RowID, mo.DepartmentID, mo.AccountID, mo.FiscalYearID, mo.FiscalMonthID, mo.TimeClassID, mo.Amount, mo.AmountYTD, mo.AmountPriorYear, mo.AmountPriorYTD, cast(0 as int) as IsSystemGenerated
FROM [fw].[FactStatisticDriverDepartmentSampledMonthly] mo
INNER JOIN [client].[FactDepartmentPrimaryStatisticConfiguration] cfg ON mo.DepartmentID = cfg.DepartmentID AND mo.AccountID = cfg.AccountID
WHERE cfg.Staffing = 1 AND mo.IsDeleted = 0 AND cfg.IsDeleted = 0) allData
GROUP BY [RowID], [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID]
GO
---------------------------------------------
-- fw.viewReportCurrentUsers
CREATE VIEW [fw].[viewReportCurrentUsers] AS
SELECT DISTINCT up.NameFirst, up.NameLast, up.PhoneNumber, CASE WHEN MIN(DATEDIFF(MI, LastActionStampUtc, GETUTCDATE())) < 0 THEN 0 ELSE MIN(DATEDIFF(MI, LastActionStampUtc, GETUTCDATE())) END AS InactiveMinutes
FROM CurrentUser cu INNER JOIN [dbo].[UserProfile] up
ON cu.UserGUID = up.UserGUID
WHERE tokentype = 0
GROUP BY up.NameFirst, up.NameLast, up.PhoneNumber
HAVING up.NameFirst IS NOT NULL
GO
---------------------------------------------
-- fw.viewReportDimensionExceptions
CREATE VIEW [fw].[viewReportDimensionExceptions]
AS
select AccountCode As DataMember, 'Account' As Identifier, 'fw.DimAccount' As Source, 'Blank Description or Blank GL Rollup' As Explanation, trans.Files As FilePath, trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimAccount acct inner join [dbo].[viewIntTransaction] trans on acct.TransactionID = trans.TransactionID
where Description='' or GLRollup=''
union
select AccountCode As DataMember, 'Account' As Identifier, 'fw.DimAccount' As Source, 'Blank Account Code' As Explanation, trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimAccount acct inner join [dbo].[viewIntTransaction] trans on acct.TransactionID = trans.TransactionID
where AccountCode=''
union
select Description As DataMember, 'Account' As Identifier, 'fw.DimAccount' As Source, 'Modified Zero member Description' As Explanation, trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimAccount acct inner join [dbo].[viewIntTransaction] trans on acct.TransactionID = trans.TransactionID
where AccountID=0 and Description<>'Not Specified'
union
select Code As DataMember, 'Entity' As Identifier, 'fw.DimEntity' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEntity Ent inner join [dbo].[viewIntTransaction] trans on Ent.TransactionID = trans.TransactionID
where Description=''
union
select Code As DataMember, 'Entity' As Identifier, 'fw.DimEntity' As Source, 'Blank Entity Code' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEntity Ent inner join [dbo].[viewIntTransaction] trans on Ent.TransactionID = trans.TransactionID
where Code=''
union
select Description As DataMember, 'Entity' As Identifier, 'fw.DimEntity' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEntity Ent inner join [dbo].[viewIntTransaction] trans on Ent.TransactionID = trans.TransactionID
where Ent.EntityID = 0 and ent.Description<>'Not Specified'
union
select DepartmentCode As DataMember, 'Department' As Identifier, 'fw.DimDepartment' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimDepartment dept inner join [dbo].[viewIntTransaction] trans on dept.TransactionID = trans.TransactionID
where Dept.Description=''
union
select DepartmentCode As DataMember, 'Department' As Identifier, 'fw.DimDepartment' As Source, 'Blank Department Code' As Explanation , trans.Files As FilePath ,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimDepartment dept inner join [dbo].[viewIntTransaction] trans on dept.TransactionID = trans.TransactionID
where Dept.Departmentcode=''
union
select DepartmentCode As DataMember, 'Department' As Identifier, 'fw.DimDepartment' As Source, 'Entity Not Assigned' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimDepartment dept inner join [dbo].[viewIntTransaction] trans on dept.TransactionID = trans.TransactionID
where Dept.EntityID=0 and Dept.DepartmentID<>0
union
select Description As DataMember, 'Department' As Identifier, 'fw.DimDepartment' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimDepartment dept inner join [dbo].[viewIntTransaction] trans on dept.TransactionID = trans.TransactionID
where DepartmentID=0 and (Description<>'Not Specified' or EntityID<>0)
union
select JobCode As DataMember, 'Job Code' As Identifier, 'fw.DimJobCode' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimJobCode JC inner join [dbo].[viewIntTransaction] trans on JC.TransactionID = trans.TransactionID
where Description=''
union
select JobCode As DataMember, 'Job Code' As Identifier, 'fw.DimJobCode' As Source, 'Blank Job Code' As Explanation , trans.Files As FilePath ,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimJobCode JC inner join [dbo].[viewIntTransaction] trans on JC.TransactionID = trans.TransactionID
where JobCode=''
union
select Description As DataMember, 'Job Code' As Identifier, 'fw.DimJobCode' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimJobCode JC inner join [dbo].[viewIntTransaction] trans on JC.TransactionID = trans.TransactionID
where JobCodeID=0 and Description<>'Not Specified'
union
select PayCode As DataMember, 'Pay Code' As Identifier, 'fw.DimPayCode' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimPayCode PC inner join [dbo].[viewIntTransaction] trans on PC.TransactionID = trans.TransactionID
where Description=''
union
select PayCode As DataMember, 'Pay Code' As Identifier, 'fw.DimPayCode' As Source, 'Blank Pay Code' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimPayCode PC inner join [dbo].[viewIntTransaction] trans on PC.TransactionID = trans.TransactionID
where PayCode=''
union
select Description As DataMember, 'Pay Code' As Identifier, 'fw.DimPayCode' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimPayCode PC inner join [dbo].[viewIntTransaction] trans on PC.TransactionID = trans.TransactionID
where PayCodeID=0 and Description<>'Not Specified'
union
select Number As DataMember, 'Employee' As Identifier, 'fw.DimEmployee' As Source, 'Blank First Name or Blank Last Name' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEmployee emp inner join [dbo].[viewIntTransaction] trans on emp.TransactionID = trans.TransactionID
where NameFirst='' or NameLast=''
union
select Number As DataMember, 'Employee' As Identifier, 'fw.DimEmployee' As Source, 'Blank Employee Number' As Explanation, trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEmployee emp inner join [dbo].[viewIntTransaction] trans on emp.TransactionID = trans.TransactionID
where Number=''
union
select Number As DataMember, 'Employee' As Identifier, 'fw.DimEmployee' As Source, 'Job Code not set for Employee' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEmployee emp inner join [dbo].[viewIntTransaction] trans on emp.TransactionID = trans.TransactionID
where JobCodeID=0 and EmployeeID<>0
union
select Name As DataMember, 'Employee' As Identifier, 'fw.DimEmployee' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from fw.DimEmployee emp inner join [dbo].[viewIntTransaction] trans on emp.TransactionID = trans.TransactionID
where EmployeeID=0 and Name<>'Not Specified [0] (UNKNWN)'
union
select Code As DataMember, 'Fund' As Identifier, 'fw.DimFund' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimFund] DF inner join [dbo].[viewIntTransaction] trans on DF.TransactionID = trans.TransactionID
where Description=''
union
select Code As DataMember, 'Fund' As Identifier, 'fw.DimFund' As Source, 'Blank Fund Code' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimFund] DF inner join [dbo].[viewIntTransaction] trans on DF.TransactionID = trans.TransactionID
where Code=''
union
select Description As DataMember, 'Fund' As Identifier, 'fw.DimFund' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimFund] DF inner join [dbo].[viewIntTransaction] trans on DF.TransactionID = trans.TransactionID
where FundID=0 and (Description<>'Not Specified')
union
select Code As DataMember, 'Project' As Identifier, 'fw.DimProject' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimProject] DP inner join [dbo].[viewIntTransaction] trans on DP.TransactionID = trans.TransactionID
where Description=''
union
select Code As DataMember, 'Project' As Identifier, 'fw.DimProject' As Source, 'Blank Project Code' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimProject] DP inner join [dbo].[viewIntTransaction] trans on DP.TransactionID = trans.TransactionID
where Code=''
union
select Description As DataMember, 'Project' As Identifier, 'fw.DimProject' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimProject] DP inner join [dbo].[viewIntTransaction] trans on DP.TransactionID = trans.TransactionID
where ProjectID=0 and (Description<>'Not Specified')
union
select Code As DataMember, 'Program' As Identifier, 'fw.DimProgram' As Source, 'Blank Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].DimProgram Prog inner join [dbo].[viewIntTransaction] trans on Prog.TransactionID = trans.TransactionID
where Description=''
union
select Code As DataMember, 'Program' As Identifier, 'fw.DimProgram' As Source, 'Blank Program Code' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].DimProgram Prog inner join [dbo].[viewIntTransaction] trans on Prog.TransactionID = trans.TransactionID
where Code=''
union
select Description As DataMember, 'Program' As Identifier, 'fw.DimProgram' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].DimProgram Prog inner join [dbo].[viewIntTransaction] trans on Prog.TransactionID = trans.TransactionID
where ProgramID=0 and (Description<>'Not Specified')
union
select Code As DataMember, 'Home Department' As Identifier, 'fw.DimHomeDepartment' As Source, 'Blank Description' As Explanation , trans.Files As FilePath ,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimHomeDepartment] HD inner join [dbo].[viewIntTransaction] trans on HD.TransactionID = trans.TransactionID
where Description=''
union
select Code As DataMember, 'Home Department' As Identifier, 'fw.DimHomeDepartment' As Source, 'Blank Program Code' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimHomeDepartment] HD inner join [dbo].[viewIntTransaction] trans on HD.TransactionID = trans.TransactionID
where Code=''
union
select Description As DataMember, 'Home Department' As Identifier, 'fw.DimHomeDepartment' As Source, 'Modified Zero member Description' As Explanation , trans.Files As FilePath,trans.TransactionID As TransactionID, trans.StartTimeUtc as ImportDate, trans.username As UserName, trans.ConfigName as IntegrationConfig
from [fw].[DimHomeDepartment] HD inner join [dbo].[viewIntTransaction] trans on HD.TransactionID = trans.TransactionID
where HomeDepartmentID=0 and (Description<>'Not Specified')
GO
---------------------------------------------
-- fw.viewReportDirectoryActionHistory
CREATE VIEW [fw].[viewReportDirectoryActionHistory]
AS
select
case when SubAction like 'Initial Load -%'
then 'Initial Load'
else
replace(SubAction, 'Grid Action - ', '')
End as SubAction,
Username,
YEAR(datetimestamp) as [Year],
MONTH(datetimestamp) as [Month],
DateTimeStamp,
Duration,
1 as [Count]
from ActionLog
where [Action] = 'Directory20' and SubAction not in ('RefreshTabNames', 'Grid Action - init')
GO
---------------------------------------------
-- fw.viewReportExceptionSummary
create view [fw].[viewReportExceptionSummary]
as
select
ReportName,
ExceptionCount
from
fw.FactReportException
GO
---------------------------------------------
-- fw.viewReportFactGLConsolidated
CREATE view [fw].[viewReportFactGLConsolidated] as
select
S.DepartmentID
,S.AccountID
,S.TimeClassID
,S.FiscalYearID
,S.FiscalMonthID
,(s.Units) as Units
,(s.UnitsYTD) as UnitsYTD
,(s.UnitsPriorYear) as UnitsPriorYear
,(S.UnitsPriorYTD) as UnitsPriorYTD
,(s.Dollars) as Dollars
,(S.DollarsYTD) as DollarsYTD
,(S.DollarsPriorYear) as DollarsPriorYear
,(S.DollarsPriorYTD) as DollarsPriorYTD
from
fw.FactGLSampled S
where
s.IsDeleted = 0
GO
---------------------------------------------
-- fw.viewReportFactPayrollMonthlyConsolidated
CREATE view [fw].[viewReportFactPayrollMonthlyConsolidated] as
select
DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
(Hours) as Hours,
(HoursYTD) as HoursYTD,
(HoursPriorYear) as HoursPriorYear,
(HoursPriorYTD) as HoursPriorYTD,
(Dollars) as Dollars,
(DollarsYTD) as DollarsYTD,
(DollarsPriorYear) as DollarsPriorYear,
(DollarsPriorYTD) as DollarsPriorYTD
from
fw.FactPayrollSampledMonthly S
where
s.IsDeleted = 0
GO
---------------------------------------------
-- fw.viewReportFactStatMonthlyConsolidated
CREATE view [fw].[viewReportFactStatMonthlyConsolidated] as
select
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD
from
fw.FactStatisticSampledMonthly S
where
s.IsDeleted = 0
and (Amount <> 0 or AmountYTD <> 0 or AmountPriorYear <> 0 or AmountPriorYTD <> 0)
GO
---------------------------------------------
-- fw.viewReportFactStatPayPeriodConsolidated
CREATE view [fw].[viewReportFactStatPayPeriodConsolidated] as
select
DepartmentID,
AccountID,
TimeClassID,
PayPeriodID,
Units
from
fw.FactStatisticSampledPayPeriod S
where
s.IsDeleted = 0
and Units <> 0
GO
---------------------------------------------
-- fw.viewReportGeneralConsolidatedFinancialReporting
create view [fw].[viewReportGeneralConsolidatedFinancialReporting] as
/************************************************************
** Author: FW Dev
** Create Date: akowalski
** Description: Generates the list of Consolidated financial reporting members for expanding reports
** Last Modified: 2013-03-26
** GM Release: Lightningbug
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
**
**
*************************************************************/
select
ConsolidatedFinancialReportingID
from
[fw].[DimConsolidatedFinancialReporting]
GO
---------------------------------------------
-- fw.viewReportGroupAssignment
create view fw.viewReportGroupAssignment
as
select
UP.NameLast as [LastName],
UP.NameFirst as [FirstName],
UP.UserName as [UserName],
UP.EmailAddress as [EmailAddress],
G.UserGroupName
from UserProfile UP
inner join viewS3GroupAssignment G on G.UserGUID = UP.UserGUID
GO
---------------------------------------------
-- fw.viewReportLockedPlans
CREATE VIEW fw.viewReportLockedPlans
AS
SELECT
dbo.GetPlanName(L.ItemGUID) AS PlanName,
PT.Name As PlanType,
TEM.Name AS ModelTemplate,
CAST(L.DateLocked AS varchar(30)) AS LockDate,
CAST(L.DateLastActive AS varchar(30)) AS LastActive,
COALESCE (UP.NameFirst + ' ' + UP.NameLast, '') AS UserName
FROM
dbo.Lock AS L LEFT OUTER JOIN
dbo.UserProfile AS UP ON L.UserGUID = UP.UserGUID LEFT OUTER JOIN
dbo.XPlan AS X ON X.PlanGUID = L.ItemGUID LEFT OUTER JOIN
[dbo].[PlanType] as PT on PT.PlanTypeGUID=X.PlanTypeGUID LEFT OUTER JOIN
dbo.EMFModelTemplate AS TEM ON X.ModelTemplateGUID = TEM.ModelTemplateGUID
WHERE (L.LockGroup = 'PlanLock') and X.IsDeletedPlan=0
GO
---------------------------------------------
-- fw.viewReportPayPeriod
CREATE VIEW [fw].[viewReportPayPeriod] AS
SELECT
m.CalendarDaysSecond,
m.CalendarDaysStart,
m.DaysInPeriodWeightSecond,
m.DaysInPeriodWeightStart,
m.FiscalMonthIDSecond,
m.FiscalMonthIDStart,
m.FiscalYearIDSecond,
m.FiscalYearIDStart,
m.PayPeriodCode,
m.Name as PayPeriod,
m.PayPeriodID,
m.PayPeriodID as ReportingPayPeriodID,
m.PeriodDays,
m.PeriodDaysSecond,
m.PeriodDaysStart,
m.PeriodEndCalendarDate,
m.PeriodEndCalendarDate as DateEnd,
m.PeriodNumber,
m.PeriodStartCalendarDate,
m.PeriodWeightSecond,
m.PeriodWeightStart
FROM
fw.DimPayPeriod m
GO
---------------------------------------------
-- fw.viewReportReportRunHistory
CREATE VIEW [fw].[viewReportReportRunHistory]
AS
select
L.Username as [User Name],
case L.Action
when 'ZEROVIEWER' then 'Excel'
when 'Excel Reporter' then 'Excel'
when 'SQL Report' then 'SQL'
else 'Not Specified'
end as [Report Type],
replace(coalesce(R.Name, L.SubAction) , 'BATCH_', '')as [Report Name],
L.DatetimeStamp as [Launch Time],
L.Duration/1000 as [Duration in Seconds]
from
ActionLog L
inner join REReport R on RIGHT(L.SubAction, 36) = cast(R.ReportGUID as nvarchar(36)) or replace(L.SubAction, 'BATCH_', '')=R.Name
where
L.Action in ('ZEROVIEWER', 'Excel Reporter', 'SQL Report')
and L.SubAction not like 'DrillDown%'
union all
select
UserName as [User Name],
'Excel' as [Report Type],
ReportName as [Report Name],
LaunchTime as [Launch Time],
datediff(ss, LaunchTime, FinishTime) as [Duration in Seconds]
from (
select
modifierusername as UserName,
replace(usercomments, 'BATCH_', '') as ReportName,
max(case when [Description]='Report Created' then datetimestamp else null end) as LaunchTime,
max(case when [Description]='Report Deleted' then datetimestamp else null end) as FinishTime
from historyitem
where category='Report Action' and UserComments like 'BATCH_%'
group by modifierusername, usercomments
) P
GO
---------------------------------------------
-- fw.viewReportSecurityDetail
--==========================================================================================
CREATE view [fw].[viewReportSecurityDetail] as
SELECT
E.NAME AS ModelTemplate,
P.NAME AS Plans,
P.planguid,
U.NameFull as UserName,
ROLENAME AS UserRole,
DET.RoleID as UserRoleID,
CASE
WHEN IdentityName = U.NAMELAST+', '+U.NAMEFIRST THEN 'Direct'
ELSE IDENTITYNAME END AS GROUPNAME
FROM VIEWS3ROLEASSIGNMENTDETAIL DET
INNER JOIN VIEWPLANS P ON DET.LOOTID = P.CachedLootID
INNER JOIN EMFMODELTEMPLATE E ON P.MODELTEMPLATEGUID = E.MODELTEMPLATEGUID
INNER JOIN UserProfile U on U.UserGUID = DET.UserGUID
GO
---------------------------------------------
-- fw.viewReportSystemSectionSecurity
CREATE view [fw].[viewReportSystemSectionSecurity] as
SELECT
SS.NAME AS SYSTEMSECTION,
SS.FULLPATH,
DET.USERNAME,
ROLENAME AS USERROLE,
CASE
WHEN IdentityName = p.NAMELAST+', '+p.NAMEFIRST THEN ''
ELSE IDENTITYNAME END AS GROUPNAME
FROM VIEWS3ROLEASSIGNMENTDETAIL DET (readuncommitted)
INNER JOIN SystemSection SS(readuncommitted) ON DET.LOOTID = SS.LOOTID
inner join [dbo].[UserProfile] p on DET.UserGUID=p.UserGUID
GO
---------------------------------------------
-- fw.viewReportSystemSectionSecuritybySection
create view [fw].[viewReportSystemSectionSecuritybySection] as
select
ss.Area,
ss.Section,
ss.Name as [System Section],
ur.NAME as Role,
case when G.NAME is null then u.NameFull else g.NAME end as [Group or User]
from [fw].[viewDimSystemSection] ss
inner join [dbo].[S3RoleAssignment] ra on ss.LootID=ra.LootGroupID
inner join [dbo].[UserRole] ur on ur.RoleID=ra.RoleID
left join [dbo].[UserGroup] G on G.USERGROUPGUID=ra.IdentityGUID
left join [dbo].[UserProfile] u on u.USERGUID=ra.IdentityGUID
GO
---------------------------------------------
-- fw.viewReportSystemUsers
CREATE VIEW [fw].[viewReportSystemUsers] AS
SELECT UP.*,
ISNULL(CAST(CASE WHEN IL.GroupingGUID IS NULL THEN 0 ELSE 1 END AS bit),0) AS IsSysAdmin
from userprofile UP
left join [dbo].[S3IdentityLink] IL on UP.UserGUID = IL.MemberGUID and IL.GroupingGUID = (select UserGroupGUID from [dbo].[UserGroup] where GlobalID = 'GEN - User Administrator')
GO
---------------------------------------------
-- fw.viewReportUserLastLogin
create view [fw].[viewReportUserLastLogin]
as
select Name, LastLogin, NumLogins
from viewuserloginhistory
where lastlogin > '2010-01-01'
GO
---------------------------------------------
-- fw.viewReportUserLoginHistory
create view [fw].[viewReportUserLoginHistory] as
select
Name,
LastLogin,
cast(DATEDIFF(day,LastLogin,CURRENT_TIMESTAMP) as float) as DaysSinceLogin
from dbo.viewUserLoginHistory
where Name NOT LIKE '%zStrata%'
GO
---------------------------------------------
-- fw.viewReportWorkflowSignoffs
CREATE view [fw].[viewReportWorkflowSignoffs]
as
select
RV.EntityGUID as PlanGUID,
E.EntityName as Plans,
WFM.Name as WorkflowMapName,
WFS.Name as WorkflowStepName,
UP.NameFull as ReviewerName,
RVT.Name as ReviewValue,
RV.Comments,
cast(WFP.DisplayOrder as nvarchar(8)) + '\' + cast(WFS.DisplayOrder as nvarchar(8)) as DisplayOrder,
E.CachedLootID as LootID
from
WFReviewValue RV
inner join dbo.viewWFEntity E on E.EntityGUID = RV.EntityGUID
inner join UserProfile UP on UP.UserGUID = RV.IdentityGUID
inner join WFReviewValueType RVT on RVT.ReviewValueTypeGUID = RV.ReviewValueTypeGUID
inner join WFWorkflowStep WFS on WFS.WorkflowStepGUID = RV.WorkflowStepGUID
inner join WFProcessStepLink WFL on WFL.WorkflowStepGUID = WFS.WorkflowStepGUID
inner join WFProcess WFP on WFP.ProcessGUID = WFL.ProcessGUID
inner join WFWorkflowMap WFM on WFM.WorkflowMapGUID = WFS.WorkflowMapGUID
GO
---------------------------------------------
-- fw.viewSectionSecurityImport
CREATE VIEW [fw].[viewSectionSecurityImport]
as
select
case when SSI.GroupName = 'None' then 'Strata Administrator' else SSI.GroupName end as GroupName,
'Basic' as SectionType,
'Global' as Parent,
SS.Name,
SS.SystemSectionGUID
from
fw.SectionSecurityImport SSI
inner join SystemSection SS on SS.SystemSectionGUID = SSI.BasicGUID
union all
select
case when SSI.GroupName = 'None' then 'Strata Administrator' else SSI.GroupName end as GroupName,
'Advanced' as SectionType,
SSP.Name as Parent,
SS.Name,
SS.SystemSectionGUID
from
fw.SectionSecurityImport SSI
inner join SystemSection SS on SS.SystemSectionGUID = SSI.AdvancedGUID
left join SystemSection SSP on SSP.SystemSectionGUID = SS.ParentGUID
GO
---------------------------------------------
-- fw.viewStatisticPrimaryConfiguration
/************************************************************
** Author: jgerber
** Create Date: 2013-11-06
** Description: View for Primary Statistic Driver (Defaults using the Primary Statistic Config)
** Last Modified: 2013-11-06
** GM Release: 2013-11-18
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 01.08.16 MJS D-03823 Added filter: IsDeleted=0
** 2 2020-01-30 KF D-09156 Accounts being excluded from metrics when using non staffing expenses
*************************************************************/
CREATE VIEW [fw].[viewStatisticPrimaryConfiguration]
as
select
DepartmentID,
AccountID
from
[client].[FactDepartmentPrimaryStatisticConfiguration]
where
(Revenue=1 OR Staffing=1 OR NonStaffingExpense=1)
and IsDeleted=0
GO
---------------------------------------------
-- fw.viewStatisticSecondaryConfiguration
/************************************************************
** Author: jgerber
** Create Date: 2013-11-06
** Description: View for Secondary Statistic Driver (Defaults using the Secondary Statistic Config)
** Last Modified: 2013-11-06
** GM Release: 2013-11-18
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 01.08.16 MJS D-03823 Added filter: IsDeleted=0
** 2 2020-01-30 KF D-09156 Accounts being excluded from metrics when using non staffing expenses
*************************************************************/
CREATE VIEW [fw].[viewStatisticSecondaryConfiguration]
as
--THIS IS EDITABLE
select
DepartmentID,
AccountID
from
[client].[FactDepartmentPrimaryStatisticConfiguration]
where
(Revenue=1 OR Staffing=1 OR NonStaffingExpense=1)
and IsDeleted=0
GO
---------------------------------------------
---------------------------------------------
-- PROCEDURES
---------------------------------------------
-- fw.PrepareStatistics
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-06-04 IP TK-58587 re-applying changes (2018-05-16 D-07187 Budget adjustment effecting historical budget fiscal years)
** 2 2024-12-23 HV JAZZ-81810 [Spike] - Analyze and cover with integration tests for JAZZ-81233: MR - Budget Adj is getting applied to all prior years
Apply fix proposed by Scott Evens
*************************************************************/
CREATE PROCEDURE [fw].[PrepareStatistics] (@FiscalYearID int =0, @StatisticType tinyint)
as
IF OBJECT_ID('tempdb..#StatisticTempTable') IS NOT NULL DROP TABLE #StatisticTempTable
declare @iteration int = 1
create table #StatisticTempTable (
DepartmentID int,
AccountID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
TimeClassID tinyint,
Amount numeric(25,4),
ApplyDate datetime,
Src varchar(max),
UNIQUE NONCLUSTERED (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID)
)
INSERT INTO #StatisticTempTable (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID,
sum(STAT.Value) as Amount,
cast('1900-01-01' as datetime) as ApplyDate,
cast('int_1' as varchar(max))+'V' as src
from
int.FactStatistic stat
inner join fw.DimDepartment D on D.Departmentid = STAT.Departmentid
where
stat.IsDeleted = 0
and stat.Value != 0
and (stat.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
Group by stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID
--select count(*) from #StatisticTempTable
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
PRINT '-------- Vendor Products Report --------';
DECLARE BRA_cursor CURSOR FOR
SELECT distinct BudgetReallocationGUID,date,BudgetReallocationType from fw.BudgetReallocationWithDefinedType
WHERE (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
ORDER BY date;
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
--select @iteration,@BudgetReallocationGUID,@date,@BudgetReallocationType,* from #StatisticTempTable where DepartmentID = 359 and AccountID = 791 and FiscalYearID = 2015 and FiscalMonthID = 9 and TimeClassID = 2
IF @BudgetReallocationType = 'ReallocateSingle'
BEGIN -- Insert rows with "correcting" values
UPDATE STT
SET Amount = Amount + Change,
stt.ApplyDate = b.Date,
src = SRC + '[Added_'+cast(Change as varchar(50))+'_from_'+cast(SourceDepartmentID as varchar(10))+']'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b ON b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
WHERE Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and UnitTypeID = 145
and TimeClassID = 2
UPDATE STT
SET Amount = Amount - Change,
stt.ApplyDate = b.Date,
src = SRC + '[Removed_'+cast(Change as varchar(50))+'_to_'+cast(TargetDepartmentID as varchar(10))+']'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
WHERE Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and UnitTypeID = 145
and TimeClassID = 2
INSERT INTO #StatisticTempTable (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
SUM(Change * -1) as Value,
max(b.Date) as ApplyDate,
'ra_1_m' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN (select DepartmentID,AccountID,FiscalYearID,FiscalMonthID,max(ApplyDate) as ApplyDate from #StatisticTempTable where TimeClassID = 2 group by DepartmentID,AccountID,FiscalYearID,FiscalMonthID) STT ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID
where Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and stt.DepartmentID is null
and UnitTypeID = 145
GROUP BY b.SourceDepartmentID,
b.SourceAccountID,
b.FiscalYearID,
ba.FiscalMonthID
UNION All
SELECT
b.TargetDepartmentID as DepartmentID,
b.TargetAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
sum(Change) as Value,
max(b.Date) as ApplyDate,
'ra_1_p' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN (select DepartmentID,AccountID,FiscalYearID,FiscalMonthID,max(ApplyDate) as ApplyDate from #StatisticTempTable where TimeClassID = 2 group by DepartmentID,AccountID,FiscalYearID,FiscalMonthID) STT ON b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID
where Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and stt.DepartmentID is null
and UnitTypeID = 145
group by
b.TargetDepartmentID,
b.TargetAccountID,
b.FiscalYearID,
ba.FiscalMonthID
------------------
END
ELSE
IF @BudgetReallocationType = 'ReallocateMulti'
BEGIN
Update stt
set
stt.Amount = stt.Amount + stt_src.Amount,
stt.ApplyDate = b.Date,
stt.Src = stt.Src + '[RealMulti_'+cast(stt_src.Amount as varchar(50))+'_from_'+cast(stt_src.DepartmentID as varchar(10))+']'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b on b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and b.Date >= stt.ApplyDate and b.FiscalYearID = stt.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
INNER JOIN #StatisticTempTable STT_SRC on STT_SRC.DepartmentID = b.SourceDepartmentID and STT_SRC.AccountID = b.SourceAccountID and STT_SRC.FiscalYearID = b.FiscalYearID and STT_SRC.FiscalMonthID = ba.FiscalMonthID and stt.TimeClassID = stt_src.TimeClassID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and Change <> 0
and stt.TimeClassID = 2
--select 'X',* from #StatisticTempTable where DepartmentId = 279 and AccountID = 791 and FiscalYearID = 2015 and FiscalMonthID = 5 and TimeClassID = 2
INSERT INTO #StatisticTempTable (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT --'Y',
b.TargetDepartmentID as DepartmentID,
b.TargetAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
sum(Change) as Value,
max(b.Date) as ApplyDate,
'ReallocateMulti' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN #StatisticTempTable STT_SRC on STT_SRC.DepartmentID = b.SourceDepartmentID and STT_SRC.AccountID = b.SourceAccountID and STT_SRC.FiscalYearID = b.FiscalYearID and stt_src.FiscalMonthID = ba.FiscalMonthID and STT_SRC.TimeClassID = 2
LEFT JOIN #StatisticTempTable STT on STT.DepartmentID = b.TargetDepartmentID and STT.AccountID = b.TargetAccountID and STT.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID and STT.TimeClassID = 2
where stt.DepartmentID is null
and Change <> 0
and ba.UnitTypeID =145
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and b.BudgetReallocationGUID = @BudgetReallocationGUID
GROUP BY
b.TargetDepartmentID,
b.TargetAccountID,
b.FiscalYearID,
ba.FiscalMonthID
UPDATE STT_SRC
SET
stt_src.Amount = 0,
stt_src.ApplyDate = b.Date,
stt_src.Src = stt_src.Src + '[RealMulti_'+cast(stt_src.Amount as varchar(50))+'_to_'+cast(stt.DepartmentID as varchar(10))+']'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b on b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and b.Date >= stt.ApplyDate and b.FiscalYearID = stt.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
INNER JOIN #StatisticTempTable STT_SRC on STT_SRC.DepartmentID = b.SourceDepartmentID and STT_SRC.AccountID = b.SourceAccountID and STT_SRC.FiscalYearID = b.FiscalYearID and stt_SRC.FiscalMonthID = ba.FiscalMonthID and STT_SRC.TimeClassID = 2
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and Change <> 0
END
ELSE
IF @BudgetReallocationType = 'AdjustMontly'
BEGIN
UPDATE STT
SET
stt.Amount = stt.Amount+Change,
stt.ApplyDate = b.Date,
stt.Src = stt.Src + '[AdjustMontly_'+cast(Change as varchar(50))+']'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and b.Date >= stt.ApplyDate and b.FiscalYearID = stt.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and Change <> 0
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and TimeClassID = 2
INSERT INTO #StatisticTempTable (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
SUM(Change) as Value,
MAX(b.date) as ApplyDate,
'ra_3' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN #StatisticTempTable STT ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID and TimeClassID = 2
where Change <> 0
and stt.DepartmentID is null
and ba.UnitTypeID =145
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and b.BudgetReallocationGUID = @BudgetReallocationGUID
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
b.FiscalYearID,
ba.FiscalMonthID
END
ELSE
IF @BudgetReallocationType = 'ManualFile'
BEGIN
UPDATE STT
SET
stt.Amount = ba.NewSourceValue,
stt.ApplyDate = b.Date,
stt.Src = stt.Src + '[ManualFile_'+cast(NewSourceValue as varchar(50))+']'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and b.Date >= stt.ApplyDate and b.FiscalYearID = stt.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and TimeClassID = 2
--and Change <> 0
INSERT INTO #StatisticTempTable (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
SUM(NewSourceValue) as Value,
MAX(b.date) as ApplyDate,
'ManualFile' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN #StatisticTempTable STT ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID and TimeClassID = 2
where Change <> 0
and stt.DepartmentID is null
and ba.UnitTypeID =145
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and b.BudgetReallocationGUID = @BudgetReallocationGUID
GROUP BY b.SourceDepartmentID,
b.SourceAccountID,
b.FiscalYearID,
ba.FiscalMonthID
END
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
if @StatisticType = 1
begin
SELECT DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,SUM(Amount) as Amount
FROM (
SELECT stt.DepartmentID,stt.AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,src
from #StatisticTempTable stt
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=stt.AccountID and V.DepartmentID=stt.DepartmentID
UNION ALL
SELECT stat.DepartmentID,stat.AccountID,FiscalYearID,FiscalMonthID,stat.TimeClassID,0 as Amount,cast('just0' as varchar(max)) as src
from int.FactStatistic stat
inner join [fw].[viewStatisticPrimaryConfiguration] V on V.AccountID=stat.AccountID and V.DepartmentID=stat.DepartmentID
WHERE stat.IsDeleted = 0
and stat.Value != 0
and (stat.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) SubSelect
GROUP BY DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID
end
else if @StatisticType = 2
begin
SELECT DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,SUM(Amount) as Amount
FROM (
SELECT stt.DepartmentID,stt.AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,src
from #StatisticTempTable stt
inner join [fw].[viewStatisticSecondaryConfiguration] V on V.AccountID=stt.AccountID and V.DepartmentID=stt.DepartmentID
UNION ALL
SELECT stat.DepartmentID,stat.AccountID,FiscalYearID,FiscalMonthID,stat.TimeClassID,0 as Amount,cast('just0' as varchar(max)) as src
from int.FactStatistic stat
inner join [fw].[viewStatisticSecondaryConfiguration] V on V.AccountID=stat.AccountID and V.DepartmentID=stat.DepartmentID
WHERE stat.IsDeleted = 0
and stat.Value != 0
and (stat.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) SubSelect
GROUP BY DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID
end
else
begin
SELECT DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,SUM(Amount) as Amount
FROM (
SELECT stt.DepartmentID,stt.AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,src
from #StatisticTempTable stt
UNION ALL
SELECT stat.DepartmentID,stat.AccountID,FiscalYearID,FiscalMonthID,stat.TimeClassID,0 as Amount,cast('just0' as varchar(max)) as src
from int.FactStatistic stat
WHERE stat.IsDeleted = 0
and stat.Value != 0
and (stat.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) SubSelect
GROUP BY DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID
IF OBJECT_ID('tempdb..#StatisticTempTable') IS NOT NULL DROP TABLE #StatisticTempTable
end
GO
---------------------------------------------
-- fw.PrepareStatisticsPayPeriod
CREATE PROCEDURE [fw].[PrepareStatisticsPayPeriod] (
@FiscalYearID INT = 0,
@departmentIDs NVARCHAR(max) = NULL,
@StatisticType INT = 0,
@isPrMetricConfigurationOn BIT = 0
)
/************************************************************
** Author: ipetriv
** Create Date: 2017-7-26
** Description: procedure to append to [int].[FactStatisticsbyPayPeriod] MR statistic reallocation adjustments
** Last Modified: 2017-7-26
** GM Release: 2018.1
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-7-26 IP B-16752 Added section for monthly spread adjustments
** 2 2017-10-11 IP D-06489 Fixed difference between "by year" and "all years" end numbers
** 3 2018-01-17 IP B-16703 Omit archived budget adjustments
** 4 2018-03-15 IP D-06997 Replaced table variable by temp tables
** 5 2018-04-27 IP TK-56559 Adding grouping to fix integration test
** 6 2018-05-14 IP TK-57807 Reallocate between departments fix
** 7 2019-02-12 IP D-06606 PR Statistics sampling with adjustments is incorrectly calculating first Pay Period values
** 8 2020-03-20 vfay D-08997 [fw].[PrepareStatisticsPayPeriod] is reporting incorrect adjustment amounts
** 9 2023-04-11 HV JAZZ-52032 Create and fill caching table for charge-based statistics pay period data
*************************************************************/
AS
IF OBJECT_ID('tempdb..#StatisticSampledTempTable') IS NOT NULL DROP TABLE #StatisticSampledTempTable
IF OBJECT_ID('tempdb..#departments') IS NOT NULL DROP TABLE #departments
IF OBJECT_ID('tempdb..#departmentsBudgetAllocations') IS NOT NULL DROP TABLE #departmentsBudgetAllocations
IF OBJECT_ID('tempdb..#FDPSD') IS NOT NULL DROP TABLE #FDPSD
IF OBJECT_ID('tempdb..#StatisticInsertTempTable') IS NOT NULL DROP TABLE #StatisticInsertTempTable
IF OBJECT_ID('tempdb..#payperiods') IS NOT NULL DROP TABLE #payperiods
IF OBJECT_ID('tempdb..#StatisticTempTableBackup') IS NOT NULL DROP TABLE #StatisticTempTableBackup
DECLARE @iteration INT = 1
CREATE TABLE #FDPSD (DepartmentID INT PRIMARY KEY)
INSERT INTO #FDPSD
SELECT DISTINCT DriverDepartmentID AS DepartmentID
FROM client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache
CREATE TABLE #departments (val INT PRIMARY KEY)
CREATE TABLE #departmentsBudgetAllocations (val INT PRIMARY KEY)
INSERT INTO #departments SELECT val FROM ConvertCSValuesToTable(@departmentIDs, ',')
INSERT INTO #departments
SELECT
SourceDepartmentID AS DepartmentID
FROM
mr.BudgetReallocationAdjustment a
INNER JOIN mr.BudgetReallocation r ON r.BudgetReallocationGUID=a.BudgetReallocationGUID
INNER JOIN #departments d ON d.val = r.TargetDepartmentID -- Filtering all departments that move data TO selected
UNION -- unique
SELECT
TargetDepartmentID AS DepartmentID
FROM
mr.BudgetReallocationAdjustment a
INNER JOIN mr.BudgetReallocation r ON r.BudgetReallocationGUID=a.BudgetReallocationGUID
INNER JOIN #departments d ON d.val = r.SourceDepartmentID -- Filtering all departments that move data FROM selected
INSERT INTO #departmentsBudgetAllocations (val)
SELECT
SourceDepartmentID AS DepartmentID
FROM
mr.BudgetReallocationAdjustment a
INNER JOIN mr.BudgetReallocation r ON r.BudgetReallocationGUID = a.BudgetReallocationGUID
INNER JOIN FW.DimDepartment d ON d.DepartmentID = r.TargetDepartmentID AND d.IsPR = 1
WHERE SourceDepartmentID <> 0
UNION -- unique
SELECT
TargetDepartmentID AS DepartmentID
FROM
mr.BudgetReallocationAdjustment a
INNER JOIN mr.BudgetReallocation r ON r.BudgetReallocationGUID=a.BudgetReallocationGUID
INNER JOIN FW.DimDepartment d ON d.DepartmentID = r.SourceDepartmentID and d.IsPR = 1 -- Filtering all departments that move data FROM selected
where TargetDepartmentID <> 0
CREATE TABLE #payperiods(val SMALLINT PRIMARY KEY, PayCycleID int, PeriodStartCalendarDate date, PeriodEndCalendarDate date)
INSERT INTO #payperiods (val, PayCycleID, PeriodStartCalendarDate, PeriodEndCalendarDate)
SELECT PayPeriodID, PayCycleID, PeriodStartCalendarDate, PeriodEndCalendarDate
FROM fw.DimPayPeriod
WHERE FiscalYearIDSecond = @fiscalYearID or @fiscalYearID = 0
--run custom scripts
EXEC [client].[procStatisticSampledInsertPayPeriodPreprocess]
CREATE TABLE #StatisticSampledTempTable
(
DepartmentID int,
AccountID int,
PayPeriodID int,
TimeClassID int,
Units decimal(18, 6)
)
--pull new data - Pay Period Actuals from GL
INSERT INTO #StatisticSampledTempTable (DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
stat.[DepartmentID],
stat.[AccountID],
stat.[PayPeriodID],
stat.[TimeClassID],
SUM(stat.[Value]) AS Units
FROM
[int].[FactStatisticsbyPayPeriod] stat
inner join [fw].[DimDepartment] D on D.DepartmentID = stat.DepartmentID
left join #FDPSD FDPSD on FDPSD.DepartmentID = stat.DepartmentID
WHERE
stat.[Value] <> 0 AND stat.Isdeleted = 0 AND stat.PayPeriodID != 0
AND (D.IsPR = 1 or exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache dc where dc.DriverDepartmentID = D.DepartmentID))
AND stat.TimeClassID=1
AND stat.DepartmentID <> 0
AND (D.IsPR = 1 or FDPSD.DepartmentID is not null)
AND (@departmentIDs is null or stat.DepartmentID in (select val from #departments))
AND (@fiscalYearID = 0 or stat.PayPeriodID in (select val from #payperiods))
GROUP BY
stat.DepartmentID,
stat.AccountID,
stat.PayPeriodID,
stat.TimeClassID
--pull new data - Aggregation of daily GL Actuals where not already sampled
INSERT INTO #StatisticSampledTempTable (DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
stat.[DepartmentID],
stat.[AccountID],
PP.[PayPeriodID],
stat.[TimeClassID],
SUM(STAT.[Value]) as Units
FROM
[int].[FactSharedImportDailyStatistics] stat
inner join [fw].[DimDate] DATE on stat.DateID=DATE.DateID
inner join [fw].[DimDepartment] D on D.Departmentid = STAT.Departmentid
inner join [fw].[DimPayPeriod] PP on D.PayCycleID=PP.PayCycleID and DATE.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
left join #StatisticSampledTempTable ex on ex.DepartmentID = stat.DepartmentID and ex.AccountID = stat.AccountID and ex.PayPeriodID = PP.PayPeriodID and ex.TimeClassID = 1
WHERE
stat.[Value] <> 0 and STAT.Isdeleted = 0 and PP.PayPeriodID != 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null)
and stat.TimeClassID = 1
and stat.DepartmentID <> 0
and ex.DepartmentID IS NULL
and (@departmentIDs is null or stat.DepartmentID in (select val from #departments))
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
GROUP BY
stat.DepartmentID,
stat.AccountID,
stat.TimeClassID,
PP.PayPeriodID
--pull new data - Aggregation of daily charge-based Actuals where not already sampled
INSERT INTO #StatisticSampledTempTable (DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
STAT.DepartmentID,
STAT.AccountID,
PP.PayPeriodID,
1 as TimeClassID,
SUM(STAT.Value) AS Units
FROM
[fw].[FactChargeBasedStatistics] STAT
inner join [fw].[DimDate] DATE on STAT.DateID=DATE.DateID
inner join [fw].[DimDepartment] D on STAT.DepartmentID=D.DepartmentID
inner join [fw].[DimPayPeriod] PP on D.PayCycleID=PP.PayCycleID and DATE.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
left join #StatisticSampledTempTable ex on ex.DepartmentID = stat.DepartmentID and ex.AccountID = stat.AccountID and ex.PayPeriodID = PP.PayPeriodID and ex.TimeClassID = 1
WHERE
STAT.Value != 0 and STAT.IsDeleted = 0 and PP.PayPeriodID != 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null)
and ex.DepartmentID IS NULL
and (@departmentIDs is null or STAT.DepartmentID in (select val from #departments))
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
GROUP BY
STAT.DepartmentID,
STAT.AccountID,
PP.PayPeriodID
--pull new data - Pay Period Budget from GL for all Departments and Accounts
INSERT INTO #StatisticSampledTempTable (DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
stat.[DepartmentID],
stat.[AccountID],
STAT.[PayPeriodID],
stat.[TimeClassID],
SUM(STAT.[Value]) as Units
FROM
[int].[FactStatisticsbyPayPeriod] stat
inner join [fw].[DimDepartment] D on D.Departmentid = STAT.[Departmentid]
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.[DepartmentID]
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
WHERE
STAT.[Value] != 0 and STAT.Isdeleted = 0 and STAT.PayPeriodID != 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null or dba.val is not null)
and stat.TimeClassID = 2
and stat.DepartmentID <> 0
and (@departmentIDs is null or stat.DepartmentID in (select val from #departments))
and (@fiscalYearID = 0 or stat.PayPeriodID in (select val from #payperiods))
GROUP BY
stat.DepartmentID,
stat.AccountID,
STAT.PayPeriodID,
stat.TimeClassID
CREATE TABLE #StatisticInsertTempTable
(
DepartmentID int,
AccountID int,
PayPeriodID int,
TimeClassID int,
Units decimal(18, 6)
)
CREATE TABLE #StatisticTempTableBackup
(
DepartmentID int,
AccountID int,
PayPeriodID int,
TimeClassID int,
Units decimal(18, 6)
)
INSERT INTO #StatisticTempTableBackup(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT DepartmentID, AccountID, PayPeriodID, TimeClassID, Units from #StatisticSampledTempTable
DECLARE @BudgetReallocationGUID UNIQUEIDENTIFIER,
@date DATETIME,
@BudgetReallocationType VARCHAR(50)
PRINT '-------- Vendor Products Report --------';
DECLARE BRA_cursor CURSOR
FOR
SELECT DISTINCT
BudgetReallocationGUID, [DATE], BudgetReallocationType
FROM fw.BudgetReallocationWithDefinedType br
INNER JOIN [fw].DimPayPeriod pp ON (
(br.FiscalMonthID = pp.FiscalMonthIDStart AND br.FiscalYearID = pp.FiscalYearIDStart) OR
(br.FiscalMonthID = pp.FiscalMonthIDSecond AND br.FiscalYearID = pp.FiscalYearIDSecond))
INNER JOIN #payperiods pay ON pay.val = pp.PayPeriodID
WHERE br.BudgetReallocationType IS NOT NULL
ORDER BY DATE;
OPEN BRA_cursor
FETCH NEXT
FROM BRA_cursor
INTO @BudgetReallocationGUID, @date, @BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
IF @BudgetReallocationType = 'ReallocateSingle'
BEGIN
--update target
UPDATE stt
SET
Units = Units + ba.Change * pp.PeriodWeightStart
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.TargetDepartmentID = stt.DepartmentID AND
b.TargetAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
Units = Units + ba.Change * pp.PeriodWeightSecond
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.TargetDepartmentID = stt.DepartmentID AND
b.TargetAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
--update source
UPDATE stt
SET
Units = Units - ba.Change * pp.PeriodWeightStart
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
Units = Units - ba.Change * pp.PeriodWeightSecond
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
--clear records in temp insert table
TRUNCATE TABLE #StatisticInsertTempTable
-- insert missing source records
INSERT INTO #StatisticInsertTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
b.SourceDepartmentID AS DepartmentID,
b.SourceAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM((ba.Change * pp.PeriodWeightStart)*-1) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.SourceDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDStart = ba.FiscalMonthID AND
pp.FiscalYearIDStart = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
pp.PayPeriodId = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
stt.DepartmentID IS NULL AND
ba.UnitTypeID = 145 AND
b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID
UNION ALL
SELECT
b.SourceDepartmentID AS DepartmentID,
b.SourceAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM((ba.Change * pp.PeriodWeightSecond)*-1) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.SourceDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDSecond = ba.FiscalMonthID AND
pp.FiscalYearIDSecond = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
pp.PayPeriodId = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
stt.DepartmentID IS NULL AND
ba.UnitTypeID = 145 AND
b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID
--insert missing target records
INSERT INTO #StatisticInsertTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
b.TargetDepartmentID AS DepartmentID,
b.TargetAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM((ba.Change * pp.PeriodWeightStart)) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.TargetDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDStart = ba.FiscalMonthID AND
pp.FiscalYearIDStart = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.TargetDepartmentID = stt.DepartmentID AND
b.TargetAccountID = stt.AccountID AND
pp.PayPeriodId = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
stt.DepartmentID IS NULL AND
ba.UnitTypeID = 145 AND
b.Archived = 0
GROUP BY
b.TargetDepartmentID,
b.TargetAccountID,
pp.PayPeriodID
UNION ALL
SELECT
b.TargetDepartmentID AS DepartmentID,
b.TargetAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM((ba.Change * pp.PeriodWeightSecond)) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.TargetDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDSecond = ba.FiscalMonthID AND
pp.FiscalYearIDSecond = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.TargetDepartmentID = stt.DepartmentID AND
b.TargetAccountID = stt.AccountID AND
pp.PayPeriodId = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
stt.DepartmentID IS NULL AND
ba.UnitTypeID = 145 AND
b.Archived = 0
GROUP BY
b.TargetDepartmentID,
b.TargetAccountID,
pp.PayPeriodID
--insert to statistic temp table
INSERT INTO #StatisticSampledTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID,
SUM(Units)
FROM #StatisticInsertTempTable
GROUP BY
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID
END
IF @BudgetReallocationType = 'ReallocateMulti'
BEGIN
--update target
UPDATE stt
SET
Units = stt.Units + stt_src_back.Units * pp.DaysInPeriodWeightStart
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.TargetDepartmentID = stt.DepartmentID AND
b.TargetAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt_src_back.DepartmentID = b.SourceDepartmentID AND
stt_src_back.AccountID = b.SourceAccountID AND
stt_src_back.PayPeriodID = stt.PayPeriodID AND
stt_src_back.TimeClassID = stt.TimeClassID
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
Units = stt.Units + stt_src_back.Units * pp.DaysInPeriodWeightSecond
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.TargetDepartmentID = stt.DepartmentID AND
b.TargetAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt_src_back.DepartmentID = b.SourceDepartmentID AND
stt_src_back.AccountID = b.SourceAccountID AND
stt_src_back.PayPeriodID = stt.PayPeriodID AND
stt_src_back.TimeClassID = stt.TimeClassID
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
--clear records in temp insert table
TRUNCATE TABLE #StatisticInsertTempTable
-- insert missing target records
INSERT INTO #StatisticInsertTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
b.TargetDepartmentID AS DepartmentID,
b.TargetAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM(stt_src_back.Units * pp.DaysInPeriodWeightStart) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.TargetDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDStart = ba.FiscalMonthID AND
pp.FiscalYearIDStart = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt_src_back.DepartmentID = b.SourceDepartmentID AND
stt_src_back.AccountID = b.SourceAccountID AND
stt_src_back.PayPeriodID = PP.PayPeriodID AND
stt_src_back.TimeClassID = 2
LEFT JOIN #StatisticSampledTempTable stt ON
stt.DepartmentID = b.TargetDepartmentID AND
stt.AccountID = b.TargetAccountID AND
stt.PayPeriodID = pp.PayPeriodID AND
stt.TimeClassID = 2
WHERE
stt.DepartmentID IS NULL AND
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
b.Archived = 0
GROUP BY
b.TargetDepartmentID,
b.TargetAccountID,
pp.PayPeriodID
UNION ALL
SELECT
b.TargetDepartmentID AS DepartmentID,
b.TargetAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM(stt_src_back.Units * pp.DaysInPeriodWeightSecond) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.TargetDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDSecond = ba.FiscalMonthID AND
pp.FiscalYearIDSecond = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt_src_back.DepartmentID = b.SourceDepartmentID AND
stt_src_back.AccountID = b.SourceAccountID AND
stt_src_back.PayPeriodID = PP.PayPeriodID AND
stt_src_back.TimeClassID = 2
LEFT JOIN #StatisticSampledTempTable stt ON
stt.DepartmentID = b.TargetDepartmentID AND
stt.AccountID = b.TargetAccountID AND
stt.PayPeriodID = pp.PayPeriodID AND
stt.TimeClassID = 2
WHERE
stt.DepartmentID IS NULL AND
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
b.Archived = 0
GROUP BY
b.TargetDepartmentID,
b.TargetAccountID,
pp.PayPeriodID
--insert to statistic temp table
INSERT INTO #StatisticSampledTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID,
SUM(Units)
FROM #StatisticInsertTempTable
GROUP BY
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID
--update source
UPDATE stt_src
SET
Units = stt_src.Units - stt_src_back.Units * DaysInPeriodWeightStart
FROM
#StatisticSampledTempTable stt_src
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt_src.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt_src.DepartmentID AND
b.SourceAccountID = stt_src.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt_src.AccountID = stt_src_back.AccountID AND
stt_src.DepartmentID = stt_src_back.DepartmentID AND
stt_src.PayPeriodID = stt_src_back.PayPeriodID AND
stt_src.TimeClassID = stt_src_back.TimeClassID
LEFT JOIN #StatisticSampledTempTable stt ON
stt.DepartmentID = b.TargetDepartmentID and
stt.AccountID = b.TargetAccountID and
stt.TimeClassID = 2 and
stt.PayPeriodID = stt_src.PayPeriodID
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
b.Archived = 0
UPDATE stt_src
SET
Units = stt_src.Units - stt_src_back.Units * DaysInPeriodWeightSecond
FROM
#StatisticSampledTempTable stt_src
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt_src.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt_src.DepartmentID AND
b.SourceAccountID = stt_src.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt_src.AccountID = stt_src_back.AccountID AND
stt_src.DepartmentID = stt_src_back.DepartmentID AND
stt_src.PayPeriodID = stt_src_back.PayPeriodID AND
stt_src.TimeClassID = stt_src_back.TimeClassID
LEFT JOIN #StatisticSampledTempTable stt ON
stt.DepartmentID = b.TargetDepartmentID and
stt.AccountID = b.TargetAccountID and
stt.TimeClassID = 2 and
stt.PayPeriodID = stt_src.PayPeriodID
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
b.Archived = 0
END
IF @BudgetReallocationType = 'AdjustMontly'
BEGIN
--update source
UPDATE stt
SET
Units = Units + ba.Change * pp.PeriodWeightStart
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
Units = Units + ba.Change * pp.PeriodWeightSecond
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
--clear records in temp insert table
TRUNCATE TABLE #StatisticInsertTempTable
-- insert missing source records
INSERT INTO #StatisticInsertTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
b.SourceDepartmentID AS DepartmentID,
b.SourceAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM(ba.Change * pp.PeriodWeightStart) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.SourceDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDStart = ba.FiscalMonthID AND
pp.FiscalYearIDStart = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
pp.PayPeriodID = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID
UNION ALL
SELECT
b.SourceDepartmentID AS DepartmentID,
b.SourceAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM(ba.Change * pp.PeriodWeightSecond) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.SourceDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDSecond = ba.FiscalMonthID AND
pp.FiscalYearIDSecond = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
pp.PayPeriodID = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID
--insert to statistic temp table
INSERT INTO #StatisticSampledTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID,
SUM(Units)
FROM #StatisticInsertTempTable
GROUP BY
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID
END
IF @BudgetReallocationType = 'ManualFile'
BEGIN
--update source
UPDATE stt
SET
stt.Units = stt.Units - stt_src_back.Units * pp.DaysInPeriodWeightStart
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt.AccountID = stt_src_back.AccountID AND
stt.DepartmentID = stt_src_back.DepartmentID AND
stt.PayPeriodID = stt_src_back.PayPeriodID AND
stt.TimeClassID = stt_src_back.TimeClassID
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
stt.Units = stt.Units - stt_src_back.Units * pp.DaysInPeriodWeightSecond
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
INNER JOIN #StatisticTempTableBackup stt_src_back ON
stt.AccountID = stt_src_back.AccountID AND
stt.DepartmentID = stt_src_back.DepartmentID AND
stt.PayPeriodID = stt_src_back.PayPeriodID AND
stt.TimeClassID = stt_src_back.TimeClassID
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
Units = Units + ba.NewSourceValue * pp.PeriodWeightStart
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDStart
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDStart
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
UPDATE stt
SET
Units = Units + ba.NewSourceValue * pp.PeriodWeightSecond
FROM
#StatisticSampledTempTable stt
INNER JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID=stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
b.FiscalYearID = pp.FiscalYearIDSecond
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON
b.BudgetReallocationGUID = ba.BudgetReallocationGUID AND
ba.FiscalMonthID = pp.FiscalMonthIDSecond
WHERE
ba.Change <> 0 AND
b.BudgetReallocationGUID = @BudgetReallocationGUID AND
ba.UnitTypeID = 145 AND
stt.TimeClassID = 2 AND
b.Archived = 0
--clear records in temp insert table
TRUNCATE TABLE #StatisticInsertTempTable
-- insert missing source records
INSERT INTO #StatisticInsertTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
b.SourceDepartmentID AS DepartmentID,
b.SourceAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM(ba.NewSourceValue * pp.PeriodWeightStart) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.SourceDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDStart = ba.FiscalMonthID AND
pp.FiscalYearIDStart = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
pp.PayPeriodID = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID
UNION ALL
SELECT
b.SourceDepartmentID AS DepartmentID,
b.SourceAccountID AS AccountID,
pp.PayPeriodID,
2 AS TimeclassID,
SUM(ba.NewSourceValue * pp.PeriodWeightSecond) AS Units
FROM
[mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba ON b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDepartment] dep ON dep.DepartmentID = b.SourceDepartmentID
INNER JOIN [fw].[DimPayPeriod] pp ON
pp.PayCycleID = dep.PayCycleID AND
pp.FiscalMonthIDSecond = ba.FiscalMonthID AND
pp.FiscalYearIDSecond = b.FiscalYearID
INNER JOIN #payperiods pay on pp.PayPeriodID = pay.val
LEFT JOIN #StatisticSampledTempTable stt ON
b.SourceDepartmentID = stt.DepartmentID AND
b.SourceAccountID = stt.AccountID AND
pp.PayPeriodID = stt.PayPeriodID AND
stt.TimeClassID = 2
WHERE
ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID
--insert to statistic temp table
INSERT INTO #StatisticSampledTempTable(DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
SELECT
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID,
SUM(Units)
FROM #StatisticInsertTempTable
GROUP BY
DepartmentID,
AccountID,
PayPeriodID,
TimeClassID
END
SET @iteration = @iteration + 1
FETCH NEXT
FROM BRA_cursor
INTO @BudgetReallocationGUID,
@date,
@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
IF @StatisticType = 2
SELECT stat.*
FROM
#StatisticSampledTempTable stat
INNER JOIN [fw].[viewStatisticSecondaryConfiguration] V ON
V.AccountID = stat.AccountID AND
V.DepartmentID = stat.DepartmentID
ELSE IF @StatisticType = 1
SELECT
stat.*
FROM
#StatisticSampledTempTable stat
INNER JOIN [fw].[viewStatisticPrimaryConfiguration] V ON
V.AccountID = stat.AccountID AND
V.DepartmentID = stat.DepartmentID
ELSE
SELECT stat.*
FROM #StatisticSampledTempTable stat
-- Fill Charge Based Statistics Sampled Keys
IF @isPrMetricConfigurationOn = 1
BEGIN
IF @FiscalYearID = 0
BEGIN
TRUNCATE TABLE fw.FactChargeBasedStatisticsPayPeriodKeys
END
ELSE
BEGIN
DELETE F FROM fw.FactChargeBasedStatisticsPayPeriodKeys F
INNER JOIN #payperiods PP ON PP.val = F.PayPeriodID
END
INSERT INTO fw.FactChargeBasedStatisticsPayPeriodKeys (DepartmentID, AccountID, PayPeriodID)
SELECT DISTINCT CB.DepartmentID, CB.AccountID, PP.val
FROM fw.FactChargeBasedStatistics CB
INNER JOIN fw.DimDate DT ON DT.DateID = CB.DateID
INNER JOIN fw.DimDepartment DEPT ON DEPT.DepartmentID = CB.DepartmentID
INNER JOIN #payperiods PP ON PP.PayCycleID = DEPT.PayCycleID AND DT.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
LEFT JOIN int.FactSharedImportDailyStatistics DS ON DS.DepartmentID = CB.DepartmentID AND DS.AccountID = CB.AccountID AND DS.DateID = CB.DateID AND DS.TimeClassID = 1
LEFT JOIN int.FactStatisticsbyPayPeriod FS ON FS.DepartmentID = CB.DepartmentID AND FS.AccountID = CB.AccountID AND FS.PayPeriodID = PP.val AND FS.TimeClassID = 1
LEFT JOIN #FDPSD FDPSD on FDPSD.DepartmentID = CB.DepartmentID
WHERE
CB.IsDeleted = 0
AND CB.DepartmentID != 0
AND PP.val != 0
AND CB.Value != 0
AND DS.RowID IS NULL
AND FS.RowID IS NULL
AND (DEPT.IsPR = 1 OR FDPSD.DepartmentID IS NOT NULL)
END
IF OBJECT_ID('tempdb..#StatisticSampledTempTable') IS NOT NULL DROP TABLE #StatisticSampledTempTable
IF OBJECT_ID('tempdb..#departments') IS NOT NULL DROP TABLE #departments
IF OBJECT_ID('tempdb..#departmentsBudgetAllocations') IS NOT NULL DROP TABLE #departmentsBudgetAllocations
IF OBJECT_ID('tempdb..#FDPSD') IS NOT NULL DROP TABLE #FDPSD
IF OBJECT_ID('tempdb..#StatisticInsertTempTable') IS NOT NULL DROP TABLE #StatisticInsertTempTable
IF OBJECT_ID('tempdb..#payperiods') IS NOT NULL DROP TABLE #payperiods
IF OBJECT_ID('tempdb..#StatisticTempTableBackup') IS NOT NULL DROP TABLE #StatisticTempTableBackup
GO
---------------------------------------------
-- fw.procABBFlexingReconcilationSampling
CREATE PROCEDURE [fw].[procABBFlexingReconcilationSampling]
AS
BEGIN
BEGIN TRANSACTION
TRUNCATE TABLE [fw].[ABBFlexingReconciliationCostingData]
TRUNCATE TABLE [fw].[ABBBudgetedCostPerRVU]
COMMIT
BEGIN TRANSACTION
INSERT INTO [fw].[ABBBudgetedCostPerRVU]
([DepartmentID], [AccountID], [JobCodeID], [PayCodeID], [CostComponentID], [CostingConfigGuid], [VariableDirectUnitCostPerRVU], [TotalVariableDirectCost], [TotalCost])
SELECT
gl.DepartmentID
, OriginalAccountID as AccountID
, 0 as JobCodeID
, 0 as PayCodeID
, gl.CostComponentID
, cr.CostingConfigGuid
, SUM(gl.VariableDirectUnitCost)/SUM(ca.RVU) as VariableDirectUnitCostPerRVU
, SUM(gl.VariableDirectUnitCost * gl.Volume) as TotalVariableDirectCost
, SUM(gl.TotalCost) as TotalCost
FROM [dss].[FactCostingOutDetailGL] gl
INNER JOIN [dss].[CostingResult] cr on gl.CostingResultID = cr.CostingResultID
INNER JOIN [fp].[EntityGroupConfig] ec on cr.CostingConfigGuid = ec.CostingConfigGUID
INNER JOIN [dss].[ChargeAllocation] ca on
ca.CostingConfigGuid = cr.CostingConfigGUID
and ca.ChargeCodeID = gl.ChargeCodeID
and ca.DepartmentID = gl.DepartmentID
and ca.CostComponentID = gl.CostComponentID
and AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
WHERE
--[BL] need to only run this for the costing config specified on the system center MR page
gl.CostingResultID in (select max(cr2.CostingResultID) from [dss].[CostingResult] cr2 where cr2.CostingConfigGuid = '7f3c4d40-be55-4fde-88b5-93cdf8401090' and cr2.IsActivityBasedDetail = 1 and cr2.IsMarkedForDeletion = 0)
and gl.TimeClassID = ec.CostingConfigTimeClassID and gl.VariableDirectUnitCost<>0
GROUP BY
gl.OriginalAccountID
, gl.DepartmentID
, gl.CostComponentID
, cr.CostingConfigGuid
UNION ALL
SELECT
pr.DepartmentID
, ISNULL(cw.AccountID,0) as AccountID
, pr.OriginalJobCodeID as JobCodeID
, pr.OriginalPayCodeID as PayCodeID
, pr.CostComponentID
, cr.CostingConfigGuid
, SUM(pr.VariableDirectUnitCost)/SUM(ca.RVU) as VariableDirectUnitCostPerRVU
, SUM(pr.VariableDirectUnitCost * pr.Volume) as TotalVariableDirectCost
, SUM(pr.TotalCost) as TotalCost
FROM [dss].[FactCostingOutDetailPayroll] pr
INNER JOIN [dss].[CostingResult] cr on pr.CostingResultID = cr.CostingResultID
INNER JOIN [fp].[EntityGroupConfig] ec on cr.CostingConfigGuid = ec.CostingConfigGUID
INNER JOIN [fw].[DimPayCode] pc on pr.OriginalPayCodeID=pc.PayCodeID
INNER JOIN [dss].[ChargeAllocation] ca on
ca.CostingConfigGuid = cr.CostingConfigGUID
and ca.ChargeCodeID = pr.ChargeCodeID
and ca.DepartmentID = pr.DepartmentID
and ca.CostComponentID = pr.CostComponentID
and AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
LEFT JOIN [clientob].[FactPayrollToAccountCrosswalk] cw on pr.OriginalJobCodeID = cw.JobCodeID AND pc.PayCodeGroupID = cw.PayCodeGroupID AND cw.UnitTypeID = 34
WHERE
--[BL] need to only run this for the costing config specified on the system center MR page
pr.CostingResultID in (select max(cr2.CostingResultID) from [dss].[CostingResult] cr2 where cr2.CostingConfigGuid = '7f3c4d40-be55-4fde-88b5-93cdf8401090' and cr2.IsActivityBasedDetail = 1 and cr2.IsMarkedForDeletion = 0)
and pr.TimeClassID = ec.CostingConfigTimeClassID and pr.VariableDirectUnitCost<>0
GROUP BY
cw.AccountID
, pr.OriginalJobCodeID
, pr.OriginalPayCodeID
, pr.DepartmentID
, pr.CostComponentID
, cr.CostingConfigGuid
COMMIT
DECLARE @DepartmentCursor CURSOR,
@DepartmentID INT,
@DepartmentName Nvarchar(200),
@TotalNumberDepts nvarchar(10),
@CurrentDepartment nvarchar(10),
@Message NvarChar(400),
@time char(8)
SET @DepartmentCursor = CURSOR FOR (SELECT DISTINCT DepartmentID FROM (Select DepartmentID from [dss].[FactDepartmentChargeSummary] WHERE IsDeleted = 0
UNION ALL
Select DepartmentID from [int].[FactCDM]) A
)
SET @TotalNumberDepts = (SELECT COUNT(distinct DepartmentID) FROM (Select DepartmentID from [dss].[FactDepartmentChargeSummary] WHERE IsDeleted = 0
UNION ALL
Select DepartmentID from [int].[FactCDM]) A
)
SET @CurrentDepartment = 0
OPEN @DepartmentCursor
FETCH NEXT FROM @DepartmentCursor
INTO @DepartmentID
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CurrentDepartment = @CurrentDepartment + 1
SET @DepartmentName = (SELECT NAME FROM FW.DimDepartment WHERE DepartmentID=@DepartmentID)
Set @Message = 'Department: ' + @DepartmentName + ' ' + @CurrentDepartment + ' of ' + @TotalNumberDepts
SET @time= convert (varchar(30), getdate(), 8)
RAISERROR (@Message, 0, 1, @time) WITH NOWAIT
BEGIN TRANSACTION
INSERT INTO [fw].[ABBFlexingReconciliationCostingData]
SELECT
charge.CostingConfigGUID
, dept.EntityID
, Volume.DepartmentID AS OriginalDepartmentID
, ISNULL(cost.OriginalJobCodeID,0) AS OriginalJobCodeID
, ISNULL(cost.OriginalPayCodeID,0) AS OriginalPayCodeID
, ISNULL(cost.OriginalAccountID,0) AS OriginalAccountID
, Volume.ChargeCodeID
, Volume.FiscalYearID
, Volume.FiscalMonthID
, COALESCE(cost.CostComponentID, Charge.CostComponentID) AS CostComponentID
, CASE WHEN Volume.TimeClassID = 1 THEN ISNULL(cost.FixedDirectUnitCost,0) ELSE 0.0 END AS FixedDirectUnitCost
, CASE WHEN Volume.TimeClassID = 1 THEN ISNULL(cost.VariableDirectUnitCost,0) ELSE 0.0 END AS VariableDirectUnitCost
, CASE WHEN Volume.TimeClassID = 2 THEN ISNULL(cost.FixedDirectUnitCost,0) ELSE 0.0 END AS BudgetFixedDirectUnitCost
, CASE WHEN Volume.TimeClassID = 2 THEN ISNULL(cost.VariableDirectUnitCost,0) ELSE 0.0 END AS BudgetVariableDirectUnitCost
, CASE WHEN Volume.TimeClassID = 1 THEN volume.Volume ELSE 0.0 END AS ActualMonthlyVolume
, CASE WHEN Volume.TimeClassID = 2 THEN volume.Volume ELSE 0.0 END AS BudgetedMonthlyVolume
, ISNULL(charge.RVU, 0.0) as RVU
FROM
(SELECT fdcs.DepartmentID, fdcs.ChargeCodeID, fdcs.FiscalYearID, fdcs.TimeClassID, fdcs.FiscalMonthID, SUM(fdcs.Volume) AS Volume
FROM [dss].[FactDepartmentChargeSummary] fdcs
WHERE fdcs.IsDeleted = 0 and FiscalYearID=2017 --[BL] NEED TO UPDATE THIS JOIN TO ONLY INCL THE TARGET FISCAL YEAR
GROUP BY fdcs.DepartmentID, fdcs.ChargeCodeID, fdcs.FiscalYearID, fdcs.TimeClassID, fdcs.FiscalMonthID
UNION ALL
SELECT cdm.DepartmentID, cdm.ChargeCodeID, cdm.FiscalYearID, cdm.TimeClassID, cdm.FiscalMonthID, SUM(cdm.Value) as Volume
FROM [int].[FactCDM] cdm
WHERE cdm.UnitTypeID = 145 and TimeClassID = 2 and FiscalYearID=2017 --[BL] NEED TO UPDATE THIS JOIN TO ONLY INCL THE TARGET FISCAL YEAR
GROUP BY cdm.DepartmentID, cdm.ChargeCodeID, cdm.FiscalYearID, cdm.TimeClassID, cdm.FiscalMonthID
) Volume
LEFT JOIN
(SELECT OriginalDepartmentID, CostingResultID, ChargeCodeID, FiscalYearID, TimeClassID, CostComponentID, OriginalAccountID, 0 as OriginalPayCodeID, 0 as OriginalJobCodeID, Volume, FixedDirectUnitCost, VariableDirectUnitCost FROM [dss].[FactCostingOutDetailGL]
UNION
SELECT OriginalDepartmentID, CostingResultID, ChargeCodeID, FiscalYearID, TimeClassID, CostComponentID, ISNULL(cw.AccountID,0.0) as OriginalAccountID, OriginalPayCodeID, OriginalJobCodeID, Volume, FixedDirectUnitCost, VariableDirectUnitCost
FROM [dss].[FactCostingOutDetailPayroll] p
INNER JOIN [fw].[DimPayCode] pc on p.OriginalPayCodeID=pc.PayCodeID
LEFT JOIN [clientob].[FactPayrollToAccountCrosswalk] cw on p.OriginalJobCodeID = cw.JobCodeID AND pc.PayCodeGroupID = cw.PayCodeGroupID AND cw.UnitTypeID = 34
) as cost
ON Volume.DepartmentID = cost.OriginalDepartmentID
AND Volume.ChargeCodeID = cost.ChargeCodeID
AND Volume.FiscalYearID = cost.FiscalYearID
AND Volume.TimeClassID = cost.TimeClassID
INNER JOIN [dss].[CostingResult] cr
ON cost.CostingResultID = cr.CostingResultID
INNER JOIN [fw].[DimDepartment] dept
ON dept.DepartmentID = Volume.DepartmentID
LEFT JOIN
(SELECT ca.DepartmentID, ca.ChargeCodeID, ca.CostComponentID, ca.CostingConfigGuid, ca.RVU
FROM [dss].[ChargeAllocation] ca
WHERE ca.AllocationType = 1 and ca.IsFixed = 0 and ca.IsIndirect = 0 and ca.RVU <> 0
AND CostingConfigGuid='7f3c4d40-be55-4fde-88b5-93cdf8401090'
) charge
ON Volume.DepartmentID = charge.DepartmentID
AND Volume.ChargeCodeID = charge.ChargeCodeID
AND cost.CostComponentID = charge.CostComponentID
AND cr.CostingConfigGuid = charge.CostingConfigGuid
WHERE cost.CostingResultID in (SELECT CostingResultID FROM (SELECT CostingConfigGuid, MAX(CostingResultID) as CostingResultID FROM [dss].[CostingResult] WHERE CostingConfigGuid='7f3c4d40-be55-4fde-88b5-93cdf8401090' and IsMarkedForDeletion = 0 AND IsActivityBasedDetail = 1 GROUP BY CostingConfigGuid) cr2)
AND (Volume.DepartmentID=@DepartmentID)
COMMIT
FETCH NEXT FROM @DepartmentCursor INTO @DepartmentID
END
CLOSE @DepartmentCursor
DEALLOCATE @DepartmentCursor
END
GO
---------------------------------------------
-- fw.procABBMRTransferFlexedPayrollSampledMonthlyToFactGLSampled
CREATE PROC [fw].[procABBMRTransferFlexedPayrollSampledMonthlyToFactGLSampled]
@fiscalYearID int,
@CostingResultID int
AS
/* ************************************************************************************************************************
** Author: BL/NL
** Create Date: 2016-08-05
** Description: Runs GL flexing for MR
** Last Modified: 2016-08-05
**************************************************************************************************************************
** Change History
**************************************************************************************************************************
** CID Date Author WI Description
** 1 2017-10-09 PA D-06466 Filter for ABB depts and IsDeleted
*************************************************************************************************************************/
DECLARE @higuid UNIQUEIDENTIFIER
EXEC procLogScript 'Sampling Flexed Payroll Sample to GL Sample: See procABBMRTransferFlexedPayrollSampledMonthlytoFactGLSampled_NMC_CUSTOM_TEMP' , @higuid output
SELECT DISTINCT DepartmentID
INTO #ABBDepts
FROM (
SELECT DepartmentID FROM [dss].[FactCostingOutDetailGL] WHERE CostingResultID = @CostingResultID
UNION ALL
SELECT DepartmentID FROM [dss].[FactCostingOutDetailPayroll] WHERE CostingResultID = @CostingResultID) depts;
SELECT
p.[DepartmentID]
, cw.[AccountID]
, p.[FiscalYearID]
, p.[FiscalMonthID]
, p.[TimeClassID]
, p.[IsDeleted]
, @higuid as [HistoryItemGUID]
, SUM(p.Hours) as [Units]
, SUM(p.HoursYTD) as [UnitsYTD]
, SUM(p.HoursPriorYear) as [UnitsPriorYear]
, SUM(p.HoursPriorYTD) as [UnitsPriorYTD]
, SUM(p.[Dollars]) as Dollars
, SUM(p.[DollarsYTD]) as DollarsYTD
, SUM(p.[DollarsPriorYear]) as DollarsPriorYear
, SUM(p.[DollarsPriorYTD]) as DollarsPriorYTD
, p.[TransactionID]
INTO #FlexPayroll
FROM [fw].[FactPayrollSampledMonthly] p
INNER JOIN [clientob].[FactPayrollToAccountCrosswalk] cw on p.JobCodeID = cw.JobCodeID AND p.PayCodeGroupID = cw.PayCodeGroupID AND cw.UnitTypeID = 34
INNER JOIN [fw].[DimDepartment] dept on p.DepartmentID = dept.DepartmentID
INNER JOIN #ABBDepts abb ON p.DepartmentID = abb.DepartmentID
WHERE TimeClassID = 4 AND FiscalYearID = @fiscalYearID
AND cw.IsDeleted = 0
GROUP BY
p.[DepartmentID]
, cw.[AccountID]
, p.[FiscalYearID]
, p.[FiscalMonthID]
, p.[TimeClassID]
, p.[IsDeleted]
, p.[TransactionID];
DELETE GL
FROM [fw].[FactGLSampled] GL
WHERE EXISTS
(SELECT 1
FROM #FlexPayroll PR
WHERE GL.DepartmentID=PR.DepartmentID
AND GL.AccountID=PR.AccountID
AND GL.FiscalYearID=PR.FiscalYearID
AND GL.FiscalMonthID=PR.FiscalMonthID
AND GL.TimeClassID=PR.TimeClassID);
INSERT INTO [fw].[FactGLSampled]
([DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], [IsDeleted], [HistoryItemGUID], [Units], [UnitsYTD], [UnitsPriorYear], [UnitsPriorYTD], [Dollars], [DollarsYTD], [DollarsPriorYear], [DollarsPriorYTD], [TransactionID])
SELECT [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], [IsDeleted], [HistoryItemGUID], [Units], [UnitsYTD], [UnitsPriorYear], [UnitsPriorYTD], [Dollars], [DollarsYTD], [DollarsPriorYear], [DollarsPriorYTD], [TransactionID]
FROM #FlexPayroll;
DROP TABLE #FlexPayroll;
GO
---------------------------------------------
-- fw.procCopyFactGLBudgetToImport
CREATE PROCEDURE fw.procCopyFactGLBudgetToImport (@HistoryItemGUID uniqueidentifier) as
BEGIN
/************************************************************
** Author: ipetriv
** Create Date: 2018-01-15
** Description: Add procedure to calc EfficiencyFactor
** Last Modified: 2017-01-15
** GM Release: 2018.2
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-01-15 IP B-18301 Created
*************************************************************/
DECLARE @FiscalYearId INT = (
SELECT setting
FROM dbsetting
WHERE NAME = 'Current_GL_YearID'
)
IF OBJECT_ID('int.FactGLHistory', 'U') IS NOT NULL
DROP TABLE INT.FactGLHistory;
SELECT RowID,
[DepartmentID],
[DepartmentCode],
[AccountID],
[AccountCode],
[FiscalYearID],
[FiscalYearCode],
[TimeClassID],
[TimeClassCode],
[FiscalMonthID],
[FiscalMonthCode],
[Value],
[IsDeleted],
[HistoryItemGUID],
[Version],
[TransactionID],
getdate() AS BCP_DTTime
INTO INT.FactGLHistory
FROM INT.FactGL
WHERE FiscalYearID = @FiscalYearId
AND TimeClassID = 2
CREATE UNIQUE CLUSTERED INDEX IX_FactGLHistory ON [int].[FactGLHistory] (
[FiscalMonthID] ASC,
[IsDeleted] ASC,
[FiscalYearID] ASC,
[TimeClassID] ASC,
[DepartmentID] ASC,
[AccountID] ASC,
[RowID] ASC
) ON [PRIMARY]
WHILE 1 = 1
BEGIN
DELETE TOP (10000) iGL
FROM [int].FactGL iGL
INNER JOIN INT.FactGLHistory iGLH ON iGL.[FiscalMonthID] = iGLH.[FiscalMonthID]
AND iGL.[IsDeleted] = iGLH.[IsDeleted]
AND iGL.[FiscalYearID] = iGLH.[FiscalYearID]
AND iGL.[TimeClassID] = iGLH.[TimeClassID]
AND iGL.[DepartmentID] = iGLH.[DepartmentID]
AND iGL.[AccountID] = iGLH.[AccountID]
AND iGL.[RowID] = iGLH.[RowID]
IF @@ROWCOUNT < 10000
BREAK;
END
INSERT INTO [int].FactGL (
DepartmentID,
DepartmentCode,
AccountID,
AccountCode,
FiscalYearID,
FiscalYearCode,
TimeClassID,
TimeClassCode,
FiscalMonthID,
FiscalMonthCode,
Value,
IsDeleted,
HistoryItemGUID,
TransactionID
)
SELECT gl.DepartmentID,
dd.DepartmentCode,
gl.AccountID,
da.AccountCode,
gl.FiscalYearID,
gl.FiscalYearID AS FiscalYearCode,
gl.TimeClassID,
dtm.TimeClassCode,
gl.FiscalMonthID,
dfm.FiscalMonthCode,
sum(CASE
WHEN A.Inversion = - 1
THEN GL.Dollars * - 1
ELSE GL.Dollars
END) AS Value,
0 IsDeleted,
@HistoryItemGUID AS HistoryItemGUID,
0 AS TransactionID
FROM fw.FactGLSampled GL
INNER JOIN fw.DimAccount A ON A.AccountID = GL.AccountID
INNER JOIN fw.DimTimeClass dtm ON dtm.TimeClassID = gl.TimeClassID
INNER JOIN fw.DimDepartment dd ON dd.DepartmentID = gl.DepartmentID
INNER JOIN fw.DimAccount da ON da.AccountID = gl.AccountID
INNER JOIN fw.DimFiscalMonth dfm ON dfm.FiscalMonthID = gl.FiscalMonthID
WHERE gl.TimeClassID = 2 -- Data transferred will be the sampled budgeted data
AND FiscalYearID = @FiscalYearId
AND Dollars <> 0.0
GROUP BY gl.DepartmentID,
dd.DepartmentCode,
gl.AccountID,
da.AccountCode,
gl.FiscalYearID,
gl.TimeClassID,
dtm.TimeClassCode,
gl.FiscalMonthID,
dfm.FiscalMonthCode
END
GO
---------------------------------------------
-- fw.procCopyFactPayrollDollarsToGLMonthly
CREATE PROCEDURE [fw].[procCopyFactPayrollDollarsToGLMonthly]
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1
** 2 2019-02-15 OV D-07848 In Management Reporting, salaries and wages metrics for fixed departments are flexing
** 3 2019-02-19 KF D-08138 MR Flexing: Flex GL values should be 0 for mapped accounts if there is no Payroll data
** 4 2019-03-19 OV D-08253 Used temp table for @DepartmentAccountVariabilityOverrides
** 5 2019-03-26 OV D-08253 Optimize procedure
*************************************************************/
(
@FiscalYearID int = 0,
@PriorYearsCount int = 0,
@DepartmentAccountVariabilityOverrides [ob].[DepartmentAccountVariabilityOverride] READONLY
)
AS
BEGIN
DECLARE @TimeClassID TINYINT = 4 --Flex
DECLARE @UnitTypeID TINYINT = 34 --Dollars
DECLARE @StartFiscalYear INT = @FiscalYearID - @PriorYearsCount
DECLARE @EndFiscalYear INT = @FiscalYearID
IF @FiscalYearID = 0
BEGIN
SELECT @StartFiscalYear = MIN(FiscalYearID) FROM (
SELECT MIN(FiscalYearID) AS FiscalYearID FROM fw.FactPayrollSampledMonthly
UNION ALL
SELECT MIN(FiscalYearID) AS FiscalYearID FROM fw.FactGLSampled) S
SELECT @EndFiscalYear = MAX(FiscalYearID) FROM (
SELECT MAX(FiscalYearID) AS FiscalYearID FROM fw.FactPayrollSampledMonthly
UNION ALL
SELECT MAX(FiscalYearID) AS FiscalYearID FROM fw.FactGLSampled) S
END
DECLARE @MappingMode INT
SELECT TOP 1 @MappingMode = CASE [PropertyXML].value('(/Properties//PayRollToGLLinkDollarsConfiguration/node())[1]', 'nvarchar(max)')
WHEN 'EachJobCode' THEN 1
WHEN 'EachPayCodeGroup' THEN 2
ELSE 0 END -- BothUnique or BothOverride
FROM SystemCenterStep WHERE GlobalID = 'PayrolltoGLLinkSelection'
IF OBJECT_ID('tempdb..#department') IS NOT NULL DROP TABLE #department
IF OBJECT_ID('tempdb..#tempCrosswalk') IS NOT NULL DROP TABLE #tempCrosswalk
IF OBJECT_ID('tempdb..#DepAcc_P_GL') IS NOT NULL DROP TABLE #DepAcc_P_GL
IF OBJECT_ID('tempdb..#Source') IS NOT NULL drop table #Source
IF OBJECT_ID('tempdb..#FactGL_1') IS NOT NULL drop table #FactGL_1
IF OBJECT_ID('tempdb..#FactGL_2 ') IS NOT NULL drop table #FactGL_2
IF OBJECT_ID('tempdb..#Payroll_JC_PCG') IS NOT NULL drop table #Payroll_JC_PCG
IF OBJECT_ID('tempdb..#payroll') IS NOT NULL drop table #payroll
IF OBJECT_ID('tempdb..#DepartmentAccountVariabilityOverride') IS NOT NULL DROP TABLE #DepartmentAccountVariabilityOverride
CREATE TABLE #DepartmentAccountVariabilityOverride (AccountID int, DepartmentID int, Variability decimal(19,8))
INSERT INTO #DepartmentAccountVariabilityOverride (AccountID, DepartmentID, Variability)
select AccountID, DepartmentID, Variability FROM @DepartmentAccountVariabilityOverrides
----
SELECT departmentID,AccountID
into #DepAcc_P_GL
FROM (
select departmentID, AccountId
from fw.FactGLSampled
union
select DepartmentID, accountID
from fw.FactPayrollSampledMonthly
cross join clientob.FactPayrollToAccountCrosswalk c
) t
-----
select d.DepartmentID,AccountID, isvariable
into #department
FROM #DepAcc_P_GL DepAcc_P_GL
inner join fw.DimDepartment d on DepAcc_P_GL.departmentID = d.departmentID
where d.IsMRPlan = 1
-----
SELECT aa.AccountID, cc.UnitTypeID, aa.Variability, FY.FiscalYearID, FM.FiscalMonthID,
CASE WHEN @MappingMode IN(0,1) then cc.JobCodeId else -10001 END AS JobCodeID,
CASE WHEN @MappingMode IN(0,2) then CC.payCodeGroupID else -10001 END AS PayCodeGroupID
into #tempCrosswalk
from clientob.FactPayrollToAccountCrosswalk cc
inner join fw.DimAccount aa on cc.AccountID = aa.AccountID
CROSS JOIN fw.DimFiscalYear FY
CROSS JOIN fw.DimFiscalMonth FM
where CC.UnitTypeID = @UnitTypeID and FY.FiscalYearID BETWEEN @StartFiscalYear AND @EndFiscalYear and FM.FiscalMonthID != 0
-----
select SUM(p.Dollars) as Dollars ,p.FiscalYearID, p.FiscalMonthID,
CASE WHEN @MappingMode IN(0,1) then JobCodeId else -10001 END AS JobCodeID,
CASE WHEN @MappingMode IN(0,2) then payCodeGroupID else -10001 END AS PayCodeGroupID,
DepartmentID
INTO #Payroll_JC_PCG
FROM fw.FactPayrollSampledMonthly P
WHERE P.TimeClassID = @TimeClassID
AND P.IsDeleted = 0
GROUP BY p.FiscalYearID, p.FiscalMonthID, p.JobCodeID, p.PayCodeGroupID, p.DepartmentID
-----
SELECT FactGL.FiscalYearID, FactGL.FiscalMonthId, FactGL.AccountID, FactGL.DepartmentID, FactGL.Dollars as Dollars
INTO #FactGL_1
FROM fw.FactGLSampled FactGL
WHERE FactGL.TimeclassID = 20 AND FactGL.IsDeleted = 0
-----
select FactGl.DepartmentID, Cw.AccountID, cw.FiscalYearID, cw.FiscalMonthID, FactGL.Dollars,CW.Variability * D.IsVariable as Koef_var
INTO #FactGL_2
from (SELECT distinct AccountId,FiscalYearID,FiscalMonthID,Variability FROM #tempCrosswalk) cw
INNER JOIN #FactGL_1 FactGL on
FactGL.FiscalYearID = CW.FiscalYearID
AND FactGL.FiscalMonthID = CW.FiscalMonthID
AND FactGL.AccountID = CW.AccountID
INNER JOIN fw.DimDepartment d on FactGL.departmentID = d.departmentID
-----
SELECT DD.DepartmentID, X.AccountID, X.FiscalYearID, X.FiscalMonthID, X.Dollars, X.Variability * DD.IsVariable as Koef_var
INTO #payroll
FROM (
select Cw.AccountID, cw.FiscalYearID, cw.FiscalMonthID, CW.Variability, SUM(ROUND(p.Dollars,6)) as Dollars, P.DepartmentID
from (SELECT distinct AccountId,JobCodeID,PayCodeGroupID,FiscalYearID,FiscalMonthID,Variability FROM #tempCrosswalk) cw
inner join #Payroll_JC_PCG P ON
P.FiscalYearID = CW.FiscalYearID
AND P.FiscalMonthID = CW.FiscalMonthID
AND CW.JobCodeID = P.JobCodeID
AND CW.PayCodeGroupID = P.PayCodeGroupID
GROUP BY Cw.AccountID, cw.FiscalYearID, cw.FiscalMonthID, cw.Variability, P.DepartmentID
) X
INNER JOIN #department dd on DD.AccountID = X.AccountID and X.DepartmentID = Dd.DepartmentID
-----
SELECT ISNULL(GL.DepartmentID,p.DepartmentID) as DepartmentID,
ISNULL(GL.AccountId,p.AccountId) as AccountId,
ISNULL(GL.FiscalYearId,p.FiscalYearId) as FiscalYearId,
ISNULL(GL.FiscalMonthId,p.FiscalMonthId) as FiscalMonthId,
ISNULL(ISNULL(DAV.Variability,P.Koef_var) * P.Dollars, 0) + isnull((1-ISNULL(DAV.Variability,Gl.Koef_var)) *GL.Dollars,0) as Dollars
INTO #Source
FROM #FactGL_2 GL
FULL JOIN #payroll p on GL.AccountId = p.AccountId and GL.DepartmentID = p.DepartmentID and GL.FiscalYearId = p.FiscalYearId and GL.FiscalMonthId = p.FiscalMonthId
LEFT JOIN #DepartmentAccountVariabilityOverride DAV ON
ISNULL(GL.DepartmentID,p.DepartmentID) = DAV.DepartmentID
AND ISNULL(GL.AccountID,p.AccountId) = DAV.AccountID
----
MERGE fw.FactGLSampled AS TARGET
USING #Source AS SOURCE ON
TARGET.DepartmentID = SOURCE.DepartmentID
AND TARGET.AccountID = SOURCE.AccountID
AND TARGET.FiscalYearID = SOURCE.FiscalYearID
AND TARGET.FiscalMonthID = SOURCE.FiscalMonthID
AND TARGET.TimeClassID = @TimeClassID
AND TARGET.IsDeleted = 0
WHEN MATCHED AND TARGET.Dollars != SOURCE.Dollars THEN
UPDATE SET TARGET.Dollars = SOURCE.Dollars
WHEN NOT MATCHED BY TARGET THEN
INSERT (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Dollars)
VALUES (SOURCE.DepartmentID, SOURCE.AccountID, SOURCE.FiscalYearID, SOURCE.FiscalMonthID, @TimeClassID, SOURCE.Dollars);
END
GO
---------------------------------------------
-- fw.procCopyFactPayrollHoursToStatisticsMonthly
CREATE PROCEDURE [fw].[procCopyFactPayrollHoursToStatisticsMonthly]
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1
** 2 2019-02-15 OV D-07848 In Management Reporting, salaries and wages metrics for fixed departments are flexing
** 3 2019-02-19 KF D-08138 MR Flexing: Flex GL values should be 0 for mapped accounts if there is no Payroll data
** 4 2019-03-19 OV D-08253 - used temp table for @DepartmentAccountVariabilityOverrides
** 5 2019-03-26 OV D-08253 - optimize proc
*************************************************************/
(
@FiscalYearID int = 0,
@PriorYearsCount int = 0,
@DepartmentAccountVariabilityOverrides [ob].[DepartmentAccountVariabilityOverride] READONLY
)
AS
BEGIN
DECLARE @TimeClassID TINYINT = 4 --Flex
DECLARE @UnitTypeID TINYINT = 51 --Hours
DECLARE @StartFiscalYear INT = @FiscalYearID - @PriorYearsCount
DECLARE @EndFiscalYear INT = @FiscalYearID
IF @FiscalYearID = 0
BEGIN
SELECT @StartFiscalYear = MIN(FiscalYearID) FROM (
SELECT MIN(FiscalYearID) AS FiscalYearID FROM fw.FactPayrollSampledMonthly
UNION ALL
SELECT MIN(FiscalYearID) AS FiscalYearID FROM fw.FactGLSampled) S
SELECT @EndFiscalYear = MAX(FiscalYearID) FROM (
SELECT MAX(FiscalYearID) AS FiscalYearID FROM fw.FactPayrollSampledMonthly
UNION ALL
SELECT MAX(FiscalYearID) AS FiscalYearID FROM fw.FactGLSampled) S
END
DECLARE @MappingMode INT
SELECT TOP 1 @MappingMode = CASE [PropertyXML].value('(/Properties//PayRollToGLLinkHoursConfiguration/node())[1]', 'nvarchar(max)')
WHEN 'EachJobCode' THEN 1
WHEN 'EachPayCodeGroup' THEN 2
ELSE 0 END -- BothUnique or BothOverride
FROM SystemCenterStep WHERE GlobalID = 'PayrolltoGLLinkSelection'
IF OBJECT_ID('tempdb..#department') IS NOT NULL DROP TABLE #department
IF OBJECT_ID('tempdb..#tempCrosswalk') IS NOT NULL DROP TABLE #tempCrosswalk
IF OBJECT_ID('tempdb..#DepAcc_P_Stat') IS NOT NULL DROP TABLE #DepAcc_P_Stat
IF OBJECT_ID('tempdb..#Source') IS NOT NULL drop table #Source
IF OBJECT_ID('tempdb..#Stat_1') IS NOT NULL drop table #Stat_1
IF OBJECT_ID('tempdb..#Stat_2 ') IS NOT NULL drop table #Stat_2
IF OBJECT_ID('tempdb..#Payroll_JC_PCG') IS NOT NULL drop table #Payroll_JC_PCG
IF OBJECT_ID('tempdb..#payroll') IS NOT NULL drop table #payroll
IF OBJECT_ID('tempdb..#DepartmentAccountVariabilityOverride') IS NOT NULL DROP TABLE #DepartmentAccountVariabilityOverride
CREATE TABLE #DepartmentAccountVariabilityOverride (AccountID int, DepartmentID int, Variability decimal(19,8))
INSERT INTO #DepartmentAccountVariabilityOverride (AccountID, DepartmentID, Variability)
select AccountID, DepartmentID, Variability FROM @DepartmentAccountVariabilityOverrides
----
SELECT departmentID,AccountID
into #DepAcc_P_Stat
FROM (
select departmentID, AccountId
from fw.FactStatisticSampledMonthly
union
select DepartmentID, accountID
from fw.FactPayrollSampledMonthly
cross join clientob.FactPayrollToAccountCrosswalk c
) t
-----
select d.DepartmentID, DepAcc_P_Stat.AccountID, d.isvariable
into #department
FROM #DepAcc_P_Stat DepAcc_P_Stat
inner join fw.DimDepartment d on DepAcc_P_Stat.departmentID = d.departmentID
where d.IsMRPlan = 1
-----
SELECT aa.AccountID, UnitTypeID, aa.Variability, FY.FiscalYearID, FM.FiscalMonthID,
CASE WHEN @MappingMode IN(0,1) then cc.JobCodeId else -10001 END AS JobCodeID,
CASE WHEN @MappingMode IN(0,2) then CC.payCodeGroupID else -10001 END AS PayCodeGroupID
into #tempCrosswalk
from clientob.FactPayrollToAccountCrosswalk cc
inner join fw.DimAccount aa on cc.AccountID = aa.AccountID
CROSS JOIN fw.DimFiscalYear FY
CROSS JOIN fw.DimFiscalMonth FM
where CC.UnitTypeID = @UnitTypeID and FY.FiscalYearID BETWEEN @StartFiscalYear AND @EndFiscalYear and FM.FiscalMonthID != 0
-----
select SUM(p.Hours) as Hours, p.FiscalYearID, p.FiscalMonthID,
CASE WHEN @MappingMode IN(0,1) then p.JobCodeId else -10001 END AS JobCodeID,
CASE WHEN @MappingMode IN(0,2) then p.payCodeGroupID else -10001 END AS PayCodeGroupID,
p.DepartmentID
INTO #Payroll_JC_PCG
FROM fw.FactPayrollSampledMonthly P
WHERE P.TimeClassID = @TimeClassID
AND P.IsDeleted = 0
GROUP BY FiscalYearID,FiscalMonthID,JobCodeID,PayCodeGroupID, DepartmentID
-----
SELECT Stat.FiscalYearID, Stat.FiscalMonthId, Stat.AccountID, Stat.DepartmentID, Stat.Amount as Hours
INTO #Stat_1
FROM fw.FactStatisticSampledMonthly Stat
WHERE Stat.TimeclassID = 20 AND Stat.IsDeleted = 0
-----
select Stat.DepartmentID, Cw.AccountID, cw.FiscalYearID, cw.FiscalMonthID, Hours, CW.Variability * D.IsVariable as Koef_var
INTO #Stat_2
from (SELECT distinct AccountId,FiscalYearID,FiscalMonthID,Variability FROM #tempCrosswalk) cw
INNER JOIN #Stat_1 Stat on
Stat.FiscalYearID = CW.FiscalYearID
AND Stat.FiscalMonthID = CW.FiscalMonthID
AND Stat.AccountID = CW.AccountID
INNER JOIN fw.DimDepartment d on Stat.departmentID = d.departmentID
-----
SELECT DD.DepartmentID, X.AccountID, X.FiscalYearID, X.FiscalMonthID, X.Hours, X.Variability * DD.IsVariable as Koef_var
INTO #payroll
FROM (
select Cw.AccountID, cw.FiscalYearID, cw.FiscalMonthID, CW.Variability, SUM(ROUND(P.Hours,6)) as Hours, P.DepartmentID
from (SELECT distinct AccountId,JobCodeID,PayCodeGroupID,FiscalYearID,FiscalMonthID,Variability FROM #tempCrosswalk) cw
inner join #Payroll_JC_PCG P ON
P.FiscalYearID = CW.FiscalYearID
AND P.FiscalMonthID = CW.FiscalMonthID
AND CW.JobCodeID = P.JobCodeID
AND CW.PayCodeGroupID = P.PayCodeGroupID
GROUP BY Cw.AccountID, cw.FiscalYearID, cw.FiscalMonthID, CW.Variability, P.DepartmentID
) X
INNER JOIN #department dd on DD.AccountID = X.AccountID and dd.DepartmentID = X.DepartmentID
-----
SELECT ISNULL(Stat.DepartmentID,p.DepartmentID) as DepartmentID,
ISNULL(Stat.AccountId,p.AccountId) as AccountId,
ISNULL(Stat.FiscalYearId,p.FiscalYearId) as FiscalYearId,
ISNULL(Stat.FiscalMonthId,p.FiscalMonthId) as FiscalMonthId,
ISNULL(ISNULL(DAV.Variability,p.Koef_var) * P.Hours, 0) + isnull((1-ISNULL(DAV.Variability,Stat.Koef_var)) *Stat.Hours,0) as Hours
INTO #Source
FROM #Stat_2 Stat
FULL JOIN #payroll p on Stat.AccountId = p.AccountId and Stat.DepartmentID = p.DepartmentID and Stat.FiscalYearId = p.FiscalYearId and Stat.FiscalMonthId = p.FiscalMonthId
LEFT JOIN #DepartmentAccountVariabilityOverride DAV ON
ISNULL(Stat.DepartmentID,p.DepartmentID) = DAV.DepartmentID
AND ISNULL(Stat.AccountID,p.AccountId) = DAV.AccountID
----
MERGE fw.FactStatisticSampledMonthly AS TARGET
USING #Source AS SOURCE ON
TARGET.DepartmentID = SOURCE.DepartmentID
AND TARGET.AccountID = SOURCE.AccountID
AND TARGET.FiscalYearID = SOURCE.FiscalYearID
AND TARGET.FiscalMonthID = SOURCE.FiscalMonthID
AND TARGET.TimeClassID = @TimeClassID
AND TARGET.IsDeleted = 0
WHEN MATCHED AND TARGET.Amount != SOURCE.Hours THEN
UPDATE SET TARGET.Amount = SOURCE.Hours
WHEN NOT MATCHED BY TARGET THEN
INSERT (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount)
VALUES (SOURCE.DepartmentID, SOURCE.AccountID, SOURCE.FiscalYearID, SOURCE.FiscalMonthID, @TimeClassID, SOURCE.Hours);
END
GO
---------------------------------------------
-- fw.procCopyFactStaffingBudgetToImport
CREATE PROCEDURE fw.procCopyFactStaffingBudgetToImport (@HistoryItemGUID uniqueidentifier)
AS
BEGIN
/************************************************************
** Author: ipetriv
** Create Date: 2018-01-15
** Description: Add procedure to calc EfficiencyFactor
** Last Modified: 2017-01-15
** GM Release: 2018.2
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-01-15 IP B-18301 Created
*************************************************************/
DECLARE @FiscalYearId INT = (
SELECT setting
FROM dbsetting
WHERE NAME = 'Current_GL_YearID'
)
IF OBJECT_ID('int.FactStaffingHistory', 'U') IS NOT NULL
DROP TABLE INT.FactStaffingHistory;
SELECT RowID,
DepartmentID,
DepartmentCode,
JobCodeID,
JobCode,
EmployeeID,
Employeecode,
PayCodeID,
PayCode,
FiscalYearID,
FiscalYearCode,
TimeClassID,
TimeClassCode,
UnitTypeID,
UnitType,
FiscalMonthID,
FiscalMonthCode,
Value,
IsDeleted,
HistoryItemGUID,
Version,
TransactionID,
getdate() AS BCP_DTTime
INTO INT.FactStaffingHistory
FROM INT.FactStaffing
WHERE FiscalYearID = @FiscalYearId
AND TimeClassID = 2
CREATE UNIQUE CLUSTERED INDEX IX_FactStaffingHistory ON [int].[FactStaffingHistory] (
[FiscalMonthID] ASC,
[IsDeleted] ASC,
[FiscalYearID] ASC,
[TimeClassID] ASC,
[DepartmentID] ASC,
[JobCodeID] ASC,
[RowID] ASC
) ON [PRIMARY]
WHILE 1 = 1
BEGIN
DELETE TOP (10000) iST
FROM [int].FactStaffing iST
INNER JOIN INT.FactStaffingHistory iSTH ON iST.[FiscalMonthID] = iSTH.[FiscalMonthID]
AND iST.[IsDeleted] = iSTH.[IsDeleted]
AND iST.[FiscalYearID] = iSTH.[FiscalYearID]
AND iST.[TimeClassID] = iSTH.[TimeClassID]
AND iST.[DepartmentID] = iSTH.[DepartmentID]
AND iST.[JobCodeID] = iSTH.[JobCodeID]
AND iST.[RowID] = iSTH.[RowID]
IF @@ROWCOUNT < 10000
BREAK;
END
INSERT INTO [int].FactStaffing (
DepartmentID,
DepartmentCode,
JobCodeID,
JobCode,
EmployeeID,
Employeecode,
PayCodeID,
PayCode,
FiscalYearID,
FiscalYearCode,
TimeClassID,
TimeClassCode,
UnitTypeID,
UnitType,
FiscalMonthID,
FiscalMonthCode,
Value,
IsDeleted,
HistoryItemGUID,
TransactionID
)
SELECT PR.DepartmentID,
dd.DepartmentCode,
pr.JobCodeID,
djc.JobCode,
pr.EmployeeID,
de.Code AS Employeecode,
pr.PayCodeID,
dpc.PayCode,
pr.FiscalYearID,
FiscalYearID AS FiscalYearCode,
pr.TimeClassID,
dtm.TimeClassCode,
UnitTypeID,
UnitType,
pr.FiscalMonthID,
dfm.FiscalMonthCode,
sum(Value),
0 AS IsDeleted,
@HistoryItemGUID AS HistoryItemGUID,
0 AS TransactionID
FROM (
SELECT DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
FiscalYearID,
TimeClassID,
CASE
WHEN UnitType = 'Dollars'
THEN 34
WHEN UnitType = 'Hours'
THEN 51
ELSE 0
END AS UnitTypeID,
UnitType,
FiscalMonthID,
Value
FROM [fw].[FactPayrollSampledMonthlyDetailed]
UNPIVOT(Value FOR UnitType IN (
Dollars,
Hours
)) AS unpvt
WHERE Value <> 0
AND TimeClassID = 2 -- Data transferred will be the sampled budgeted data
AND FiscalYearID = @FiscalYearID
) PR
INNER JOIN fw.DimTimeClass dtm ON dtm.TimeClassID = PR.TimeClassID
INNER JOIN fw.DimDepartment dd ON dd.DepartmentID = PR.DepartmentID
INNER JOIN fw.DimJobCode djc ON djc.JobCodeID = PR.JobCodeID
INNER JOIN fw.DimPayCode dpc ON dpc.PayCodeID = PR.PayCodeID
INNER JOIN fw.DimEmployee de ON de.EmployeeID = PR.EmployeeID
INNER JOIN fw.DimFiscalMonth dfm ON dfm.FiscalMonthID = PR.FiscalMonthID
GROUP BY PR.DepartmentID,
dd.DepartmentCode,
pr.JobCodeID,
djc.JobCode,
pr.EmployeeID,
de.code,
pr.PayCodeID,
dpc.PayCode,
pr.FiscalYearID,
pr.TimeClassID,
dtm.TimeClassCode,
UnitTypeID,
UnitType,
pr.FiscalMonthID,
dfm.FiscalMonthCode
END
GO
---------------------------------------------
-- fw.procCopyFactStatisticBudgetToImport
/************************************************************
** Author: ipetriv
** Create Date: 2018-01-15
** Description: Add procedure to calc EfficiencyFactor
** Last Modified: 2017-01-15
** GM Release: 2018.2
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-01-15 IP B-18301 Created
** 2 2018-08-23 OV D-07498 Removed inversion logic
*************************************************************/
CREATE PROCEDURE [fw].[procCopyFactStatisticBudgetToImport] (@HistoryItemGUID uniqueidentifier) as
BEGIN
DECLARE @FiscalYearId INT = (
SELECT setting
FROM dbsetting
WHERE NAME = 'Current_GL_YearID'
)
IF OBJECT_ID('int.FactStatisticHistory', 'U') IS NOT NULL
DROP TABLE INT.FactStatisticHistory;
SELECT RowID,
[DepartmentID],
[DepartmentCode],
[AccountID],
[AccountCode],
[FiscalYearID],
[FiscalYearCode],
[TimeClassID],
[TimeClassCode],
[FiscalMonthID],
[FiscalMonthCode],
[Value],
[IsDeleted],
[HistoryItemGUID],
[Version],
[TransactionID],
getdate() AS BCP_DTTime
INTO INT.FactStatisticHistory
FROM INT.FactStatistic
WHERE FiscalYearID = @FiscalYearId
AND TimeClassID = 2
CREATE UNIQUE CLUSTERED INDEX IX_FactStatisticHistory ON [int].[FactStatisticHistory] (
[FiscalMonthID] ASC,
[IsDeleted] ASC,
[FiscalYearID] ASC,
[TimeClassID] ASC,
[DepartmentID] ASC,
[AccountID] ASC,
[RowID] ASC
) ON [PRIMARY]
WHILE 1 = 1
BEGIN
DELETE TOP (10000) iST
FROM [int].FactStatistic iST
INNER JOIN INT.FactStatisticHistory iSTH ON iST.[FiscalMonthID] = iSTH.[FiscalMonthID]
AND iST.[IsDeleted] = iSTH.[IsDeleted]
AND iST.[FiscalYearID] = iSTH.[FiscalYearID]
AND iST.[TimeClassID] = iSTH.[TimeClassID]
AND iST.[DepartmentID] = iSTH.[DepartmentID]
AND iST.[AccountID] = iSTH.[AccountID]
AND iST.[RowID] = iSTH.[RowID]
IF @@ROWCOUNT < 10000
BREAK;
END
INSERT INTO [int].FactStatistic (
DepartmentID,
DepartmentCode,
AccountID,
AccountCode,
FiscalYearID,
FiscalYearCode,
TimeClassID,
TimeClassCode,
FiscalMonthID,
FiscalMonthCode,
Value,
IsDeleted,
HistoryItemGUID,
TransactionID
)
SELECT ST.DepartmentID,
dd.DepartmentCode,
ST.AccountID,
da.AccountCode,
ST.FiscalYearID,
ST.FiscalYearID AS FiscalYearCode,
ST.TimeClassID,
dtm.TimeClassCode,
ST.FiscalMonthID,
dfm.FiscalMonthCode,
sum(ST.Amount) AS Value,
0 IsDeleted,
@HistoryItemGUID AS HistoryItemGUID,
0 AS TransactionID
FROM fw.FactStatisticSampledMonthly ST
INNER JOIN fw.DimAccount A ON A.AccountID = ST.AccountID
INNER JOIN fw.DimTimeClass dtm ON dtm.TimeClassID = ST.TimeClassID
INNER JOIN fw.DimDepartment dd ON dd.DepartmentID = ST.DepartmentID
INNER JOIN fw.DimAccount da ON da.AccountID = ST.AccountID
INNER JOIN fw.DimFiscalMonth dfm ON dfm.FiscalMonthID = ST.FiscalMonthID
WHERE ST.TimeClassID = 2 -- Data transferred will be the sampled budgeted data
AND FiscalYearID = @FiscalYearId
AND Amount <> 0.0
GROUP BY ST.DepartmentID,
dd.DepartmentCode,
ST.AccountID,
da.AccountCode,
ST.FiscalYearID,
ST.TimeClassID,
dtm.TimeClassCode,
ST.FiscalMonthID,
dfm.FiscalMonthCode
END
GO
---------------------------------------------
-- fw.procCopySystemGeneratedStatistics
CREATE PROC fw.procCopySystemGeneratedStatistics
@departmentIds nvarchar(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON
DROP TABLE IF EXISTS #departments
SELECT val AS DepartmentId
INTO #departments
FROM ConvertCSValuesToTable(@departmentIds, ',')
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
IF (@departmentIds IS NULL)
BEGIN
TRUNCATE TABLE fw.FactSystemGeneratedStatistics
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM fw.FactChargeBasedStatistics
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM fw.FactChargeBasedStatistics
WHERE RowId >= @startRowId
ORDER BY RowID) as d
INSERT INTO fw.FactSystemGeneratedStatistics (AccountID, DepartmentID, DateID, Value)
SELECT s.AccountID, s.DepartmentID, s.DateID, s.Value
FROM fw.FactChargeBasedStatistics s
WHERE s.RowId >= @startRowId
AND s.RowId <= @endRowId
SELECT @startRowId = MIN(d.RowId)
FROM fw.FactChargeBasedStatistics d
WHERE RowId > @endRowId
END
END
ELSE
BEGIN
DELETE
FROM fw.FactSystemGeneratedStatistics
WHERE DepartmentID IN (SELECT DepartmentId FROM #departments)
INSERT INTO fw.FactSystemGeneratedStatistics (AccountID, DepartmentID, DateID, Value)
SELECT s.AccountID, s.DepartmentID, s.DateID, s.Value
FROM fw.FactChargeBasedStatistics s
JOIN #departments d
ON s.DepartmentID = d.DepartmentID
END
END
GO
---------------------------------------------
-- fw.procCopySystemGeneratedStatisticsMonthly
CREATE PROC fw.procCopySystemGeneratedStatisticsMonthly
@fiscalYearId smallint = 0
AS
BEGIN
SET NOCOUNT ON
IF (@fiscalYearID = 0)
BEGIN
TRUNCATE TABLE fw.FactSystemGeneratedStatisticsMonthly
INSERT INTO fw.FactSystemGeneratedStatisticsMonthly (AccountID, DepartmentID, FiscalYearID, FiscalMonthID, Value)
SELECT s.AccountID, s.DepartmentID, s.FiscalYearID, s.FiscalMonthID, s.Value
FROM fw.FactChargeBasedStatisticsMonthly s
END
ELSE
BEGIN
WHILE EXISTS(SELECT NULL FROM fw.FactSystemGeneratedStatisticsMonthly (nolock) WHERE FiscalYearID = @fiscalYearID)
BEGIN
DELETE TOP (1000000) fw.FactSystemGeneratedStatisticsMonthly
WHERE FiscalYearID = @fiscalYearID
END
INSERT INTO fw.FactSystemGeneratedStatisticsMonthly (AccountID, DepartmentID, FiscalYearID, FiscalMonthID, Value)
SELECT s.AccountID, s.DepartmentID, s.FiscalYearID, s.FiscalMonthID, s.Value
FROM fw.FactChargeBasedStatisticsMonthly s
WHERE s.FiscalYearID = @fiscalYearId
END
END
GO
---------------------------------------------
-- fw.procCreateCapandOBMissingRoles
create proc fw.procCreateCapandOBMissingRoles as
--Check for Capital Management Permission Set
if (select COUNT(*) from S3PermissionSet where Name='Capital Management')=1
begin
--Check for access - Read allow in Capital Management Permission Set
if(select COUNT(*) from S3Permission where PermissionSetID=(select PermissionSetID from S3PermissionSet where Name='Capital Management') and RoleID = (Select RoleID from UserRole where Name='Access - Read Allow'))=0
begin
insert into S3Permission (PermissionSetID,RoleID,Weight,ReadValue)
select
(select PermissionSetID from S3PermissionSet where Name='Capital Management'),
RoleID,
0 as weight,
1 as ReadValue
from
UserRole
where
Name='Access - Read Allow'
end
--Check for access - Write allow in Capital Management Permission Set
if(select COUNT(*) from S3Permission where PermissionSetID=(select PermissionSetID from S3PermissionSet where Name='Capital Management') and RoleID = (Select RoleID from UserRole where Name='Access - Write Allow'))=0
begin
insert into S3Permission (PermissionSetID,RoleID,Weight,ReadValue,WriteValue)
select
(select PermissionSetID from S3PermissionSet where Name='Capital Management'),
RoleID,
0 as weight,
1 as ReadValue,
1 as WriteValue
from
UserRole
where
Name='Access - Write Allow'
end
end
--Check for Operating Budgeting Permission Set
if (select COUNT(*) from S3PermissionSet where Name='Operating Budgeting')=1
begin
--Check for access - Read allow in Capital Management Permission Set
if(select COUNT(*) from S3Permission where PermissionSetID=(select PermissionSetID from S3PermissionSet where Name='Operating Budgeting') and RoleID = (Select RoleID from UserRole where Name='Access - Read Allow'))=0
begin
insert into S3Permission (PermissionSetID,RoleID,Weight,ReadValue)
select
(select PermissionSetID from S3PermissionSet where Name='Operating Budgeting'),
RoleID,
0 as weight,
1 as ReadValue
from
UserRole
where
Name='Access - Read Allow'
end
--Check for access - Write allow in Capital Management Permission Set
if(select COUNT(*) from S3Permission where PermissionSetID=(select PermissionSetID from S3PermissionSet where Name='Operating Budgeting') and RoleID = (Select RoleID from UserRole where Name='Access - Write Allow'))=0
begin
insert into S3Permission (PermissionSetID,RoleID,Weight,ReadValue,WriteValue)
select
(select PermissionSetID from S3PermissionSet where Name='Operating Budgeting'),
RoleID,
0 as weight,
1 as ReadValue,
1 as WriteValue
from
UserRole
where
Name='Access - Write Allow'
end
end
GO
---------------------------------------------
-- fw.procCreateUserProfile
Create proc fw.procCreateUserProfile
@username nvarchar(64)
,@NameLast nvarchar(64)
,@NameFirst nvarchar(64)
,@EmailAddress nvarchar(450)
as
insert into UserProfile(UserName,NameFirst,NameLast,EmailAddress)
values(@username,@NameFirst,@NameLast,@EmailAddress)
GO
---------------------------------------------
-- fw.procDeleteDimensionData
/*****************************************************************
****** Author: unknown
****** Create Date: Unknown
****** Description: Deletes all FW dimensions that are specified by the client, used only for GM releases - NEVER RUN ON CLIENT DATABASES
****** Last Modified: 2022-03-22
****** GM Release: 2022.22
****** ***********************************************************
****** Change History
****** ***********************************************************
****** CID Date Author WI Description
****** 1 2013-10-02 akk 64597 Adding new dimensions
****** 2 2014-02-20 akk D-01398 Adding delete from scorefillin
****** 3 2014-06-13 akk D-01874 Adding payor dimension
****** 4 2016-03-22 akk Deleting additional service lines
****** 5 2017-09-07 gjf D-06351 Clean up security
****** 6 2018-06-19 jbm Changing DimAccount Delete
****** 7 2020-05-13 yxr B-26923 Adding DayType dimension
****** 8 2022-03-22 ljc JAZZ-37520 Adding post delete insert of Standard Codes into DayType dimension and definition reformat
*****************************************************************/
CREATE
PROCEDURE [fw].[procDeleteDimensionData]
AS
BEGIN
--------- SET NOCOUNT ON added to prevent extra result sets from
--------- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @nextid int;
SELECT @nextid = 0;
WHILE EXISTS ( SELECT TOP 1 1 FROM [fw].[DimAccount] WHERE [AccountID] != 0 )
BEGIN
DELETE TOP (1000)
FROM [fw].[DimAccount]
WHERE [AccountID] != 0;
END;
DBCC CHECKIDENT ('[fw].[DimAccount]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartment]
WHERE [DepartmentID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartment]', RESEED, @nextid);
DELETE
FROM [fw].[DimEmployee]
WHERE [EmployeeID] != 0;
DBCC CHECKIDENT ('[fw].[DimEmployee]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartmentRollup6]
WHERE [DepartmentRollup6ID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartmentRollup6]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartmentRollup5]
WHERE [DepartmentRollup5ID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartmentRollup5]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartmentRollup4]
WHERE [DepartmentRollup4ID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartmentRollup4]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartmentRollup3]
WHERE [DepartmentRollup3ID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartmentRollup3]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartmentRollup2]
WHERE [DepartmentRollup2ID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartmentRollup2]', RESEED, @nextid);
DELETE
FROM [fw].[DimDepartmentRollup1]
WHERE [DepartmentRollup1ID] != 0;
DBCC CHECKIDENT ('[fw].[DimDepartmentRollup1]', RESEED, @nextid);
DELETE
FROM [fw].[DimEntity]
WHERE [EntityID] != 0;
DBCC CHECKIDENT ('[fw].[DimEntity]', RESEED, @nextid);
DELETE
FROM [fw].[DimSystem]
WHERE [SystemID] != 0;
DBCC CHECKIDENT ('[fw].[DimSystem]', RESEED, @nextid);
DELETE
FROM [fw].[DimJobCode]
WHERE [JobCodeID] != 0;
DBCC CHECKIDENT ('[fw].[DimJobCode]', RESEED, @nextid);
DELETE
FROM [fw].[DimPayCode]
WHERE [PayCodeID] != 0;
DBCC CHECKIDENT ('[fw].[DimPayCode]', RESEED, @nextid);
DELETE
FROM [fw].[DimChargeCode]
WHERE [ChargeCodeID] != 0;
DBCC CHECKIDENT ('[fw].[DimChargeCode]', RESEED, @nextid);
DELETE
FROM [fw].[DimPatientType]
WHERE [PatientTypeID] > 4;
DBCC CHECKIDENT ('[fw].[DimPatientType]', RESEED, 4);
--------- BEGIN CID 7
DELETE
FROM [fw].[DimDayType]
WHERE [DayTypeID] > 1;
DBCC CHECKIDENT ('[fw].[DimDayType]', RESEED, 1);
--------- END CID 7
--------- BEGIN CID 8
INSERT INTO [fw].[DimDayType] ([DayTypeCode], [PrecedentOrder])
SELECT --*
DISTINCT [Rollup],
CASE
WHEN [Rollup] = 'Observation' THEN 50
ELSE DENSE_RANK() OVER (ORDER BY [Rollup] ASC)
END AS [PrecedentOrder]
FROM [dss].[DimUBRevenueCode]
WHERE [CostDriver] = 'LOS';
--------- END CID 8
--------- BEGIN CID 1
DELETE
FROM [fw].[DimModelingServiceLine]
WHERE [ModelingServiceLineID] != 0;
DBCC CHECKIDENT ('[fw].[DimModelingServiceLine]', RESEED, @nextid);
DELETE
FROM [fw].[DimPatientReimbursementGroup]
WHERE [PatientReimbursementGroupID] != 0;
DBCC CHECKIDENT ('[fw].[DimPatientReimbursementGroup]', RESEED, @nextid);
DELETE
FROM [fw].[DimServiceLine]
WHERE [ServiceLineID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLine]', RESEED, @nextid);
DELETE
FROM [fw].[DimServiceLineRollup]
WHERE [ServiceLineRollupID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLineRollup]', RESEED, @nextid);
--------- BEGIN CID 4
DELETE
FROM [dbo].[RuleSet]
WHERE [Category] IN
( SELECT [RuleSetCategory]
FROM [dss].[ServiceLineDefinition]
WHERE [DimensionGUID] != '074b4b22-9824-40f5-aa2a-a7b32631e8a2' );
DELETE
FROM [fw].[DimServiceLine2]
WHERE [ServiceLine2ID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLine2]', RESEED, @nextid);
DELETE
FROM [fw].[DimServiceLine3]
WHERE [ServiceLine3ID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLine3]', RESEED, @nextid);
DELETE
FROM [fw].[DimServiceLine4]
WHERE [ServiceLine4ID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLine4]', RESEED, @nextid);
DELETE
FROM [fw].[DimServiceLine5]
WHERE [ServiceLine5ID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLine5]', RESEED, @nextid);
DELETE
FROM [fw].[DimServiceLine6]
WHERE [ServiceLine6ID] != 0;
DBCC CHECKIDENT ('[fw].[DimServiceLine6]', RESEED, @nextid);
--------- END CID 4
DELETE
FROM [fw].[DimProvider]
WHERE [ProviderID] != 0;
DBCC CHECKIDENT ('[fw].[DimProvider]', RESEED, @nextid);
--------- END CID 1
--------- BEGIN CID 3
DELETE
FROM [fw].[DimPayor]
WHERE [PayorID] != 0;
DBCC CHECKIDENT ('[fw].[DimPayor]', RESEED, @nextid);
--------- END CID 3
--------- BEGIN CID 2
TRUNCATE TABLE [dbo].[ScoreFillin];
EXEC [dbo].[procScoreFillinTableRebuildAll];
EXEC [dbo].[procScoreFillinTableRefreshAll];
--------- END CID 2
EXEC [fw].[procInsertDimensionDefaults];
DELETE [l]
FROM [dbo].[S3Loot] AS [l]
WHERE [l].[LootID] LIKE 'DEPT|%'
AND NOT EXISTS
( SELECT 1
FROM [fw].[DimDepartment] AS [d]
WHERE [l].[LootID] = 'DEPT|' + CAST([d].[DepartmentID] AS nvarchar(16))
);
DELETE [lg]
FROM [dbo].[S3Loot] AS [lg]
WHERE [lg].[LootID] LIKE 'DEPT|%'
AND NOT EXISTS
( SELECT 1
FROM [fw].[DimDepartment] AS [d]
WHERE [lg].[LootID] = 'DEPT|' + CAST([d].[DepartmentID] AS nvarchar(16))
);
DELETE [l]
FROM [dbo].[S3Loot] AS [l]
WHERE [l].[LootID] LIKE 'MRDEPT|%'
AND NOT EXISTS
( SELECT 1
FROM [fw].[DimDepartment] AS [d]
WHERE [l].[LootID] = 'MRDEPT|' + CAST([d].[DepartmentID] AS nvarchar(16))
);
DELETE [lg]
FROM [dbo].[S3Loot] AS [lg]
WHERE [lg].[LootID] LIKE 'MRDEPT|%'
AND NOT EXISTS
( SELECT 1
FROM [fw].[DimDepartment] AS [d]
WHERE [lg].[LootID] = 'MRDEPT|' + CAST([d].[DepartmentID] AS nvarchar(16))
);
END;
RETURN;
GO
---------------------------------------------
-- fw.procDeleteFactData
CREATE PROCEDURE [fw].[procDeleteFactData]
AS
/************************************************************
** Author: akowalski
** Create Date: 2013-11-07
** Description: Deletes FW and CLIENT schema tables that are populated by the client, used only for GM releases - NEVER RUN ON CLIENT DATABASES
** Last Modified: 2013-11-07
** GM Release: 2013-11-19
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2015-06-18 akk Converting proc to cursor
**
*************************************************************/
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @SCHEMA nvarchar(256)
DECLARE @FactTableName nvarchar(256)
DECLARE @SQL nvarchar(1024)
DECLARE @SQL2 nvarchar(1024)
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t
where (t.schema_id in(select schema_id from sys.schemas where name in('fw', 'client')) and t.name like 'fact%' and t.name not like '%map'
and t.name<>'FactWorkingHoursPerMonth')
order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'truncate table ' + @SCHEMA + '.' + @FactTableName
set @SQL2='DBCC CHECKIDENT (''' + + @SCHEMA + '.' + @FactTableName + ''', RESEED, 1)'
--print @SQL
EXECUTE sp_executesql @SQL
if exists ( select 1 from sys.columns c
inner join sys.tables t on t.object_id=c.object_ID
inner join sys.schemas s on t.schema_id=s.schema_id
where t.name=@FactTableName and s.name=@SCHEMA and is_identity=1)
begin
EXECUTE sp_executesql @SQL2
end
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
END
RETURN
GO
---------------------------------------------
-- fw.procDepartmentChargeCodePrimaryStatisticMappingCache
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2023-03-20 HV JAZZ-52052 Create and fill in cache table for Primary Statistics data source for Daily and Pay Period
*************************************************************/
CREATE PROCEDURE fw.procDepartmentChargeCodePrimaryStatisticMappingCache
AS
IF OBJECT_ID('tempdb..#drivers') IS NOT NULL DROP TABLE #drivers
CREATE TABLE #drivers (OriginalDepartmentID INT NOT NULL, DriverDepartmentID INT NOT NULL, AccountID INT NULL, IsStaffing BIT NOT NULL)
INSERT INTO #drivers (OriginalDepartmentID, DriverDepartmentID, AccountID, IsStaffing)
SELECT C.DepartmentID AS OriginalDepartmentID, COALESCE(DC.DriverDepartmentID, C.DepartmentID) AS DriverDepartmentID, C.AccountID, C.Staffing AS IsStaffing
FROM client.FactDepartmentPrimaryStatisticConfiguration C
LEFT JOIN client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache DC ON DC.FactDepartmentPrimaryStatisticConfigurationID = C.RowID
WHERE C.IsDeleted = 0
TRUNCATE TABLE fw.DepartmentChargeCodePrimaryStatisticMappingCache
INSERT INTO fw.DepartmentChargeCodePrimaryStatisticMappingCache (DepartmentID, OriginalDepartmentID, FiscalYearID, AccountID, ChargeCodeID, PatientTypeRollupID, Weight, IsStaffing)
SELECT
D.DriverDepartmentID AS DepartmentID,
D.OriginalDepartmentID,
map.FiscalYearID,
map.AccountID,
map.ChargeCodeID,
map.PatientTypeRollupID,
map.Weight,
D.IsStaffing
FROM #drivers D
INNER JOIN fw.DepartmentChargeCodeStatisticMappingCache map ON map.DepartmentID = D.DriverDepartmentID AND map.AccountID = D.AccountID
IF OBJECT_ID('tempdb..#drivers') IS NOT NULL DROP TABLE #drivers
GO
---------------------------------------------
-- fw.procDepartmentChargeCodeStatisticMappingCacheRefresh
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2020-12-08 KF JAZZ-10947 My Performance | Supplies UOS Detail
*************************************************************/
CREATE PROCEDURE [fw].[procDepartmentChargeCodeStatisticMappingCacheRefresh]
AS
TRUNCATE TABLE fw.DepartmentChargeCodeStatisticMappingCache
INSERT INTO fw.DepartmentChargeCodeStatisticMappingCache (FiscalYearID, DepartmentID, ChargeCodeID, PatientTypeRollupID, AccountID, Weight)
SELECT FiscalYearID, DepartmentID, ChargeCodeID, PatientTypeRollupID, AccountID, Weight
FROM fw.viewDepartmentChargeCodeStatisticMapping
WHERE AccountID != 0 AND Weight != 0
GO
---------------------------------------------
-- fw.procDepartmentChargeCodeStatisticMappingSetDefault
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2016-09-14 GF Initial implementation
** 2 2018-05-08 KF B-19364 MRPR - Set Global Weights for Charge Codes - System Center Page
** 3 2018-02-28 OV D-06846 modify proc to not insert data for RollupID = 0
************************************************************
*/
CREATE proc [fw].[procDepartmentChargeCodeStatisticMappingSetDefault]
as
set nocount on
insert into fw.DepartmentChargeCodeStatisticMapping (FiscalYearID, DepartmentRollupLevelMemberID, ChargeCodeID, PatientTYpeRollupID, AccountID, Weight, IsReviewed, DepartmentRollupLevelMemberColumnName)
select distinct
pblid.FiscalYearID,
pblid.DepartmentID,
pblid.ChargeCodeID,
pt.PatientTypeRollupID,
0 as AccountID,
0 as Weight,
0 as IsReviewed,
'DepartmentID'
from
dss.FactPatientBillingLineItemDetail pblid with (readuncommitted)
inner join clientdss.FactPatientEncounterSummary es with (readuncommitted) on es.EncounterID = pblid.EncounterID
inner join [fw].[DimPatientType] PT with (readuncommitted) on es.PatientTypeID=PT.PatientTypeID
LEFT JOIN fw.DepartmentChargeCodeStatisticMapping ex on ex.FiscalYearID = pblid.FiscalYearID
and ex.DepartmentRollupLevelMemberID = pblid.DepartmentID
and ex.DepartmentRollupLevelMemberColumnName = 'DepartmentID'
and ex.ChargeCodeID = pblid.ChargeCodeID
and ex.PatientTypeRollupID = pt.PatientTypeRollupID
WHERE ex.FiscalYearID is null
and pt.PatientTypeRollupID != 0
GO
---------------------------------------------
-- fw.procDepartmentChargeCodeStatisticMappingStaffingCache
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2023-02-02 KF JAZZ-48413 Charge Based Statistics Modals Performance Improvement- Bug Fixing
*************************************************************/
CREATE PROCEDURE fw.procDepartmentChargeCodeStatisticMappingStaffingCache
AS
IF OBJECT_ID('tempdb..#drivers') IS NOT NULL DROP TABLE #drivers
CREATE TABLE #drivers (OriginalDepartmentID INT NOT NULL, DriverDepartmentID INT NOT NULL, AccountID INT NULL)
INSERT INTO #drivers (OriginalDepartmentID, DriverDepartmentID, AccountID)
SELECT C.DepartmentID AS OriginalDepartmentID, COALESCE(DC.DriverDepartmentID, C.DepartmentID) AS DriverDepartmentID, C.AccountID
FROM client.FactDepartmentPrimaryStatisticConfiguration C
LEFT JOIN client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache DC ON DC.FactDepartmentPrimaryStatisticConfigurationID = C.RowID
WHERE C.IsDeleted = 0 AND C.Staffing = 1
TRUNCATE TABLE fw.DepartmentChargeCodeStatisticMappingStaffingCache
INSERT INTO fw.DepartmentChargeCodeStatisticMappingStaffingCache (DepartmentID, OriginalDepartmentID, FiscalYearID, AccountID, ChargeCodeID, PatientTypeRollupID, Weight)
SELECT
D.DriverDepartmentID AS DepartmentID,
D.OriginalDepartmentID,
map.FiscalYearID,
map.AccountID,
map.ChargeCodeID,
map.PatientTypeRollupID,
map.Weight
FROM #drivers D
INNER JOIN fw.DepartmentChargeCodeStatisticMappingCache map ON map.DepartmentID = D.DriverDepartmentID AND map.AccountID = D.AccountID
IF OBJECT_ID('tempdb..#drivers') IS NOT NULL DROP TABLE #drivers
GO
---------------------------------------------
-- fw.procDepartmentPrimaryStatisticConfigurationDriverDepartmentCacheRefresh
create proc fw.procDepartmentPrimaryStatisticConfigurationDriverDepartmentCacheRefresh
as
if (not exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment)) begin
return
end
declare @sql nvarchar(max)
set @sql = '
truncate table [client].[FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache];
insert into [client].[FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache] (DriverDepartmentGUID, FactDepartmentPrimaryStatisticConfigurationID, DriverDepartmentID)
select
dd.DriverDepartmentGUID,
dd.FactDepartmentPrimaryStatisticConfigurationID,
sd.DepartmentID
from
client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd
inner join fw.DimDepartment sd on dd.Value = ''DEPT|KEY|af5b308b-7574-4769-b4e9-dcdeb617b1fc|'' + cast(sd.DepartmentID as nvarchar(8)) + ''|DEPTDepartmentID|'' + cast(sd.DepartmentID as nvarchar(8));'
if (exists(select 1 from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd where dd.Value not like 'DEPT|KEY|%')) begin
declare @driverGUID uniqueidentifier
declare @configID int
declare @hpath nvarchar(max)
declare @where nvarchar(max)
declare crsHPaths cursor fast_forward for
select
dd.DriverDepartmentGUID,
dd.FactDepartmentPrimaryStatisticConfigurationID,
dd.Value
from
client.FactDepartmentPrimaryStatisticConfigurationDriverDepartment dd
where
dd.Value not like 'DEPT|KEY|%'
open crsHPaths
fetch next from crsHPaths into @driverGUID, @configID, @hpath
while (@@FETCH_STATUS = 0) begin
exec dbo.procScoreHierarchyPathGetQuery @hpath, 1, @where OUTPUT
set @sql = @sql + '
insert into [client].[FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache] (DriverDepartmentGUID, FactDepartmentPrimaryStatisticConfigurationID, DriverDepartmentID)
select ''' + CAST(@driverGUID as nvarchar(36)) + ''', ' + cast(@configID as nvarchar(8)) + ', DepartmentID from fw.viewDimDepartment where ' + @where + ';'
fetch next from crsHPaths into @driverGUID, @configID, @hpath
end
close crsHPaths
deallocate crsHPaths
end
exec(@sql)
GO
---------------------------------------------
-- fw.procDimDateAssignFiscalYear
CREATE proc [fw].[procDimDateAssignFiscalYear]
as
/************************************************************
** Author: Unknown
** Create Date: Unknown
** Description: Assigns Fiscal Year to the Date Dimension
** Last Modified: 2015-11-25
** GM Release: Unknown
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2015-11-25 JG Changing join to join on ID instead of Code
** 2 2016-10-17 MH D-04891 Updated FiscalQuarter
*************************************************************/
--Disable triggers on fw.DimDate or else this will be very slow
begin
declare @yemonth int = (select dbo.GetDBSetting('GENERAL_FISCALYEARENDMONTH'))
print @yemonth
update fw.dimdate
set FiscalYear =
CASE
WHEN calendarmonth <= @yemonth THEN calendaryear
else cast(calendaryear as int) + 1
END
from fw.DimDate
end
update d
set d.FiscalMonth = fm.SortOrder, d.FiscalQuarter = concat('Quarter ', fm.QuarterID)
from fw.DimDate d
inner join fw.DimFiscalMonth fm on d.CalendarMonth = fm.FiscalMonthID
where DateID <> 0
--exec [dbo].[procChangeDBSetting] @settingname = 'GENERAL_FISCALYEARENDMONTH', @value = 6
GO
---------------------------------------------
-- fw.procDimDatePopulate
--Author: ekretzer
--Branch: DSS
--Forward
create procedure fw.procDimDatePopulate
@StartDate datetime
as
begin
set nocount on
-- Determine if the year has 365 or 366 days
declare @numDays smallint = 365;
declare @p_leap_date SMALLDATETIME = CONVERT(VARCHAR(4), YEAR(@StartDate)) + '0228'
declare @p_check_day TINYINT = DATEPART(d, DATEADD(d, 1, @p_leap_date))
if (@p_check_day = 29)
set @numDays = 366;
declare @i int = 0;
declare @CurrentDate datetime;
while (@i < @numDays)
begin
set @CurrentDate = DATEADD(DAY, @i, @StartDate);
set @CurrentDate = DATEADD(DAY, DATEDIFF(Day, 0, @CurrentDate), 0); --round off to day
insert into fw.DimDate (
CalendarDateTime, CalendarYear, CalendarMonth, CalendarMonthName, DayNumberOfWeek, DayNameOfWeek, DayNumberOfMonth, DayNumberOfYear, WeekNumberOfYear, IsWeekDay, CalendarQuarter)
values (@CurrentDate, YEAR(@CurrentDate), MONTH(@CurrentDate), DATENAME(month, @CurrentDate ), DATEPART(weekday, @CurrentDate), DATENAME(weekday, @CurrentDate)
,DAY(@CurrentDate), DATEPART(dayofyear, @CurrentDate), DATEPART(week, @CurrentDate),
case when DATEPART(weekday, @CurrentDate) in (1,7) then 0 else 1 end,
DATENAME(quarter, @CurrentDate))
set @i = @i + 1;
end
print 'Added ' + cast(@numDays as varchar(3)) + ' days for ' + cast(year(@StartDate) as varchar(4))
end
RETURN
GO
---------------------------------------------
-- fw.procDimFiscalMonthUpdateDaysInMonth
CREATE PROCEDURE [fw].[procDimFiscalMonthUpdateDaysInMonth]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @currentYear int = year(getdate())
update fw.DimFiscalMonth
set DaysInMonth = dbo.GetDaysInMonth(cast(cast(@currentYear as varchar) + '-' + cast(fiscalmonthid as varchar) + '-1' as DateTime))
where FiscalMonthID <> 0
update fw.dimfiscalmonth
set
ytddaysinmonth =
coalesce(fw.[GetYTDDaysInMonth](fiscalmonthid), 0)
where FiscalMonthID <> 0
END
GO
---------------------------------------------
-- fw.procDimPayPeriodUpdateFiscalYear
CREATE PROCEDURE [fw].[procDimPayPeriodUpdateFiscalYear]
AS
update
fw.dimpayperiod
set
fiscalyearidstart = [dbo].[GetFiscalYearForDate](dateadd(day,(1)-[perioddays],[periodendcalendardate])),
fiscalyearidsecond = [dbo].[GetFiscalYearForDate]([periodendcalendardate])
GO
---------------------------------------------
-- fw.procDimTimePopulate
--Author: ekretzer
--Branch: DSS
--Forward
create procedure fw.procDimTimePopulate
as
begin
-- We assume that the 0 record is 0:00 & not 0 - Not Specified
truncate table fw.DimTime
DBCC CHECKIDENT ('fw.DimTime', reseed, 0)
declare @Hour tinyint = 0
declare @Minute tinyint = 0
while @Hour < 24
begin
set @Minute = 0
while @Minute < 60
begin
insert into fw.DimTime([Hour], [Minute], MemberGUID) values (@Hour, @Minute, newid())
set @Minute = @Minute + 1
end
set @Hour = @Hour + 1
end --@Hour
end
RETURN
GO
---------------------------------------------
-- fw.procEMFFillInCreateAutoProc
CREATE proc [fw].[procEMFFillInCreateAutoProc]
@procschema sysname,
@procobject sysname,
@phdimensionguid uniqueidentifier,
@plantypeguid uniqueidentifier,
@attributename nvarchar(100) = 'AutomaticPHSection'
--@planguid uniqueidentifier = '00000000-0000-0000-0000-000000000000'
as
/*
select
AutomaticPHSection
from
zzviewlist_masteraccount
*/
declare @phdimname nvarchar(100)
declare @fidimname nvarchar(100)
declare @phl1name nvarchar(100)
select
@phdimname = replace(ph.Name, ' ', ''),
@fidimname = replace(fi.Name, ' ', ''),
@phl1name = replace(phl1.Name, ' ','')
from
SecureList ph
inner join SecureList fi on ph.FillInDimensionGUID = fi.ListGUID
inner join SecureListLevel phl1 on ph.ListGUID = phl1.ListGUID and phl1.LevelIndex = 0
where
ph.ListGUID = @phdimensionguid
declare @sql nvarchar(max)
set @sql = '
if exists ( select 1 from viewSysProcedures where schemaname = ''' + @procschema + ''' and objectname = ''' + @procobject + ''' ) begin
drop proc [' + @procschema + '].[' + @procobject + ']
end
'
exec (@sql)
set @sql = '
create proc [' + @procschema + '].[' + @procobject + ']
@planguid uniqueidentifier = ''00000000-0000-0000-0000-000000000000''
as
declare @iguid uniqueidentifier
set @iguid = NEWID()
insert into EMFFillInSetManyStaging ( InstanceGUID, ModelGUID, PHDimensionGUID, ParentPHMemberGUID, FillInGUID, SortOrder)
select
@iguid,
p.PlanGUID as ModelGUID,
''' + cast(@phdimensionguid as varchar(36)) + ''' as PHDimensionGUID, --' + @phdimname + '
ph.'+ @phdimname +'GUID as ParentPHMemberGUID,
fi.'+ @fidimname +'GUID as FillInGuid,
ROW_NUMBER() over (partition by p.planguid order by fi.'+ @fidimname +' asc) as SortOrder
from
[zzviewlist_'+ @fidimname +'] fi
inner join zzviewlist_'+ @phdimname +' ph on fi.'+ @attributename +' = ph.'+ @phl1name +' and ph.'+ @phdimname +' is null
cross join xplan p
where
p.plantypeguid = ''' + CAST(@plantypeguid as varchar(36)) + '''
and (p.planguid = @planguid or @planguid = dbo.ZeroGUID())
exec procEMFFillInSetManyNoClear @iguid
--select * from EMFFillInSetManyStaging where InstanceGUID = @iguid
delete from EMFFillInSetManyStaging where InstanceGUID = @iguid
'
exec (@sql)
GO
---------------------------------------------
-- fw.procFactDailyMergeDuplicates
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-07-25 KF JAZZ-39738 Daily flexing - Payroll Hours and Dollars
*************************************************************/
CREATE proc [fw].[procFactDailyMergeDuplicates]
@factTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@priorYearsCount smallint = 0,
@timeClassID tinyint = 0,
@onePayPeriodOnlyDate datetime = null,
@isDebugOnly bit = 0,
@departmentIDs nvarchar(max) = null
with recompile
as
set nocount on
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
CREATE TABLE #DailyCalcPeriodsScope (PayPeriodID int primary key)
INSERT INTO #DailyCalcPeriodsScope (PayPeriodID)
SELECT PayPeriodID
FROM fw.DimPayPeriod
WHERE
(@onePayPeriodOnlyDate IS NOT NULL and @onePayPeriodOnlyDate BETWEEN PeriodStartCalendarDate and PeriodEndCalendarDate)
or
(@onePayPeriodOnlyDate IS NULL and ((FiscalYearIDSecond BETWEEN @fiscalYearID - @priorYearsCount AND @fiscalYearID) or @fiscalYearID = 0))
declare @sql nvarchar(max)
declare @from nvarchar(max) = '
FROM ' + @factTableName + ' data
INNER JOIN #DailyCalcPeriodsScope pp ON pp.PayPeriodID = data.PayPeriodID
INNER JOIN
(
SELECT fd.DepartmentID, fd.' + replace(@keyNameCSV, ',', ', fd.') + ', fd.PayPeriodID, fd.DateID, fd.TimeClassID
FROM ' + @factTableName + ' fd
GROUP BY fd.DepartmentID, fd.' + replace(@keyNameCSV, ',', ', fd.') + ', fd.PayPeriodID, fd.DateID, fd.TimeClassID
HAVING COUNT(*) > 1
) dr ON dr.DepartmentID = data.DepartmentID and ' + (select dbo.straggr('dr.' + csv.val + ' = data.' + csv.val, ' and ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + ' and dr.PayPeriodID = data.PayPeriodID and dr.DateID = data.DateID and dr.TimeClassID = data.TimeClassID
WHERE (1 = 1)' + (case when @timeClassID > 0 then ' and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end)
declare @fromForUpdate nvarchar(max) = REPLACE(@from, '#DailyCalcPeriodsScope', '#inputPayPeriods');
declare @delete nvarchar(max) = '
WHILE (EXISTS (SELECT TOP 1 1 FROM ' + @factTableName + ' WHERE IsDeleted = 1))
BEGIN
DELETE TOP(10000000) data FROM ' + @factTableName + ' data WHERE data.IsDeleted = 1
END;
'
--merge duplicate rows
set @sql = @delete +'
IF OBJECT_ID(''tempdb..#inputPayPeriods'') IS NOT NULL DROP TABLE #inputPayPeriods
SELECT data.PayPeriodID, COUNT(1) AS RecordsCount, 0 AS BatchID INTO #inputPayPeriods ' + @from + '
GROUP BY data.PayPeriodID
-- Split data into batches
DECLARE @BatchSize INT = 20000000
WHILE EXISTS (SELECT TOP 1 1 FROM #inputPayPeriods WHERE BatchID = 0)
BEGIN
;WITH PayPeriodInfo AS
(
SELECT IPP.PayPeriodID, ROW_NUMBER() OVER (ORDER BY IPP.PayPeriodID) AS RowNumber, SUM(RecordsCount) OVER (ORDER BY IPP.PayPeriodID) AS Total, M.MaxBatchID+1 AS BatchID
FROM #inputPayPeriods IPP
CROSS JOIN (SELECT MAX(BatchID) AS MaxBatchID FROM #inputPayPeriods) M
WHERE IPP.BatchID = 0
)
UPDATE IPP
SET IPP.BatchID = MI.BatchID
FROM #inputPayPeriods IPP
INNER JOIN PayPeriodInfo MI ON MI.PayPeriodID = IPP.PayPeriodID
WHERE MI.Total <= @BatchSize OR MI.RowNumber = 1
END
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
UPDATE data
SET data.IsDeleted = 1 ' + @fromForUpdate + ' and pp.BatchID = @BatchID
INSERT INTO ' + @factTableName + ' (data.DepartmentID, ' + @keyNameCSV + ', PayPeriodID, DateID, TimeClassID, ' + @measureNameCSV + ')
SELECT data.DepartmentID, ' + replace(@keyNameCSV, ',', ', data.') + ', data.PayPeriodID, data.DateID, data.TimeClassID, sum(' + replace(@measureNameCSV, ',', '), sum(') + ')
FROM ' + @factTableName + ' data
INNER JOIN #inputPayPeriods pp ON pp.PayPeriodID = data.PayPeriodID
WHERE data.IsDeleted = 1 and pp.BatchID = @BatchID
GROUP BY data.DepartmentID, ' + replace(@keyNameCSV, ',', ', data.') + ', data.PayPeriodID, data.DateID, data.TimeClassID;
SET @BatchID = @BatchID + 1
END
' + @delete;
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
GO
---------------------------------------------
-- fw.procFactGLSampledBaselineTargetUpdate
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-07-05 IP D-06023 Changing columns size to support values over 1 trillion
** 2 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 3 2018-05-24 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 4 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 5 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 6 2024-06-05 ishah JAZZ-61244 [TrLog][High] Bug - Run Management Reporting Monthly Process (MR Sampling, all years run): Task failed on Inserting GL Sampled.
*************************************************************/
----- #FactGLStaging should be created with specified columns(RowID bigint identity(1,1), DepartmentID int, AccountID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Units decimal(21,6), Dollars decimal(21,6), FTEs decimal(21,6),isDeleted bit default 0, isSystemGenerated bit default 0) before calling the proc
CREATE PROCEDURE [fw].[procFactGLSampledBaselineTargetUpdate]
@targetType INT = NULL,
@numberOfMonths INT = NULL,
@fiscalYearID INT = 0
WITH RECOMPILE
AS
IF (@targetType IS NULL)
SET @targetType = (
SELECT Value
FROM mr.SystemSetting
WHERE NAME = 'Target Basis'
)
IF (@numberOfMonths IS NULL)
SET @numberOfMonths = (
SELECT Value
FROM mr.SystemSetting
WHERE NAME = 'Number Of Rolling Average Months'
)
CREATE TABLE #temp (DepartmentID INT, AccountID INT, FiscalYearID SMALLINT, FiscalMonthID TINYINT, Dollars DECIMAL(21, 6), Units DECIMAL(21, 6))
DECLARE
@declareParameters nvarchar(max),
@sql nvarchar(max),
@sqlJoin nvarchar(max),
@sqlWhere nvarchar(max),
@sqlFromForBatches nvarchar(max),
@batchSize INT,
@BatchID INT,
@MaxBatchID INT,
@sqlParam nvarchar(max),
@timeClassId int = 1
declare @maxCalculatingFiscalYear int = (select max(FiscalYearID) from #FactGLStaging)
-- Split by batches
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 30000000,
@ResultBatchSize = @batchSize OUTPUT
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
CREATE TABLE #inputDepartments (DepartmentID INT, RecordsCount INT, BatchID INT)
delete from #FactGLStaging where TimeClassID = 20 and (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
IF (@targetType = 1)
BEGIN --Prior Year Actual
IF @fiscalYearID <> 0
BEGIN
set @declareParameters = '@fiscalYearID INT = ' + cast(@fiscalYearID - 1 as NVARCHAR(4)) + ', @timeClassId INT = ' + cast(@timeClassId as nvarchar(max))
set @sqlJoin = '
(
SELECT d.DepartmentID, d.AccountID, d.FiscalYearID + 1 as FiscalYearID, d.FiscalMonthID
FROM fw.FactGLSampled d
WHERE d.TimeClassID = @timeClassId AND d.FiscalYearID = @fiscalYearID
) X
'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @sqlJoin,
@whereClause = '',
@declareParameters = @declareParameters,
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #temp
SELECT d.DepartmentID, d.AccountID, d.FiscalYearID + 1, d.FiscalMonthID, d.Dollars, d.Units
FROM fw.FactGLSampled d
INNER JOIN #inputDepartments ID on ID.DepartmentID = d.DepartmentID
AND d.TimeClassID = @timeClassId AND d.FiscalYearID = @fiscalYearID - 1 AND ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
END
ELSE
BEGIN
set @declareParameters = '@timeClassId INT = ' + cast(@timeClassId as nvarchar(max))
set @sqlJoin = '
(
SELECT d.DepartmentID, d.AccountID, d.FiscalYearID + 1 as FiscalYearID, d.FiscalMonthID
FROM #FactGLStaging d
WHERE d.TimeClassID = @timeClassId
) X
'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @sqlJoin,
@whereClause = '',
@declareParameters = @declareParameters,
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #temp
SELECT d.DepartmentID, d.AccountID, d.FiscalYearID + 1, d.FiscalMonthID, d.Dollars, d.Units
FROM #FactGLStaging d
INNER JOIN #inputDepartments ID on ID.DepartmentID = d.DepartmentID
WHERE d.TimeClassID = @timeClassId AND ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
END
END
ELSE IF (@targetType = 10)
BEGIN --Rolling Average
IF OBJECT_ID('tempdb..#AllCombinations') IS NOT NULL DROP TABLE #AllCombinations
CREATE TABLE #AllCombinations (
DepartmentID INT,
AccountID INT,
FiscalYearID INT,
SortOrder INT,
Units DECIMAL(21, 6),
Dollars DECIMAL(21, 6)
);
IF OBJECT_ID('tempdb..#FinalDataset') IS NOT NULL DROP TABLE #FinalDataset
CREATE TABLE #FinalDataset (
DepartmentID INT,
AccountID INT,
FiscalYearID INT,
FiscalMonthID INT,
Dollars DECIMAL(21, 6),
Units DECIMAL(21, 6)
);
IF @fiscalYearID = 0
BEGIN
IF OBJECT_ID('tempdb..#FiscalYearMonth') IS NOT NULL DROP TABLE #FiscalYearMonth
CREATE TABLE #FiscalYearMonth (
FiscalYearID INT,
FiscalMonthID INT,
SortOrder INT,
ChronologicalOrder INT
);
INSERT INTO #FiscalYearMonth (FiscalYearID, FiscalMonthID, SortOrder, ChronologicalOrder)
SELECT fy.FiscalYearID, fm.FiscalMonthID, fm.SortOrder, fy.FiscalYearID * 12 + fm.SortOrder AS ChronologicalOrder
FROM fw.DimFiscalYear fy
CROSS JOIN fw.DimFiscalMonth fm
WHERE fy.FiscalYearID <> 0 AND fm.FiscalMonthID <> 0
IF OBJECT_ID('tempdb..#PrecomputedValues') IS NOT NULL DROP TABLE #PrecomputedValues
CREATE TABLE #PrecomputedValues (
DepartmentID INT,
AccountID INT,
FiscalYearID INT,
FiscalMonthID INT,
SortOrder INT,
PrecomputedValue INT,
Units DECIMAL(21, 6),
Dollars DECIMAL(21, 6),
TimeClassID INT,
IsSystemGenerated BIT
);
SET @sqlFromForBatches = '
(
SELECT
p.DepartmentID as DepartmentID,
p.AccountID,
p.FiscalYearID,
p.FiscalMonthID,
m.SortOrder,
(p.FiscalYearID * 12 + m.SortOrder) AS PrecomputedValue,
p.Units,
p.Dollars,
p.TimeClassID,
ISNULL(p.IsSystemGenerated, 0) AS IsSystemGenerated
FROM #FactGLStaging p
INNER JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
WHERE p.TimeClassID = 1 AND ISNULL(p.IsSystemGenerated, 0) = 0
) X
'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @sqlFromForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #PrecomputedValues
SELECT
p.DepartmentID,
p.AccountID,
p.FiscalYearID,
p.FiscalMonthID,
m.SortOrder,
(p.FiscalYearID * 12 + m.SortOrder) AS PrecomputedValue,
p.Units,
p.Dollars,
p.TimeClassID,
ISNULL(p.IsSystemGenerated, 0) AS IsSystemGenerated
FROM #FactGLStaging p
INNER JOIN #inputDepartments ID ON ID.DepartmentID = p.DepartmentID
INNER JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
WHERE p.TimeClassID = 1 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
IF OBJECT_ID('tempdb..#ChronologicalDifferences') IS NOT NULL DROP TABLE #ChronologicalDifferences
CREATE TABLE #ChronologicalDifferences (
DepartmentID INT,
AccountID INT,
FiscalYearID INT,
SortOrder INT,
ChronologicalDifference INT
);
DECLARE @MinYear INT = (SELECT MIN(FiscalYearID) FROM #PrecomputedValues)
DECLARE @MaxYear INT = (SELECT MAX(FiscalYearID) FROM #PrecomputedValues)
WHILE @MinYear <= @MaxYear
BEGIN
SET @sqlFromForBatches = '
(
SELECT
pv.DepartmentID as DepartmentID,
pv.AccountID,
fy.FiscalYearID,
fy.SortOrder,
(fy.ChronologicalOrder - pv.PrecomputedValue) AS ChronologicalDifference
FROM #PrecomputedValues pv
INNER JOIN #FiscalYearMonth fy ON (fy.ChronologicalOrder - pv.PrecomputedValue) BETWEEN 1 AND ' + CAST(@numberOfMonths AS NVARCHAR(4)) + '
WHERE pv.FiscalYearID = ' + cast(@MinYear as nvarchar(100)) + '
) X
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @sqlFromForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #ChronologicalDifferences
SELECT
pv.DepartmentID,
pv.AccountID,
fy.FiscalYearID,
fy.SortOrder,
(fy.ChronologicalOrder - pv.PrecomputedValue) AS ChronologicalDifference
FROM #PrecomputedValues pv
INNER JOIN #inputDepartments ID ON ID.DepartmentID = pv.DepartmentID
INNER JOIN #FiscalYearMonth fy ON (fy.ChronologicalOrder - pv.PrecomputedValue) BETWEEN 1 AND @numberOfMonths
WHERE ID.BatchID = @BatchID AND pv.FiscalYearID = @MinYear
SET @BatchID = @BatchID + 1
END
SET @MinYear = @MinYear + 1
END
SET @sqlFromForBatches = '
(
SELECT
CombinedResults.DepartmentID as DepartmentID,
AccountID,
FiscalYearID,
SortOrder
FROM (
SELECT
PV.DepartmentID as DepartmentID,
AccountID,
FiscalYearID,
SortOrder,
Units,
Dollars,
NULL AS ChronologicalDifference
FROM #PrecomputedValues PV
WHERE PV.FiscalMonthID <> 0
UNION ALL
SELECT
CD.DepartmentID as DepartmentID,
AccountID,
FiscalYearID,
SortOrder,
0 AS Units,
0 AS Dollars,
ChronologicalDifference
FROM #ChronologicalDifferences CD
) AS CombinedResults
GROUP BY CombinedResults.DepartmentID, AccountID, FiscalYearID, SortOrder
) X
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @sqlFromForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #AllCombinations
SELECT
CombinedResults.DepartmentID,
AccountID,
FiscalYearID,
SortOrder,
SUM(CASE WHEN ChronologicalDifference IS NULL THEN Units ELSE 0 END) AS Units,
SUM(CASE WHEN ChronologicalDifference IS NULL THEN Dollars ELSE 0 END) AS Dollars
FROM (
SELECT
PV.DepartmentID,
AccountID,
FiscalYearID,
SortOrder,
Units,
Dollars,
NULL AS ChronologicalDifference
FROM #PrecomputedValues PV
WHERE PV.FiscalMonthID <> 0
UNION ALL
SELECT
CD.DepartmentID,
AccountID,
FiscalYearID,
SortOrder,
0 AS Units,
0 AS Dollars,
ChronologicalDifference
FROM #ChronologicalDifferences CD
) AS CombinedResults
INNER JOIN #inputDepartments ID ON ID.DepartmentID = CombinedResults.DepartmentID
WHERE ID.BatchID = @BatchID
GROUP BY CombinedResults.DepartmentID, AccountID, FiscalYearID, SortOrder
SET @BatchID = @BatchID + 1
END
SET @sql = '
SELECT DepartmentID, AccountID, FiscalYearID, SortOrder, Dollars, Units
FROM #AllCombinations
'
SET @sqlWhere = 'WHERE (Dollars is not null or Units is not null)'
END
ELSE -- FiscalYearID != 0
BEGIN
SET @sqlFromForBatches = '
(
SELECT
p.DepartmentID as DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder as SortOrder,
Units,
Dollars
FROM #FactGLStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
WHERE m.FiscalMonthID <> 0 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND TimeClassID = 1 AND FiscalYearID = ' + cast(@fiscalYearID AS NVARCHAR(4)) + '
UNION ALL
SELECT
p.DepartmentID as DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder as SortOrder,
Units,
Dollars
FROM fw.FactGLSampled p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
WHERE m.FiscalMonthID <> 0 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND TimeClassID = 1 AND FiscalYearID = ' + cast(@fiscalYearID - 1 AS NVARCHAR(4)) + '
UNION ALL
SELECT
p.DepartmentID as DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder as SortOrder,
0 AS Units,
0 AS Dollars
FROM #FactGLStaging p
CROSS APPLY fw.DimFiscalMonth m
WHERE m.FiscalMonthID <> 0 AND p.TimeClassID = 1
UNION ALL
SELECT
p.DepartmentID as DepartmentID,
p.AccountID as AccountID,
fy.FiscalYearID as FiscalYearID,
m.SortOrder as SortOrder,
0 AS Units,
0 AS Dollars
FROM fw.FactGLSampled p
CROSS APPLY fw.DimFiscalMonth m
CROSS JOIN (
SELECT FiscalYearID
FROM fw.DimFiscalYear dm
WHERE dm.FiscalYearID IN ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')
) fy
WHERE m.FiscalMonthID <> 0 AND p.TimeClassID = 1 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND p.FiscalYearID = ' + cast(@fiscalYearID - 1 AS NVARCHAR(4)) + '
) X
'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @sqlFromForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #AllCombinations
SELECT
p.DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Units,
Dollars
FROM #FactGLStaging p
INNER JOIN #inputDepartments ID on ID.DepartmentID = p.DepartmentID
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
WHERE m.FiscalMonthID <> 0 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND TimeClassID = 1 AND FiscalYearID = @fiscalYearID AND ID.BatchID = @BatchID
UNION ALL
SELECT
p.DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Units,
Dollars
FROM fw.FactGLSampled p
INNER JOIN #inputDepartments ID on ID.DepartmentID = p.DepartmentID
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
WHERE m.FiscalMonthID <> 0 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND TimeClassID = 1 AND FiscalYearID = @fiscalYearID - 1 AND ID.BatchID = @BatchID
UNION ALL
SELECT
p.DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
0 AS Units,
0 AS Dollars
FROM #FactGLStaging p
INNER JOIN #inputDepartments ID on ID.DepartmentID = p.DepartmentID
CROSS APPLY fw.DimFiscalMonth m
WHERE m.FiscalMonthID <> 0 AND p.TimeClassID = 1 AND ID.BatchID = @BatchID
UNION ALL
SELECT
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
m.SortOrder,
0 AS Units,
0 AS Dollars
FROM fw.FactGLSampled p
INNER JOIN #inputDepartments ID on ID.DepartmentID = p.DepartmentID
CROSS APPLY fw.DimFiscalMonth m
CROSS JOIN (
SELECT FiscalYearID
FROM fw.DimFiscalYear dm
WHERE dm.FiscalYearID IN (@fiscalYearID - 1, @fiscalYearID)
) fy
WHERE m.FiscalMonthID <> 0 AND p.TimeClassID = 1 AND ISNULL(p.IsSystemGenerated, 0) = 0 AND p.FiscalYearID = @fiscalYearID - 1 AND ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
SET @sql = '
SELECT DepartmentID, AccountID, FiscalYearID, SortOrder, SUM(Dollars) AS Dollars, SUM(Units) AS Units
FROM #AllCombinations
GROUP BY DepartmentID, AccountID, FiscalYearID, SortOrder
'
SET @sqlWhere = 'WHERE (Dollars is not null or Units is not null) and FiscalYearID = ' + cast(@fiscalYearID AS NVARCHAR(4)) + ' '
END
SET @sqlJoin = '
SELECT
FullScope.DepartmentID as DepartmentID,
FullScope.AccountID as AccountID,
FullScope.FiscalYearID as FiscalYearID,
m.FiscalMonthID as FiscalMonthID,
ISNULL(
(SUM(Dollars) OVER (PARTITION BY FullScope.DepartmentID, AccountID ORDER BY FiscalYearID * 12 + m.SortOrder ROWS BETWEEN ' + CAST(@numberOfMonths AS NVARCHAR(4)) + ' PRECEDING AND 1 PRECEDING)) / ' + CAST(@numberOfMonths AS NVARCHAR(4)) + ', 0
) AS Dollars,
ISNULL(
(SUM(Units) OVER (PARTITION BY FullScope.DepartmentID, AccountID ORDER BY FiscalYearID * 12 + m.SortOrder ROWS BETWEEN ' + CAST(@numberOfMonths AS NVARCHAR(4)) + ' PRECEDING AND 1 PRECEDING)) / ' + CAST(@numberOfMonths AS NVARCHAR(4)) + ', 0
) AS Units
FROM (
' + @sql + '
) AS FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
'
SET @sqlFromForBatches = '
( ' + @sqlJoin + '
) X
'
SET @sql = '
INSERT INTO #FinalDataset
' + @sqlJoin + '
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = FullScope.DepartmentID' + '
WHERE IP.BatchID = @BatchID
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlFromForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
SET @sqlFromForBatches = '
(
SELECT
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
ISNULL(Dollars, 0.0) AS Dollars,
ISNULL(Units, 0.0) AS Units
FROM #FinalDataset
' + @sqlWhere + '
) X
'
SET @sql = '
INSERT INTO #temp (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Dollars, Units)
SELECT
FDS.DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
ISNULL(Dollars, 0.0) AS Dollars,
ISNULL(Units, 0.0) AS Units
FROM #FinalDataset FDS
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = FDS.DepartmentID' + '
' + @sqlWhere + ' and IP.BatchID = @BatchID
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlFromForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
END
ELSE
BEGIN --Budget
SET @sqlWhere = 'TimeClassID = 2 and (FiscalYearID = ' + cast(@fiscalYearID AS NVARCHAR(4)) + ' or ' + cast(@fiscalYearID AS NVARCHAR(4)) + ' = 0) '
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = '#FactGLStaging X',
@whereClause = @sqlWhere,
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #temp
SELECT GL.DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Dollars, Units
FROM #FactGLStaging GL
INNER JOIN #inputDepartments IP ON IP.DepartmentID = GL.DepartmentID
WHERE TimeClassID = 2
and (FiscalYearID = @FiscalYearID or @FiscalYearID = 0) and IP.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
END
SET @sqlWhere = '(FiscalYearID =' + cast(@fiscalYearID AS NVARCHAR(4)) + ' or ' + cast(@fiscalYearID AS NVARCHAR(4)) + ' = 0) and not (Dollars = 0 and Units = 0)'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = '#temp X',
@whereClause = @sqlWhere,
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #FactGLStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Dollars, Units)
SELECT source.DepartmentID, source.AccountID, source.FiscalYearID, source.FiscalMonthID, 20 as TimeClassID, source.Dollars, source.Units
FROM #temp source
INNER JOIN #inputDepartments ID on ID.DepartmentID = source.DepartmentID
WHERE (FiscalYearID = @fiscalYearID or @fiscalYearID = 0) and not (Dollars = 0 and Units = 0) AND ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
IF OBJECT_ID('tempdb..#FiscalYearMonth') IS NOT NULL DROP TABLE #FiscalYearMonth
IF OBJECT_ID('tempdb..#AllCombinations') IS NOT NULL DROP TABLE #AllCombinations
IF OBJECT_ID('tempdb..#FinalDataset') IS NOT NULL DROP TABLE #FinalDataset
DROP TABLE #temp
GO
---------------------------------------------
-- fw.procFactMonthlyMergeDuplicates
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-02-20 gforeman D-05545 Created
*************************************************************/
CREATE PROC [fw].[procFactMonthlyMergeDuplicates]
@factTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0
with recompile
as
set nocount on
declare @sql nvarchar(max)
--merge duplicate rows
set @sql = '
while (exists (select top 1 1 from ' + @factTableName + ' where IsDeleted = 1)) begin delete top(10000) data from ' + @factTableName + ' data where data.IsDeleted = 1 end;
update data set data.IsDeleted = 1 from ' + @factTableName + ' data where ' + (case when @fiscalYearID > 0 then 'data.FiscalYearID between ' + cast((@fiscalYearID-1) as nvarchar(4)) + ' and ' + cast(@fiscalYearID as nvarchar(4)) + ' and ' else '' end) + (case when @timeClassID > 0 then 'data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) + ' and ' else '' end) + ' exists(select 1 from (select DepartmentID, ' + @keyNameCSV + ', FiscalYearID, FiscalMonthID, TimeClassID from ' + @factTableName + ' where (1 = 1)' + (case when @fiscalYearID > 0 then ' and FiscalYearID between ' + cast((@fiscalYearID-1) as nvarchar(4)) + ' and ' + cast(@fiscalYearID as nvarchar(4)) else '' end) + (case when @timeClassID > 0 then ' and TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + ' group by DepartmentID, ' + @keyNameCSV + ', FiscalYearID, FiscalMonthID, TimeClassID having count(*) > 1) dr where dr.DepartmentID = data.DepartmentID and ' + (select dbo.straggr('dr.' + csv.val + ' = data.' + csv.val, ' and ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + ' and dr.FiscalYearID = data.FiscalYearID and dr.FiscalMonthID = data.FiscalMonthID and dr.TimeClassID = data.TimeClassID);
insert into ' + @factTableName + ' (DepartmentID, ' + @keyNameCSV + ', FiscalYearID, FiscalMonthID, TimeClassID, ' + @measureNameCSV + ') select DepartmentID, ' + @keyNameCSV + ', FiscalYearID, FiscalMonthID, TimeClassID, sum(' + replace(@measureNameCSV, ',', '), sum(') + ') from ' + @factTableName + ' where IsDeleted = 1 group by DepartmentID, ' + @keyNameCSV + ', FiscalYearID, FiscalMonthID, TimeClassID;
while (exists (select top 1 1 from ' + @factTableName + ' where IsDeleted = 1)) begin delete top(10000) data from ' + @factTableName + ' data where data.IsDeleted = 1 end;
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
GO
---------------------------------------------
-- fw.procFactMonthlyYTDPriorYearUpdate
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1
** 2 2018-07-17 KF B-20261 MR - Provider flexing - flexing
*************************************************************/
CREATE PROC [fw].[procFactMonthlyYTDPriorYearUpdate]
@factTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0
with recompile
as
set nocount on
declare @sql nvarchar(max)
--insert missing records
set @sql = '
declare @minYear int = ' + cast(@fiscalYearID as nvarchar(4)) + '
declare @maxYear int = ' + cast(@fiscalYearID as nvarchar(4)) + '
if (@minYear = 0 or @maxYear = 0) begin
select @minYear = min(data.FiscalYearID) from ' + @factTableName + ' data ' + (case when @timeClassID > 0 then 'where data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
select @maxYear = max(data.FiscalYearID) from ' + @factTableName + ' data ' + (case when @timeClassID > 0 then 'where data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
end
--records for ytd
insert into ' + @factTableName + '
(
' + @keyNameCSV + ',
DepartmentID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
IsSystemGenerated
)
SELECT DISTINCT data.' + replace(@keyNameCSV, ',', ',data.') + ',data.DepartmentID,data.FiscalYearID,m.FiscalMonthID,data.TimeClassID,1
FROM
' + @factTableName + ' data
inner join fw.DimFiscalMonth mm on mm.FiscalMonthID = data.FiscalMonthID
inner join fw.DimFiscalMonth m on m.SortOrder > mm.SortOrder
where
data.FiscalYearID between @minYear and @maxYear
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
and not exists ( --no existing reporting record for this tuple-month
select 1
from
' + @factTableName + ' datax
where
(1 = 1)
' + (select dbo.straggr('AND datax.' + csv.val + ' = data.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND datax.DepartmentID = data.DepartmentID
AND datax.FiscalYearID = data.FiscalYearID
AND datax.FiscalMonthID = m.FiscalMonthID
AND datax.TimeClassID = data.TimeClassID
)
option (recompile)
--records for prior year, prior ytd
DECLARE @currentYear INT, @maxYearForPriorYear INT
SELECT @currentYear = Setting FROM dbo.DBSetting WHERE Name = ''Current_GL_YearID''
SELECT @maxYearForPriorYear = CASE WHEN @maxYear > @currentYear THEN @currentYear ELSE @maxYear END
insert into ' + @factTableName + '
(
' + @keyNameCSV + ',
DepartmentID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
IsSystemGenerated
)
SELECT DISTINCT data.' + replace(@keyNameCSV, ',', ',data.') + ',data.DepartmentID,data.FiscalYearID+1,m.FiscalMonthID,data.TimeClassID,1
FROM
' + @factTableName + ' data
inner join fw.DimFiscalMonth mm on mm.FiscalMonthID = data.FiscalMonthID
inner join fw.DimFiscalMonth m on m.SortOrder >= mm.SortOrder
where
data.FiscalYearID between @minYear-1 and @maxYearForPriorYear
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
and not exists ( --no existing reporting record for this tuple-month
select 1
from
' + @factTableName + ' datax
where
(1 = 1)
' + (select dbo.straggr('AND datax.' + csv.val + ' = data.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND datax.DepartmentID = data.DepartmentID
AND datax.FiscalYearID-1 = data.FiscalYearID
AND datax.FiscalMonthID = m.FiscalMonthID
AND datax.TimeClassID = data.TimeClassID
)
option (recompile)
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
--populate YTD and prior year measures
set @sql = '
select
data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
data.FiscalYearID,
data.FiscalMonthID,
data.TimeClassID,
' + (select dbo.straggr('SUM(data.' + csv.val + ') OVER (PARTITION BY data.DepartmentID,' + @keyNameCSV + ',TimeClassID,FiscalYearID ORDER BY fm.SortOrder) AS ' + csv.val + 'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + @measureNameCSV + '
into #calculatedMeasures
from
' + @factTableName + ' data
inner join fw.DimFiscalMonth fm on fm.FiscalMonthID=data.FiscalMonthID
where
(1 = 1)
' + (case when @fiscalYearID > 0 then 'and data.FiscalYearID between ' + cast(@fiscalYearID as nvarchar(4)) + '-1 and ' + cast(@fiscalYearID as nvarchar(4)) else '' end) + '
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
option (recompile)
CREATE UNIQUE CLUSTERED INDEX IX_calculatedMeasures ON #calculatedMeasures ( ' + @keyNameCSV + ', DepartmentID, FiscalYearID, FiscalMonthID, TimeClassID ) WITH ( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
update M
set
' + (select dbo.straggr('m.' + csv.val + 'YTD = cm.' + csv.val + 'YTD', ',', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
from
' + @factTableName + ' m
INNER JOIN #calculatedMeasures cm ON
M.DepartmentID = cm.DepartmentID
' + (select dbo.straggr('AND M.' + csv.val + ' = cm.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND M.FiscalMonthID = cm.FiscalMonthID
AND M.TimeClassID = cm.TimeClassID
and m.FiscalYearID = cm.FiscalYearID
where
' + (select dbo.straggr('m.' + csv.val + 'YTD <> cm.' + csv.val + 'YTD', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
option (recompile)
update M
set
' + (select dbo.straggr('m.' + csv.val + 'PriorYear = cm_py.' + csv.val, ',', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + ',
' + (select dbo.straggr('m.' + csv.val + 'PriorYTD = cm_py.' + csv.val + 'YTD', ',', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
from
' + @factTableName + ' m
INNER JOIN #calculatedMeasures cm_py ON
M.DepartmentID = cm_py.DepartmentID
' + (select dbo.straggr('AND M.' + csv.val + ' = cm_py.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND M.FiscalMonthID = cm_py.FiscalMonthID
AND M.TimeClassID = cm_py.TimeClassID
and m.FiscalYearID = cm_py.FiscalYearID+1
where
' + (select dbo.straggr('m.' + csv.val + 'PriorYear <> cm_py.' + csv.val, ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + ' or
' + (select dbo.straggr('m.' + csv.val + 'PriorYTD <> cm_py.' + csv.val + 'YTD', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
option (recompile)
drop table #calculatedMeasures
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
--delete zero records, possible only if YTD aggregates to zero due to negative values
set @sql = '
delete data
from
' + @factTableName + ' data
where
' + (select dbo.straggr('data.' + csv.val + ' = 0 and data.' + csv.val + 'YTD = 0 and data.' + csv.val + 'PriorYear = 0 and data.' + csv.val + 'PriorYTD = 0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
GO
---------------------------------------------
-- fw.procFactMonthlyYTDPriorYearUpdateStaging
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 2 2017-07-13 IP TK-45395 fixed isSystemGenerated for generated records
** 3 2018-07-25 KF B-20342 MR - Update provider sampling to be in the appropriate format
** 4 2018-08-22 KF D-07561 MR Sampling: Provider FTEsYTD values are calculated incorrectly
** 5 2024-06-04 ishah JAZZ-61244 MR - Add batches to procFactMonthlyYTDPriorYearUpdateStaging
*************************************************************/
CREATE PROCEDURE [fw].[procFactMonthlyYTDPriorYearUpdateStaging]
@factTableName nvarchar(100),
@stagingTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0
AS
declare @sql nvarchar(max), @sqlJoin nvarchar(max), @sqlClauseForBatches nvarchar(max), @sqlWhere nvarchar(max), @sqlGroupBy nvarchar(max), @sqlParam nvarchar(max), @batchSize INT, @BatchID INT, @MaxBatchID INT
declare @MaxYearForCalculation int= (select max(FiscalYearID) from int.FactStaffing), @maxFiscalYear int
set @sql = N'SELECT @Output = max(FiscalYearID) FROM '+@stagingTableName+''
exec sp_executesql @sql, N'@Output INT OUTPUT', @Output=@maxFiscalYear OUTPUT;
--insert missing records
set @sql = '
alter table '+@stagingTableName+'
add SortOrder tinyint
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
declare @isFTEsColumnPresent BIT
IF EXISTS (SELECT val from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') WHERE val = 'FTEs')
SET @isFTEsColumnPresent = 1
ELSE
SET @isFTEsColumnPresent = 0
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 30000000,
@ResultBatchSize = @batchSize OUTPUT
SET @sqlClauseForBatches = @stagingTableName + ' X'
set @sql = '
UPDATE tp
SET tp.SortOrder = fm.SortOrder
FROM '+@stagingTableName+' tp
INNER JOIN fw.DimFiscalMonth fm ON tp.FiscalMonthID = fm.FiscalMonthID
INNER JOIN #inputDepartments IP ON IP.DepartmentID = tp.DepartmentID
WHERE IP.BatchID = @BatchID
'
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
CREATE TABLE #inputDepartments (DepartmentID INT, RecordsCount INT, BatchID INT)
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlClauseForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
IF OBJECT_ID('tempdb..#dimMonth') IS NOT NULL DROP TABLE #dimMonth
CREATE TABLE #dimMonth (FiscalMonthID tinyInt INDEX IX1 CLUSTERED, SortOrder tinyint)
insert into #dimMonth (FiscalMonthID, SortOrder)
select FiscalMonthID, SortOrder from fw.DimFiscalMonth where FiscalMonthID <> 0
--- forming #MinSoTemp table and split by batches
IF OBJECT_ID('tempdb..#MinSoTemp') IS NOT NULL DROP TABLE #MinSoTemp
CREATE TABLE #MinSoTemp (DepartmentID int, FiscalYearID int, TimeClassID int, MinSortOrder int)
set @sql = '
alter table #MinSoTemp
add '+ replace(@keyNameCSV, ',', ' INT, ') +' int
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
set @sqlClauseForBatches = '
(
'+(select case when @fiscalYearID > 0 THEN '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(mm.SortOrder) as MinSortOrder
FROM ' + @factTableName + ' X
INNER JOIN #dimMonth mm
ON mm.FiscalMonthID = x.FiscalMonthID
WHERE FiscalYearID ='+cast(@fiscalYearID-1 as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
UNION
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.SortOrder) as MinSortOrder
FROM '+@stagingTableName+' X
WHERE FiscalYearID ='+cast(@fiscalYearID as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' else '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.SortOrder) as MinSortOrder
FROM '+@stagingTableName+' X
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' end )+'
) X
'
SET @sql = '
INSERT INTO #MinSoTemp ('+ replace(@keyNameCSV, ',', ',') +', DepartmentID, FiscalYearID, TimeClassID, MinSortOrder)
'+(select case when @fiscalYearID > 0 THEN '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(mm.SortOrder) as MinSortOrder
FROM ' + @factTableName + ' X
INNER JOIN #dimMonth mm
ON mm.FiscalMonthID = x.FiscalMonthID
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = X.DepartmentID' + '
WHERE IP.BatchID = @BatchID AND FiscalYearID ='+cast(@fiscalYearID-1 as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
UNION
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.SortOrder) as MinSortOrder
FROM '+@stagingTableName+' X
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = X.DepartmentID' + '
WHERE IP.BatchID = @BatchID AND FiscalYearID ='+cast(@fiscalYearID as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' else '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.SortOrder) as MinSortOrder
FROM '+@stagingTableName+' X
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = X.DepartmentID' + '
WHERE IP.BatchID = @BatchID
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' end )+'
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlClauseForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
--- forming #MinPresentTemp table and split by batches
IF OBJECT_ID('tempdb..#MinPresentTemp') IS NOT NULL DROP TABLE #MinPresentTemp
CREATE TABLE #MinPresentTemp (DepartmentID int, FiscalYearID int, TimeClassID int, MinSortOrder int)
set @sql = '
alter table #MinPresentTemp
add '+ replace(@keyNameCSV, ',', ' INT, ') +' int
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
set @sqlJoin = '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.MinSortOrder) as MinSortOrder
FROM (SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
MinSortOrder
FROM #MinSoTemp
UNION ALL
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID+1 as FiscalYearID,
TimeClassID,
MinSortOrder
FROM #MinSoTemp
) X
'
set @sqlWhere = 'where FiscalYearID <= ' + cast(@maxFiscalYear as nvarchar(max))
set @sqlGroupBy = '
GROUP BY '+replace(@keyNameCSV, ',', ',')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
'
SET @sqlClauseForBatches = '
( ' + @sqlJoin + '
' + @sqlWhere + '
' + @sqlGroupBy + '
) X
'
SET @sql = '
INSERT INTO #MinPresentTemp ('+ replace(@keyNameCSV, ',', ',') +', DepartmentID, FiscalYearID, TimeClassID, MinSortOrder)
' + @sqlJoin + '
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = X.DepartmentID' + '
' + @sqlWhere + ' and IP.BatchID = @BatchID
' + @sqlGroupBy + '
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlClauseForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
--- forming #MissingListTemp table and split by batches
IF OBJECT_ID('tempdb..#MissingListTemp') IS NOT NULL DROP TABLE #MissingListTemp
CREATE TABLE #MissingListTemp (DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, SortOrder int)
set @sql = '
alter table #MissingListTemp
add '+ replace(@keyNameCSV, ',', ' INT, ') +' int
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
set @sqlJoin = '
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
mm.FiscalMonthID,
TimeClassID,
unpvt.SortOrder
FROM (
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],
MinSortOrder
FROM (
SELECT
isnull(TP.DepartmentID,MP.DepartmentID) as DepartmentID,
' + (select dbo.straggr('isnull (TP.' + csv.val + ',MP.' + csv.val +') as ' + csv.val+',', ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
isnull(TP.FiscalYearID,MP.FiscalYearID) as FiscalYearID,
TP.FiscalMonthID as FiscalMonthID,
isnull(TP.TimeClassID,MP.TimeClassID) as TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
0 as isDeleted,
1 as isSystemGenerated,
MP.MinSortOrder,
TP.SortOrder
FROM '+@stagingTableName+' TP
FULL join #MinPresentTemp MP ON
TP.DepartmentID = mp.DepartmentID
' + (select dbo.straggr('AND TP.' + csv.val + ' = MP.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
and TP.TimeClassID = mp.TimeClassID
and TP.FiscalYearID = mp.FiscalYearID
where (TP.SortOrder >= mp.MinSortOrder) or TP.SortOrder is null) ss /* there can be a subquery here*/
PIVOT /* formation of the pivot table*/
(count(FiscalMonthID) /*is an aggregate function that forms the contents of a pivot table*/
FOR sortorder IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) Pvt /*alias for the pivot table*/
) X
UNPIVOT (isPresent /*the header of the column that will contain the values
from the columns of the source table listed below*/
FOR SortOrder IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) Unpvt
INNER JOIN #dimMonth mm
ON mm.SortOrder = Unpvt.SortOrder
'
set @sqlWhere = 'WHERE isPresent = 0 and Unpvt.SortOrder >= MinSortOrder'
SET @sqlClauseForBatches = '
( ' + @sqlJoin + '
' + @sqlWhere + '
) X
'
SET @sql = '
INSERT INTO #MissingListTemp ('+ replace(@keyNameCSV, ',', ',') +', DepartmentID, FiscalYearID, FiscalMonthID, TimeClassID, SortOrder)
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
mm.FiscalMonthID,
TimeClassID,
unpvt.SortOrder
FROM (
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],
MinSortOrder
FROM (
SELECT
isnull(TP.DepartmentID,MP.DepartmentID) as DepartmentID,
' + (select dbo.straggr('isnull (TP.' + csv.val + ',MP.' + csv.val +') as ' + csv.val+',', ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
isnull(TP.FiscalYearID,MP.FiscalYearID) as FiscalYearID,
TP.FiscalMonthID as FiscalMonthID,
isnull(TP.TimeClassID,MP.TimeClassID) as TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
0 as isDeleted,
1 as isSystemGenerated,
MP.MinSortOrder,
TP.SortOrder
FROM '+@stagingTableName+' TP
FULL join #MinPresentTemp MP ON
TP.DepartmentID = mp.DepartmentID
' + (select dbo.straggr('AND TP.' + csv.val + ' = MP.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
and TP.TimeClassID = mp.TimeClassID
and TP.FiscalYearID = mp.FiscalYearID
INNER JOIN #inputDepartments IP ON IP.DepartmentID = MP.DepartmentID
where IP.BatchID = @BatchID and (TP.SortOrder >= mp.MinSortOrder) or TP.SortOrder is null) ss /* there can be a subquery here*/
PIVOT /* formation of the pivot table*/
(count(FiscalMonthID) /*is an aggregate function that forms the contents of a pivot table*/
FOR sortorder IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) Pvt /*alias for the pivot table*/
) X
UNPIVOT (isPresent /*the header of the column that will contain the values
from the columns of the source table listed below*/
FOR SortOrder IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) Unpvt
INNER JOIN #dimMonth mm
ON mm.SortOrder = Unpvt.SortOrder
' + @sqlWhere + '
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlClauseForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
--- forming #calculatedMeasuresTemp table and split by batches
IF OBJECT_ID('tempdb..#calculatedMeasuresTemp') IS NOT NULL DROP TABLE #calculatedMeasuresTemp
CREATE TABLE #calculatedMeasuresTemp (DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, isSystemGenerated int)
set @sql = '
alter table #calculatedMeasuresTemp
add '+ replace(@keyNameCSV, ',', ' INT, ') +' int
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
set @sql = '
alter table #calculatedMeasuresTemp
add ' + replace(@measureNameCSV, ',', 'YTD decimal (25, 6),') + 'YTD decimal (25, 6)' + '
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
set @sql = '
alter table #calculatedMeasuresTemp
add ' + replace(@measureNameCSV, ',', ' decimal (25, 6),') + ' decimal (25, 6)' + '
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
set @sqlJoin = '
select
uoag.DepartmentID,
uoag.' + replace(@keyNameCSV, ',', ', uoag.') + ',
uoag.FiscalYearID,
uoag.FiscalMonthID,
uoag.TimeClassID,
' + (select dbo.straggr('SUM(uoag.' + csv.val + ') OVER (PARTITION BY uoag.DepartmentID,' + @keyNameCSV + ',TimeClassID,FiscalYearID ORDER BY fm.SortOrder) AS ' + csv.val + 'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + @measureNameCSV + ',
uoag.isSystemGenerated
from
(
SELECT
ML.DepartmentID,
ML.' + replace(@keyNameCSV, ',', ', ML.') + ',
ML.FiscalYearID,
ML.FiscalMonthID,
ML.TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
1 as isSystemGenerated
FROM #MissingListTemp ML ' + case when @fiscalYearID > 0 then ' where ML.FiscalYearID = ' + cast(@fiscalYearID as nvarchar(4)) else '' end +'
UNION
SELECT data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
data.FiscalYearID,
data.FiscalMonthID,
data.TimeClassID,
' + @measureNameCSV + ',
data.isSystemGenerated
from '+@stagingTableName+' data
where
(1 = 1)
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
' + case when @fiscalYearID > 0 then '
UNION
SELECT data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
data.FiscalYearID,
data.FiscalMonthID,
data.TimeClassID,
' + @measureNameCSV + ',
1 as isSystemGenerated
from ' + @factTableName + ' data
where data.FiscalYearID = ' + cast(@fiscalYearID-1 as nvarchar(4)) + case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end
else '' end + '
) uoag -- union ald and generated
inner join #dimMonth fm on fm.FiscalMonthID=uoag.FiscalMonthID
'
SET @sqlClauseForBatches = '
( ' + @sqlJoin + '
) X
'
SET @sql = '
INSERT INTO #calculatedMeasuresTemp (DepartmentID, '+ replace(@keyNameCSV, ',', ',') +', FiscalYearID, FiscalMonthID, TimeClassID, ' + replace(@measureNameCSV, ',', 'YTD,') + 'YTD' + ', ' + replace(@measureNameCSV, ',', ',') + ', isSystemGenerated)
' + @sqlJoin + '
' + 'INNER JOIN #inputDepartments IP ON IP.DepartmentID = uoag.DepartmentID' + '
WHERE IP.BatchID = @BatchID
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlClauseForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
-- insert into stagingTableName and spolit by bathes
set @sqlJoin = '
SELECT
cm.DepartmentID,
cm.' + replace(@keyNameCSV, ',', ',cm.') + ',
cm.FiscalYearID,
cm.FiscalMonthID,
cm.TimeClassID,
' + (select dbo.straggr('isnull(cm.' + csv.val+',0) as '+ csv.val+',', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
' + (select dbo.straggr(case when csv.val = 'FTEs' then 'cast(0 as decimal(19, 4))' else 'isnull(cm.' + csv.val+'YTD,0) ' end + 'as '+csv.val+'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr('isnull(cm_py.' + csv.val + ',0) as '+ csv.val+'PriorYear,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr(case when csv.val = 'FTEs' then 'cast(0 as decimal(19, 4))' else 'isnull(cm_py.' + csv.val + 'YTD,0) ' end + 'as ' + csv.val + 'PriorYTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
isnull(cm.isSystemGenerated,0) as isSystemGenerated
from #calculatedMeasuresTemp cm
LEFT JOIN #calculatedMeasuresTemp cm_py ON
cm.DepartmentID = cm_py.DepartmentID
' + (select dbo.straggr('AND cm.' + csv.val + ' = cm_py.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND cm.FiscalMonthID = cm_py.FiscalMonthID
AND cm.TimeClassID = cm_py.TimeClassID
and cm.FiscalYearID = cm_py.FiscalYearID+1
' + case when @fiscalYearID > 0 then ' WHERE cm.FiscalYearId = '+cast(@fiscalYearID as varchar(4)) else '' end+'
'
set @sqlWhere = '
WHERE (
' + (select dbo.straggr(csv.val+'<>0 ', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
or ' + (select dbo.straggr(csv.val+'YTD<>0', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
or ' + (select dbo.straggr(csv.val+'PriorYear<>0', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
or ' + (select dbo.straggr(csv.val+'PriorYTD<>0', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
)
'
SET @sqlClauseForBatches = '
(
SELECT
PreSelect.*' + case when @isFTEsColumnPresent = 1 then '' else
',
FTEs=cast(0 as decimal(19, 4)),
FTEsYTD=cast(0 as decimal(19, 4)),
FTEsPriorYear=cast(0 as decimal(19, 4)),
FTEsPriorYTD=cast(0 as decimal(19, 4))'end +
'
FROM
(
' + @sqlJoin + '
) PreSelect
' + @sqlWhere + '
) X
'
set @sql = '
CREATE TABLE fw.'+replace(@stagingTableName,'#','')+'WithCalcs
(
DepartmentID int,
'+ replace(@keyNameCSV, ',', ' INT, ') +' int,
FiscalYearID int,
FiscalMonthID int,
TimeClassID int,
'+ replace(@measureNameCSV, ',', ' decimal(25,6), ') +' decimal(25,6),
' + (select dbo.straggr(case when csv.val = 'FTEs' then csv.val + 'YTD decimal(19,4),' else csv.val + 'YTD decimal(25,6),' end, '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
'+ replace(@measureNameCSV, ',', 'PriorYear decimal(25,6), ') +'PriorYear decimal(25,6),
' + (select dbo.straggr(case when csv.val = 'FTEs' then csv.val + 'PriorYTD decimal(19,4),' else csv.val + 'PriorYTD decimal(25,6),' end, '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
isSystemGenerated int'
+ case when @isFTEsColumnPresent = 1 then '' else
',
FTEs decimal(19,4),
FTEsYTD decimal(19,4),
FTEsPriorYear decimal(19,4),
FTEsPriorYTD decimal(19,4)'end +
'
)
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
SET @sql = '
INSERT INTO fw.'+replace(@stagingTableName,'#','')+'WithCalcs
SELECT
PreSelect.*' + case when @isFTEsColumnPresent = 1 then '' else
',
FTEs=cast(0 as decimal(19, 4)),
FTEsYTD=cast(0 as decimal(19, 4)),
FTEsPriorYear=cast(0 as decimal(19, 4)),
FTEsPriorYTD=cast(0 as decimal(19, 4))'end+
'
FROM
(
' + @sqlJoin + '
) PreSelect
INNER JOIN #inputDepartments IP ON IP.DepartmentID = PreSelect.DepartmentID
' + @sqlWhere + ' and IP.BatchID = @BatchID
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias ='X',
@fromClause = @sqlClauseForBatches,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @SqlParam = '@BatchID INT'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
EXEC sp_executesql @sql, @SqlParam, @BatchID = @BatchID;
SET @BatchID = @BatchID + 1
END
set @sql = 'drop table '+@stagingTableName+' '
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
IF OBJECT_ID('tempdb..#dimMonth') IS NOT NULL DROP TABLE #dimMonth
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
IF OBJECT_ID('tempdb..#MinSoTemp') IS NOT NULL DROP TABLE #MinSoTemp
IF OBJECT_ID('tempdb..#MinPresentTemp') IS NOT NULL DROP TABLE #MinPresentTemp
IF OBJECT_ID('tempdb..#MissingListTemp') IS NOT NULL DROP TABLE #MissingListTemp
IF OBJECT_ID('tempdb..#calculatedMeasuresTemp') IS NOT NULL DROP TABLE #calculatedMeasuresTemp
GO
---------------------------------------------
-- fw.procFactPayPeriodMergeDuplicates
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-10-56 gforeman D-05545 Created
*************************************************************/
create proc [fw].[procFactPayPeriodMergeDuplicates]
@factTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0,
@departmentIDs nvarchar(max) = null
with recompile
as
set nocount on
declare @sql nvarchar(max)
--merge duplicate rows
set @sql = '
while (exists (select top 1 1 from ' + @factTableName + ' where IsDeleted = 1)) begin delete top(10000) data from ' + @factTableName + ' data where data.IsDeleted = 1 end;
update data set data.IsDeleted = 1 from ' + @factTableName + ' data inner join fw.DimPayPeriod pp on pp.PayPeriodID = data.PayPeriodID where ' + (case when @fiscalYearID > 0 then 'pp.FiscalYearIDSecond between ' + cast((@fiscalYearID-1) as nvarchar(4)) + ' and ' + cast(@fiscalYearID as nvarchar(4)) + ' and ' else '' end) + (case when @timeClassID > 0 then 'data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) + ' and ' else '' end) + ' exists(select 1 from (select fd.DepartmentID, fd.' + replace(@keyNameCSV, ',', ', fd.') + ', fd.PayPeriodID, fd.TimeClassID from ' + @factTableName + ' fd inner join fw.DimPayPeriod p on p.PayPeriodID = fd.PayPeriodID where (1 = 1)' + (case when @fiscalYearID > 0 then ' and p.FiscalYearIDSecond between ' + cast((@fiscalYearID-1) as nvarchar(4)) + ' and ' + cast(@fiscalYearID as nvarchar(4)) else '' end) + (case when @timeClassID > 0 then ' and fd.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + ' group by fd.DepartmentID, fd.' + replace(@keyNameCSV, ',', ', fd.') + ', fd.PayPeriodID, fd.TimeClassID having count(*) > 1) dr where dr.DepartmentID = data.DepartmentID and ' + (select dbo.straggr('dr.' + csv.val + ' = data.' + csv.val, ' and ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + ' and dr.PayPeriodID = data.PayPeriodID and dr.TimeClassID = data.TimeClassID);
insert into ' + @factTableName + ' (DepartmentID, ' + @keyNameCSV + ', PayPeriodID, TimeClassID, ' + @measureNameCSV + ') select DepartmentID, ' + @keyNameCSV + ', PayPeriodID, TimeClassID, sum(' + replace(@measureNameCSV, ',', '), sum(') + ') from ' + @factTableName + ' where IsDeleted = 1 group by DepartmentID, ' + @keyNameCSV + ', PayPeriodID, TimeClassID;
while (exists (select top 1 1 from ' + @factTableName + ' where IsDeleted = 1)) begin delete top(10000) data from ' + @factTableName + ' data where data.IsDeleted = 1 end;
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
GO
---------------------------------------------
-- fw.procFactPayPeriodYTDPriorYearUpdate
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2014-09-09 gforeman B-02162 Added merge rows step
** 2 2014-09-09 gforeman B-02162 Run prior year when year specified
** 3 2014-09-18 gforeman B-02682 Additional speedups to insert missing step
** 4 2015-09-14 mschmitz B-08303 Added PayCycleID to partition and indexing
** 5 2015-10-13 nleroy D-03496 FTEsYTD fix
** 6 2015-10-20 mschmitz B-08303 Fixed bug found related to B-08303 change
** 7 2016-03-23 mholov D-04105 Added rolling delete on fact Table
** 8 2016-07-28 akozlov D-04262 Added IsSystemGenerated flag setting for inserted records
** 9 2016-09-48 gforeman D-04759 Optimize YTD calc
** 10 2016-09-26 akozlov D-04899 Reverted optimization
** 11 2016-09-26 akozlov D-04899 Fixed performance bug
** 12 2016-10-10 gforeman D-05000 Add IsSystemGenerated reset
** 13 2016-12-27 akozlov D-05183 Removed IsSystemGenerated reset
** 14 2017-01-23 gforeman D-05419 Misc perf improvements, add department parameter
** 15 2017-02-17 gforeman B-14308 Temp table tuning
** 16 2017-02-20 gforeman D-05545 Move duplicate record handling from YTD into sampling
** 17 2018-11-07 KF D-06432 PR - YTD Labor Expense PR Metrics Do Not Match Payroll
** 18 2022-03-01 KF JAZZ-13874 Stored procedure fw.procFactPayPeriodYTDPriorYearUpdate is timing out
** 19 2024-01-29 KF JAZZ-66821 Run PR Process Task: Some procs don't support non-consecutive pay period id (expect consecutive pay period id). It causes wrong YTD values & wrong Rolling Average Baseline Target values
*************************************************************/
CREATE proc [fw].[procFactPayPeriodYTDPriorYearUpdate]
@factTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0,
@departmentIDs nvarchar(max) = null
with recompile
as
set nocount on
declare @sql nvarchar(max)
--insert missing records
set @sql = '
declare @minYear int = ' + cast(@fiscalYearID as nvarchar(4)) + '
declare @maxYear int = ' + cast(@fiscalYearID as nvarchar(4)) + '
if (@minYear <= 0 or @maxYear <= 0) begin
select @minYear = min(pp.FiscalYearIDSecond) from ' + @factTableName + ' data INNER JOIN fw.DimPayPeriod pp ON data.PayPeriodID = pp.PayPeriodID ' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + (case when @departmentIDs is not null then ' and data.DepartmentID in(select val from ConvertCSValuesToTable(''' + @departmentIDs + ''', '',''))' else '' end) + '
select @maxYear = max(pp.FiscalYearIDSecond) from ' + @factTableName + ' data INNER JOIN fw.DimPayPeriod pp ON data.PayPeriodID = pp.PayPeriodID ' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + (case when @departmentIDs is not null then ' and data.DepartmentID in(select val from ConvertCSValuesToTable(''' + @departmentIDs + ''', '',''))' else '' end) + '
end
--records for ytd
insert into ' + @factTableName + '
(
DepartmentID,
' + @keyNameCSV + ',
PayPeriodID,
TimeClassID,
IsSystemGenerated
)
SELECT DISTINCT data.DepartmentID,data.' + replace(@keyNameCSV, ',', ',data.') + ',p.PayPeriodID,data.TimeClassID,1
FROM
' + @factTableName + ' data
' + (case when @departmentIDs is not null then 'inner join (select val as DepartmentID from ConvertCSValuesToTable(''' + @departmentIDs + ''', '','')) dept on dept.DepartmentID = data.DepartmentID' else '' end) + '
inner join fw.DimPayPeriod pp ON data.PayPeriodID = pp.PayPeriodID
inner join fw.DimPayCycle pc on pc.PayCycleID = pp.PayCycleID
inner join pi.viewNextAfterCurrentPayPeriod npp on npp.PayCycleID = pc.PayCycleID
inner join fw.DimPayPeriod p on p.FiscalYearIDSecond = pp.FiscalYearIDSecond and p.PayCycleID = pp.PayCycleID and p.PeriodNumber > pp.PeriodNumber and p.FiscalYearIDSecond <= npp.FiscalYearIDSecond
left join dbo.ColumnStoreIndex csi ON 1=0 -- tricky fix for JAZZ-13874
where
pp.FiscalYearIDSecond between @minYear and @maxYear
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
and not exists ( --existing record for this tuple-payperiod
select 1
from
' + @factTableName + ' datax
where
datax.DepartmentID = data.DepartmentID
' + (select dbo.straggr('AND datax.' + csv.val + ' = data.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND datax.PayPeriodID = p.PayPeriodID
AND datax.TimeClassID = data.TimeClassID
)
option (recompile)
--records for prior year, prior ytd
insert into ' + @factTableName + '
(
DepartmentID,
' + @keyNameCSV + ',
PayPeriodID,
TimeClassID,
IsSystemGenerated
)
SELECT DISTINCT data.DepartmentID,data.' + replace(@keyNameCSV, ',', ',data.') + ',p.PayPeriodID,data.TimeClassID,1
FROM
' + @factTableName + ' data
' + (case when @departmentIDs is not null then 'inner join (select val as DepartmentID from ConvertCSValuesToTable(''' + @departmentIDs + ''', '','')) dept on dept.DepartmentID = data.DepartmentID' else '' end) + '
inner join fw.DimPayPeriod pp ON data.PayPeriodID = pp.PayPeriodID
inner join fw.DimPayCycle pc on pc.PayCycleID = pp.PayCycleID
inner join pi.viewNextAfterCurrentPayPeriod npp on npp.PayCycleID = pc.PayCycleID
inner join fw.DimPayPeriod p on p.FiscalYearIDSecond = pp.FiscalYearIDSecond+1 and p.PayCycleID = pp.PayCycleID and p.PeriodNumber >= pp.PeriodNumber and p.FiscalYearIDSecond <= npp.FiscalYearIDSecond
left join dbo.ColumnStoreIndex csi ON 1=0 -- tricky fix for JAZZ-13874
where
pp.FiscalYearIDSecond between @minYear-1 and @maxYear-1
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
and not exists ( --existing record for this tuple-payperiod
select 1
from
' + @factTableName + ' datax
where
datax.DepartmentID = data.DepartmentID
' + (select dbo.straggr('AND datax.' + csv.val + ' = data.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND datax.PayPeriodID = p.PayPeriodID
AND datax.TimeClassID = data.TimeClassID
)
option (recompile)
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
--populate YTD and prior year measures
set @sql = '
select
data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ',data.') + ',
pp.PayCycleID,
pp.FiscalYearIDSecond,
pp.PeriodNumber,
data.TimeClassID,
' + (select dbo.straggr('SUM(data.' + csv.val + ') OVER (PARTITION BY data.DepartmentID,' + @keyNameCSV + ',TimeClassID,pp.PayCycleID,FiscalYearIDSecond ORDER BY pp.PayCycleID, pp.FiscalYearIDSecond, pp.PeriodNumber) AS ' + csv.val + 'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + @measureNameCSV + '
into #calculatedMeasures
from
' + @factTableName + ' data
' + (case when @departmentIDs is not null then 'inner join (select val as DepartmentID from ConvertCSValuesToTable(''' + @departmentIDs + ''', '','')) dept on dept.DepartmentID = data.DepartmentID' else '' end) + '
inner join fw.DimPayPeriod pp on pp.PayPeriodID=data.PayPeriodID
where
(1 = 1)
' + (case when @fiscalYearID > 0 then 'and pp.FiscalYearIDSecond between ' + cast(@fiscalYearID as nvarchar(4)) + '-1 and ' + cast(@fiscalYearID as nvarchar(4)) else '' end) + '
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '
option (recompile)
CREATE UNIQUE CLUSTERED INDEX IX_calculatedMeasures ON #calculatedMeasures ( DepartmentID, ' + @keyNameCSV + ', PayCycleID, FiscalYearIDSecond, PeriodNumber, TimeClassID ) WITH ( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
update M
set
' + (select dbo.straggr('m.' + csv.val + 'YTD = cm.' + csv.val + 'YTD', ',', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
from
' + @factTableName + ' m
inner join fw.DimPayPeriod pp on pp.PayPeriodID=m.PayPeriodID
INNER JOIN #calculatedMeasures cm ON
M.DepartmentID = cm.DepartmentID
' + (select dbo.straggr('AND M.' + csv.val + ' = cm.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND pp.PayCycleID = cm.PayCycleID
AND pp.FiscalYearIDSecond = cm.FiscalYearIDSecond
AND pp.PeriodNumber = cm.PeriodNumber
AND M.TimeClassID = cm.TimeClassID
where
' + (select dbo.straggr('m.' + csv.val + 'YTD <> cm.' + csv.val + 'YTD', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
option (recompile)
update M
set
' + (select dbo.straggr('m.' + csv.val + 'PriorYear = cm_py.' + csv.val, ',', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + ',
' + (select dbo.straggr('m.' + csv.val + 'PriorYTD = cm_py.' + csv.val + 'YTD', ',', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
from
' + @factTableName + ' m
inner join fw.DimPayPeriod pp on pp.PayPeriodID=m.PayPeriodID
INNER JOIN #calculatedMeasures cm_py ON
M.DepartmentID = cm_py.DepartmentID
' + (select dbo.straggr('AND M.' + csv.val + ' = cm_py.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND pp.PayCycleID = cm_py.PayCycleID
AND pp.FiscalYearIDSecond = cm_py.FiscalYearIDSecond+1
AND pp.PeriodNumber = cm_py.PeriodNumber
AND M.TimeClassID = cm_py.TimeClassID
where
' + (select dbo.straggr('m.' + csv.val + 'PriorYear <> cm_py.' + csv.val, ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + ' or
' + (select dbo.straggr('m.' + csv.val + 'PriorYTD <> cm_py.' + csv.val + 'YTD', ' or ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
option (recompile)
drop table #calculatedMeasures
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
--delete zero records, possible only if YTD aggregates to zero due to negative values
set @sql = '
delete data
from
' + @factTableName + ' data
where
' + (select dbo.straggr('data.' + csv.val + ' = 0 and data.' + csv.val + 'YTD = 0 and data.' + csv.val + 'PriorYear = 0 and data.' + csv.val + 'PriorYTD = 0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
GO
---------------------------------------------
-- fw.procFactPayPeriodYTDPriorYearUpdate_AG
/***************************************************************
** CID Date Author WI Description
** 1 2017-06-09 ipetriv TK-44047 fixing one-year integraion test for fw_procPayrollSampledDailyDetailedInsert
** 2 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 3 2019-08-21 vfay D-08311 PR Sampling Proc : removed filtering out 0 Value Rows
** 4 2023-10-18 KF JAZZ-62485 Technical - Update procs to support 7 days pay periods for Pay Period and Daily
** 5 2024-01-29 KF JAZZ-66821 Run PR Process Task: Some procs don't support non-consecutive pay period id (expect consecutive pay period id). It causes wrong YTD values & wrong Rolling Average Baseline Target values
** 6 2024-02-08 KF JAZZ-67258 Current year runs of the Run PR Process Task have been failing.
** 7 2024-02-12 HV JAZZ-15888 [fw].[procPayrollSampledPayPeriodInsert]: YTD records are not sampled properly for TimeClassID=20 when run proc for all years and Target Basis=Rolling Average
**************************************************************/
CREATE PROC [fw].[procFactPayPeriodYTDPriorYearUpdate_AG]
@factTableName nvarchar(100),
@stagingTableName varchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0
as
set nocount on
declare @sql nvarchar(max)
declare @MaxYearForCalculation int= (select max(FiscalYearID) from int.FactStaffing)
declare @PeriodsList nvarchar(max) = ''
select @PeriodsList = @PeriodsList+',['+cast(PeriodNumber as varchar(3))+']' FROM (select distinct PeriodNumber from fw.DimPayPeriod where PeriodNumber <> 0) PN
set @PeriodsList = SUBSTRING(@PeriodsList,2,LEN(@PeriodsList)-1)
/*insert missing records*/
set @sql = '
alter table '+@stagingTableName+'
add PeriodNumber int
alter table '+@stagingTableName+'
add FiscalYearID int
ALTER TABLE '+@stagingTableName+'
ADD PayCycleID int
'
if (@isDebugOnly = 1) begin print @sql end else begin exec(@sql) end
set @sql = '
UPDATE tp
SET tp.PeriodNumber = fm.PeriodNumber,
tp.FiscalYearID = fm.FiscalYearIDSecond,
tp.PayCycleID = d.PayCycleID
FROM '+@stagingTableName+' tp
INNER JOIN fw.DimPayPeriod fm
ON tp.PayPeriodID = fm.PayPeriodID
INNER JOIN fw.DimDepartment d
ON tp.DepartmentID = d.DepartmentID
CREATE TABLE #dimPayPeriod (PayPeriodID INT,FiscalYearID int, PeriodNumber TINYINT, PayCycleID int, UNIQUE CLUSTERED (PeriodNumber,FiscalYearID,PayCycleID))
INSERT INTO #dimPayPeriod
SELECT dpp.PayPeriodID, dpp.FiscalYearIDSecond, dpp.PeriodNumber, dpp.PayCycleID
FROM fw.DimPayPeriod dpp
inner join pi.viewNextAfterCurrentPayPeriod npp on dpp.PayCycleID = npp.PayCycleID and dpp.FiscalYearIDSecond <= npp.FiscalYearIDSecond
WHERE PayPeriodID <> 0;
;WITH MinSO as ('+(select case when @fiscalYearID > 0 THEN '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
mm.FiscalYearID,
X.TimeClassID,
min(mm.PeriodNumber) as MinPeriodNumber
FROM ' + @factTableName + ' X
INNER JOIN #dimPayPeriod mm
ON mm.PayPeriodID = x.PayPeriodID
WHERE FiscalYearID ='+cast(@fiscalYearID-1 as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
mm.FiscalYearID,
X.TimeClassID
UNION
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.PeriodNumber) as MinPeriodNumber
FROM '+@stagingTableName+' X
WHERE FiscalYearID ='+cast(@fiscalYearID as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' else '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.PeriodNumber) as MinPeriodNumber
FROM '+@stagingTableName+' X
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' end )+')
,MinPresent as (
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
dd.PayCycleID,
min(X.MinPeriodNumber) as MinPeriodNumber
FROM (SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
MinPeriodNumber
FROM MinSO
UNION ALL
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID+1 as FiscalYearID,
TimeClassID,
MinPeriodNumber
FROM MinSO
) X
inner join fw.DimDepartment dd on dd.DepartmentID = x.DepartmentID
where FiscalYearID <= (SELECT max(FiscalYearID) FROM '+@stagingTableName+')
GROUP BY '+replace(@keyNameCSV, ',', ',')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
dd.PayCycleID
)
,MissingList AS (
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
Unpvt.FiscalYearID,
mm.PayPeriodID,
TimeClassID,
unpvt.PeriodNumber
FROM (
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
PayCycleID,
'+@PeriodsList+',
MinPeriodNumber
FROM (
SELECT
isnull(TP.DepartmentID,MP.DepartmentID) as DepartmentID,
' + (select dbo.straggr('isnull (TP.' + csv.val + ',MP.' + csv.val +') as ' + csv.val+',', ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
isnull(TP.FiscalYearID,MP.FiscalYearID) as FiscalYearID,
TP.PayPeriodID as PayPeriodID,
isnull(TP.PayCycleID,MP.PayCycleID) as PayCycleID,
isnull(TP.TimeClassID,MP.TimeClassID) as TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
0 as isDeleted,
1 as isSystemGenerated,
MP.MinPeriodNumber,
isnull(TP.PeriodNumber,mp.MinPeriodNumber) as PeriodNumber
FROM '+@stagingTableName+' TP
FULL join MinPresent MP ON
TP.DepartmentID = mp.DepartmentID
' + (select dbo.straggr('AND TP.' + csv.val + ' = MP.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
and TP.TimeClassID = mp.TimeClassID
and TP.FiscalYearID = mp.FiscalYearID
where (TP.PeriodNumber >= mp.MinPeriodNumber) or TP.PeriodNumber is null) ss /* there can be a subquery here*/
PIVOT /*formation of the pivot table*/
(count(PayPeriodID) /*is an aggregate function that forms the contents of a pivot table*/
FOR PeriodNumber IN ('+@PeriodsList+')) Pvt /* alias for the pivot table*/
) X
UNPIVOT (isPresent /* the header of the column that will contain the values
from the columns of the source table listed below*/
FOR PeriodNumber IN ('+@PeriodsList+')) Unpvt
INNER JOIN #dimPayPeriod mm
ON mm.PeriodNumber = Unpvt.PeriodNumber
and mm.FiscalYearID = Unpvt.FiscalYearID
and mm.PayCycleID = unpvt.PayCycleID
WHERE isPresent = 0 and Unpvt.PeriodNumber >= MinPeriodNumber)
, calculatedMeasures as (
select
uoag.DepartmentID,
uoag.' + replace(@keyNameCSV, ',', ', uoag.') + ',
uoag.FiscalYearID,
uoag.PayPeriodID,
pp.PayCycleID,
uoag.TimeClassID,
pp.PeriodNumber,
' + (select dbo.straggr('SUM(uoag.' + csv.val + ') OVER (PARTITION BY uoag.DepartmentID,' + @keyNameCSV + ',TimeClassID,FiscalYearID,pp.PayCycleID ORDER BY pp.PeriodNumber) AS ' + csv.val + 'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + @measureNameCSV + ',
uoag.isSystemGenerated
from
(
SELECT
ML.DepartmentID,
ML.' + replace(@keyNameCSV, ',', ', ML.') + ',
ML.FiscalYearID,
ML.PayPeriodID,
ML.TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
1 as isSystemGenerated
FROM MissingList ML ' + case when @fiscalYearID > 0 then ' where ML.FiscalYearID = ' + cast(@fiscalYearID as nvarchar(4)) else '' end +'
UNION
SELECT data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
data.FiscalYearID,
data.PayPeriodID,
data.TimeClassID,
' + @measureNameCSV + ',
data.isSystemGenerated
from '+@stagingTableName+' data
where
(1 = 1)
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '' + case when @fiscalYearID > 0 then '
UNION
SELECT data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
mm.FiscalYearID,
data.PayPeriodID,
data.TimeClassID,
' + @measureNameCSV + ',
data.isSystemGenerated
from ' + @factTableName + ' data
INNER JOIN #dimPayPeriod mm
ON mm.PayPeriodID = data.PayPeriodID
where mm.FiscalYearID = ' + cast(@fiscalYearID-1 as nvarchar(4)) + case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end
else '' end + '
) uoag /* union ald and generated*/
inner join fw.dimPayPeriod pp on uoag.PayPeriodID = pp.PayPeriodID
)
SELECT
PreSelect.*
INTO fw.'+replace(@stagingTableName,'#','')+'WithCalcs
FROM (
SELECT
cm.DepartmentID,
cm.' + replace(@keyNameCSV, ',', ',cm.') + ',
cm.FiscalYearID,
cm.PayPeriodID,
cm.TimeClassID,
' + (select dbo.straggr('isnull(cm.' + csv.val+',0) as '+ csv.val+',', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
' + (select dbo.straggr('isnull(cm.' + csv.val+'YTD,0) as '+csv.val+'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr('isnull(cm_py.' + csv.val + ',0) as '+ csv.val+'PriorYear,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr('isnull(cm_py.' + csv.val + 'YTD,0) as ' + csv.val + 'PriorYTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
isnull(cm.isSystemGenerated,0) as isSystemGenerated
from calculatedMeasures cm
LEFT JOIN calculatedMeasures cm_py ON
cm.DepartmentID = cm_py.DepartmentID
' + (select dbo.straggr('AND cm.' + csv.val + ' = cm_py.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND cm.PeriodNumber = cm_py.PeriodNumber
AND cm.PayCycleID = cm_py.PayCycleID
AND cm.TimeClassID = cm_py.TimeClassID
and cm.FiscalYearID = cm_py.FiscalYearID+1
' + case when @fiscalYearID > 0 then ' WHERE cm.FiscalYearId = '+cast(@fiscalYearID as varchar(4)) else '' end+'
) PreSelect
WHERE NOT(' + (select dbo.straggr(csv.val+'=0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
and ' + (select dbo.straggr(csv.val + 'YTD=0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
and ' + (select dbo.straggr(csv.val + 'PriorYear=0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
and ' + (select dbo.straggr(csv.val + 'PriorYTD=0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
and isSystemGenerated = 1)
UNION ALL
SELECT
data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
data.FiscalYearID,
data.PayPeriodID,
data.TimeClassID,
' + (select dbo.straggr(csv.val+',', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
' + (select dbo.straggr(csv.val+'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr(csv.val+'PriorYear,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr(csv.val+'PriorYTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
data.isSystemGenerated
from '+@stagingTableName+' data
WHERE TimeClassID <> 20
drop table '+@stagingTableName+'
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
GO
---------------------------------------------
-- fw.procFactPayPeriodYTDPriorYearUpdate_Staging
/**************************************************************
** Change History
**************************************************************
** 1 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 2 2017-07-13 IP TK-45395 fixed isSystemGenerated for generated records
** 3 2017-09-20 IP TK-48127 fixed taking only Timeclasses 1,2,20 (excepted 4)
** 4 2018-08-10 OV B-19715 added condition IsPR = 1 for jobcode
** 5 2018-09-20 OV B-20797 fixed @isJobCodeIDColumnPresent value
** 6 2018-11-05 KF D-06432 PR - YTD Labor Expense PR Metrics Do Not Match Payroll
** 7 2019-08-21 vfay D-08586 PR Sampling Proc : removed filtering out 0 Value Rows
** 8 2020-12-09 HV JAZZ-11135 Remove table variable in procPayrollSampledPayPeriodDetailedInsert
** 9 2020-12-21 HV JAZZ-10222 Proc procPayrollSampledPayPeriodDetailedInsert is timing out
** 10 2022-04-12 HV JAZZ-35448 Remove PR Feature Flag
** 11 2023-10-18 KF JAZZ-62485 Technical - Update procs to support 7 days pay periods for Pay Period and Daily
** 12 2024-01-29 KF JAZZ-66821 Run PR Process Task: Some procs don't support non-consecutive pay period id (expect consecutive pay period id). It causes wrong YTD values & wrong Rolling Average Baseline Target values
** 13 2024-02-08 KF JAZZ-67258 Current year runs of the Run PR Process Task have been failing.
*************************************************************/
CREATE PROC [fw].[procFactPayPeriodYTDPriorYearUpdate_Staging]
@factTableName nvarchar(100),
@stagingTableName nvarchar(100),
@keyNameCSV nvarchar(450),
@measureNameCSV nvarchar(450),
@fiscalYearID smallint = 0,
@timeClassID tinyint = 0,
@isDebugOnly bit = 0
as
set nocount on
declare @sql nvarchar(max)
declare @MaxYearForCalculation int= (select max(FiscalYearID) from int.FactStaffing)
declare @PeriodsList nvarchar(max) = ''
select @PeriodsList = @PeriodsList+',['+cast(PeriodNumber as varchar(3))+']' FROM (select distinct PeriodNumber from fw.DimPayPeriod where PeriodNumber <> 0 ) PN
set @PeriodsList = SUBSTRING(@PeriodsList,2,LEN(@PeriodsList)-1)
declare @isJobCodeIDColumnPresent BIT
IF EXISTS (SELECT val from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') WHERE val = 'JobCodeID')
SET @isJobCodeIDColumnPresent = 1
ELSE
SET @isJobCodeIDColumnPresent = 0
set @sql = '
IF OBJECT_ID(''tempdb..' + @stagingTableName + 'Updated'') IS NOT NULL DROP TABLE ' + @stagingTableName + 'Updated
create table ' + @stagingTableName + 'Updated (
DepartmentID int,
'+replace(@keyNameCSV, ',', ' int,')+' int,
PayPeriodID int,
TimeClassID int,
'+replace(@measureNameCSV, ',', ' decimal(18, 6),')+' decimal(18, 6),
isDeleted bit default (0),
isSystemGenerated bit default(0),
PeriodNumber int,
FiscalYearID int,
PayCycleID int)
insert INTO ' + @stagingTableName + 'Updated
SELECT
tp.DepartmentID,
tp.' + replace(@keyNameCSV, ',', ', tp.') + ',
tp.PayPeriodID,
tp.TimeClassID,
tp.' + replace(@measureNameCSV, ',', ', tp.') + ',
tp.isDeleted,
tp.isSystemGenerated,
fm.PeriodNumber,
fm.FiscalYearIDSecond,
d.PayCycleID
FROM ' + @stagingTableName + ' tp
INNER JOIN fw.DimPayPeriod fm ON tp.PayPeriodID = fm.PayPeriodID
INNER JOIN fw.DimDepartment d ON tp.DepartmentID = d.DepartmentID
IF OBJECT_ID(''tempdb..' + @stagingTableName + ''') IS NOT NULL DROP TABLE ' + @stagingTableName + '
IF OBJECT_ID(''tempdb..#dimPayPeriod'') IS NOT NULL DROP TABLE #dimPayPeriod
CREATE TABLE #dimPayPeriod (PayPeriodID INT,FiscalYearID int, PeriodNumber TINYINT, PayCycleID int, UNIQUE CLUSTERED (PeriodNumber,FiscalYearID,PayCycleID))
INSERT INTO #dimPayPeriod
SELECT dpp.PayPeriodID, dpp.FiscalYearIDSecond, dpp.PeriodNumber, dpp.PayCycleID
FROM fw.DimPayPeriod dpp
INNER JOIN pi.viewNextAfterCurrentPayPeriod npp on npp.PayCycleID = dpp.PayCycleID
WHERE dpp.PayPeriodID <> 0 AND dpp.FiscalYearIDSecond <= npp.FiscalYearIDSecond
ORDER BY dpp.PayCycleID, dpp.FiscalYearIDSecond, dpp.PeriodNumber
IF OBJECT_ID(''tempdb..#MinSO'') IS NOT NULL DROP TABLE #MinSO
CREATE TABLE #MinSO (
'+replace(@keyNameCSV, ',', ' int,')+' int,
DepartmentID int,
FiscalYearID int,
TimeClassID int,
MinPeriodNumber int)
INSERT INTO #MinSO('+@keyNameCSV+', DepartmentID, FiscalYearID, TimeClassID, MinPeriodNumber)'+(select case when @fiscalYearID > 0 THEN '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
mm.FiscalYearID,
X.TimeClassID,
min(mm.PeriodNumber) as MinPeriodNumber
FROM ' + @factTableName + ' X
INNER JOIN #dimPayPeriod mm
ON mm.PayPeriodID = x.PayPeriodID
WHERE FiscalYearID ='+cast(@fiscalYearID-1 as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
mm.FiscalYearID,
X.TimeClassID
UNION
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.PeriodNumber) as MinPeriodNumber
FROM ' + @stagingTableName + 'Updated X
WHERE FiscalYearID ='+cast(@fiscalYearID as varchar(4))+'
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' else '
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
min(X.PeriodNumber) as MinPeriodNumber
FROM ' + @stagingTableName + 'Updated X
group by '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID
' end )+'
IF OBJECT_ID(''tempdb..#MinPresent'') IS NOT NULL DROP TABLE #MinPresent'
set @sql = @sql + '
create table #MinPresent (
'+replace(@keyNameCSV, ',', ' int,')+' int,
DepartmentID int,
FiscalYearID int,
TimeClassID int,
PayCycleID int,
MinPeriodNumber int)
INSERT INTO #MinPresent('+@keyNameCSV+', DepartmentID, FiscalYearID, TimeClassID, PayCycleID, MinPeriodNumber)
SELECT '+replace(@keyNameCSV, ',', ',X.')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
dd.PayCycleID,
min(X.MinPeriodNumber) as MinPeriodNumber
FROM (SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
MinPeriodNumber
FROM #MinSO
UNION ALL
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID+1 as FiscalYearID,
TimeClassID,
MinPeriodNumber
FROM #MinSO
) X
inner join fw.DimDepartment dd on dd.DepartmentID = x.DepartmentID
where FiscalYearID <= (SELECT max(FiscalYearID) FROM ' + @stagingTableName + 'Updated)
and TimeClassID in (1,2,20)
GROUP BY '+replace(@keyNameCSV, ',', ',')+',
X.DepartmentID,
X.FiscalYearID,
X.TimeClassID,
dd.PayCycleID
IF OBJECT_ID(''tempdb..#MinSO'') IS NOT NULL DROP TABLE #MinSO
IF OBJECT_ID(''tempdb..#MissingList'') IS NOT NULL DROP TABLE #MissingList
CREATE TABLE #MissingList (
'+replace(@keyNameCSV, ',', ' int,')+' int,
DepartmentID int,
FiscalYearID int,
PayPeriodID int,
TimeClassID int,
PeriodNumber int)
INSERT INTO #MissingList ('+@keyNameCSV+', DepartmentID, FiscalYearID, PayPeriodID, TimeClassID, PeriodNumber)
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
Unpvt.FiscalYearID,
mm.PayPeriodID,
TimeClassID,
unpvt.PeriodNumber
FROM (
SELECT '+replace(@keyNameCSV, ',', ',')+',
DepartmentID,
FiscalYearID,
TimeClassID,
PayCycleID,
'+@PeriodsList+',
MinPeriodNumber
FROM (
SELECT
isnull(TP.DepartmentID,MP.DepartmentID) as DepartmentID,
' + (select dbo.straggr('isnull (TP.' + csv.val + ',MP.' + csv.val +') as ' + csv.val+',', ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
isnull(TP.FiscalYearID,MP.FiscalYearID) as FiscalYearID,
TP.PayPeriodID as PayPeriodID,
isnull(TP.PayCycleID,MP.PayCycleID) as PayCycleID,
isnull(TP.TimeClassID,MP.TimeClassID) as TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
0 as isDeleted,
1 as isSystemGenerated,
MP.MinPeriodNumber,
isnull(TP.PeriodNumber,mp.MinPeriodNumber) as PeriodNumber
FROM ' + @stagingTableName + 'Updated TP
FULL join #MinPresent MP ON
TP.DepartmentID = mp.DepartmentID
' + (select dbo.straggr('AND TP.' + csv.val + ' = MP.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
and TP.TimeClassID = mp.TimeClassID
and TP.FiscalYearID = mp.FiscalYearID
where (TP.PeriodNumber >= mp.MinPeriodNumber) or TP.PeriodNumber is null) ss /* there can be a subquery here*/
PIVOT /*formation of the pivot table*/
(count(PayPeriodID) /*is an aggregate function that forms the contents of a pivot table*/
FOR PeriodNumber IN ('+@PeriodsList+')) Pvt /* alias for the pivot table*/
) X
UNPIVOT (isPresent /* the header of the column that will contain the values
from the columns of the source table listed below*/
FOR PeriodNumber IN ('+@PeriodsList+')) Unpvt
INNER JOIN #dimPayPeriod mm
ON mm.PeriodNumber = Unpvt.PeriodNumber
and mm.FiscalYearID = Unpvt.FiscalYearID
and mm.PayCycleID = unpvt.PayCycleID
WHERE isPresent = 0 and Unpvt.PeriodNumber >= MinPeriodNumber
IF OBJECT_ID(''tempdb..#MinPresent'') IS NOT NULL DROP TABLE #MinPresent
IF OBJECT_ID(''tempdb..#calculatedMeasures'') IS NOT NULL DROP TABLE #calculatedMeasures
CREATE TABLE #calculatedMeasures (
DepartmentID int,
'+replace(@keyNameCSV, ',', ' int,')+' int,
FiscalYearID int,
PayPeriodID int,
PayCycleID int,
TimeClassID int,
PeriodNumber int,
'+replace(@measureNameCSV, ',', 'YTD decimal(18, 6),')+'YTD decimal(18, 6),
'+replace(@measureNameCSV, ',', ' decimal(18, 6),')+' decimal(18, 6),
isSystemGenerated int)
insert into #calculatedMeasures(DepartmentID, '+@keyNameCSV+', FiscalYearID, PayPeriodID, PayCycleID, TimeClassID, PeriodNumber, ' + replace(@measureNameCSV, ',', 'YTD,') + 'YTD, ' + @measureNameCSV + ', isSystemGenerated)
select
uoag.DepartmentID,
uoag.' + replace(@keyNameCSV, ',', ', uoag.') + ',
uoag.FiscalYearID,
uoag.PayPeriodID,
pp.PayCycleID,
uoag.TimeClassID,
pp.PeriodNumber,
' + (select dbo.straggr('SUM(uoag.' + csv.val + ') OVER (PARTITION BY uoag.DepartmentID,' + @keyNameCSV + ',TimeClassID,FiscalYearID,pp.PayCycleID ORDER BY pp.PeriodNumber) AS ' + csv.val + 'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + @measureNameCSV + ',
uoag.isSystemGenerated
from
(
SELECT
ML.DepartmentID,
ML.' + replace(@keyNameCSV, ',', ', ML.') + ',
ML.FiscalYearID,
ML.PayPeriodID,
ML.TimeClassID,
0 as '+replace(@measureNameCSV, ',', ', 0 as ')+',
1 as isSystemGenerated
FROM #MissingList ML ' + case when @fiscalYearID > 0 then ' where ML.FiscalYearID = ' + cast(@fiscalYearID as nvarchar(4)) else '' end +'
UNION
SELECT data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
data.FiscalYearID,
data.PayPeriodID,
data.TimeClassID,
' + @measureNameCSV + ',
data.isSystemGenerated
from ' + @stagingTableName + 'Updated data
where
(1 = 1)
' + (case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else '' end) + '' + case when @fiscalYearID > 0 then '
UNION
SELECT data.DepartmentID,
data.' + replace(@keyNameCSV, ',', ', data.') + ',
mm.FiscalYearID,
data.PayPeriodID,
data.TimeClassID,
' + @measureNameCSV + ',
1 as isSystemGenerated
from ' + @factTableName + ' data
INNER JOIN #dimPayPeriod mm
ON mm.PayPeriodID = data.PayPeriodID
where mm.FiscalYearID = ' + cast(@fiscalYearID-1 as nvarchar(4)) + case when @timeClassID > 0 then 'and data.TimeClassID = ' + cast(@timeClassID as nvarchar(2)) else ' and TimeClassID in (1,2,20) ' end
else '' end + '
) uoag /* union ald and generated*/
inner join fw.dimPayPeriod pp on uoag.PayPeriodID = pp.PayPeriodID'
set @sql = @sql + '
IF OBJECT_ID(''tempdb..#MissingList'') IS NOT NULL DROP TABLE #MissingList
SELECT
PreSelect.*,
FTEs=cast(0 as decimal(19, 4)),
FTEsYTD=cast(0 as decimal(19, 4)),
FTEsPriorYear=cast(0 as decimal(19, 4)),
FTEsPriorYTD=cast(0 as decimal(19, 4))
INTO fw.' + replace(@stagingTableName,'#','') + 'WithCalcs
FROM (
SELECT
cm.DepartmentID,
cm.' + replace(@keyNameCSV, ',', ',cm.') + ',
cm.FiscalYearID,
cm.PayPeriodID,
cm.TimeClassID,
' + (select dbo.straggr('isnull(cm.' + csv.val+',0) as '+ csv.val+',', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
' + (select dbo.straggr('isnull(cm.' + csv.val+'YTD,0) as '+csv.val+'YTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr('isnull(cm_py.' + csv.val + ',0) as '+ csv.val+'PriorYear,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
' + (select dbo.straggr('isnull(cm_py.' + csv.val + 'YTD,0) as ' + csv.val + 'PriorYTD,', '', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
isnull(cm.isSystemGenerated,0) as isSystemGenerated
from #calculatedMeasures cm
LEFT JOIN #calculatedMeasures cm_py ON
cm.DepartmentID = cm_py.DepartmentID
' + (select dbo.straggr('AND cm.' + csv.val + ' = cm_py.' + csv.val, ' ', '') from dbo.ConvertCSValuesToTable(@keyNameCSV, ',') csv) + '
AND cm.PeriodNumber = cm_py.PeriodNumber
AND cm.PayCycleID = cm_py.PayCycleID
AND cm.TimeClassID = cm_py.TimeClassID
and cm.FiscalYearID = cm_py.FiscalYearID+1
' + case when @fiscalYearID > 0 then ' WHERE cm.FiscalYearId = '+cast(@fiscalYearID as varchar(4)) else '' end+'
) PreSelect
'+ case when @isJobCodeIDColumnPresent =1 then 'inner join fw.DimJobCode jc on jc.JobCodeID = PreSelect.JobCodeID and jc.IsPR = 1 ' else '' end + '
WHERE NOT(' + (select dbo.straggr(csv.val+'= 0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) +'
and ' + (select dbo.straggr(csv.val + 'YTD = 0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
and ' + (select dbo.straggr(csv.val + 'PriorYear = 0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
and ' + (select dbo.straggr(csv.val + 'PriorYTD = 0', ' and ', '') from dbo.ConvertCSValuesToTable(@measureNameCSV, ',') csv) + '
and isSystemGenerated = 1)
IF OBJECT_ID(''tempdb..' + @stagingTableName + 'Updated'') IS NOT NULL DROP TABLE ' + @stagingTableName + 'Updated
IF OBJECT_ID(''tempdb..#dimPayPeriod'') IS NOT NULL DROP TABLE #dimPayPeriod
IF OBJECT_ID(''tempdb..#calculatedMeasures'') IS NOT NULL DROP TABLE #calculatedMeasures
'
if (@isDebugOnly = 1) begin select @sql end else begin exec(@sql) end
--delete zero records, possible only if YTD aggregates to zero due to negative values
GO
---------------------------------------------
-- fw.procFactPayrollSampledBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-03-06 gforeman B-14693 Added year filter
** 2 2017-03-28 ipetriv D-05641 Logic for Prior and Actual was changed to simply copy actuals from previous year
** 3 2017-04-05 ipetriv D-05789 Changed algorithm for rolling average calculation
** 4 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 5 2018-05-24 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 6 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 7 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
*************************************************************/
CREATE proc [fw].[procFactPayrollSampledBaselineTargetUpdate]
@targetType int = null,
@numberOfMonths int = null,
@fiscalYearID int = 0
with recompile
as
if (@targetType is null) set @targetType = (select Value from mr.SystemSetting where Name = 'Target Basis')
if (@numberOfMonths is null) set @numberOfMonths = (select Value from mr.SystemSetting where Name = 'Number Of Rolling Average Months')
declare @sql varchar(max)
create table #temp
(
DepartmentID int,
JobCodeID int,
PayCodeID smallint,
PayCodeGroupID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
Hours decimal (18, 6),
Dollars decimal (18, 6),
FTEs decimal (18, 6)
)
create table #YearsScope (FiscalYearID int)
IF @fiscalYearID <> 0
INSERT INTO #YearsScope (FiscalYearID)
select distinct FiscalYearID from fw.dimFiscalYear dm where dm.FiscalYearID in (@fiscalYearID-1,@fiscalYearID,@fiscalYearID+1)
UNION
SELECT @fiscalYearID+1 as FiscalYearID
ELSE
INSERT INTO #YearsScope (FiscalYearID)
select distinct FiscalYearID from fw.dimFiscalYear dm where FiscalYearID between (select min(FiscalYearID) FROM fw.FactPayrollSampledMonthly) and (select max(FiscalYearID)+1 FROM fw.FactPayrollSampledMonthly)
if (@targetType = 1) begin --Prior Year Actual
insert into #temp
select d.DepartmentID, d.JobCodeID, d.PayCodeID, d.PayCodeGroupID, d.FiscalYearID+1, d.FiscalMonthID, d.Hours, d.Dollars, d.FTEs
FROM fw.FactPayrollSampledMonthly d WHERE d.TimeClassID = 1 and (@fiscalYearID = 0 or d.FiscalYearID = @fiscalYearID-1)
end else if (@targetType = 10) begin --Rolling Average
set @sql = '
insert into #temp (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID,Dollars,Hours,FTEs)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, isnull(Dollars,0.0), isnull(Hours,0.0),0 FROM (
select FullScope.DepartmentID, FullScope.JobCodeID, FullScope.PayCodeID, FullScope.PayCodeGroupID, FullScope.FiscalYearID, m.FiscalMonthID,
Dollars = ISNULL((Sum(Dollars) over(PARTITION BY DepartmentID,JobCodeID,PayCodeID,PayCodeGroupID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfMonths as nvarchar(2))+', 0),
Hours = ISNULL((Sum(Hours) over(PARTITION BY DepartmentID,JobCodeID,PayCodeID,PayCodeGroupID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfMonths as nvarchar(2))+', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
JobCodeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
SortOrder,
SUM(Hours) as Hours,
SUM(Dollars) as Dollars
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
m.SortOrder,
Hours,
Dollars
FROM fw.FactPayrollSampledMonthly p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and p.isSystemGenerated = 0
' + case when @fiscalYearID <> 0 then ' and FiscalYearID in ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')' else '' end +'
UNION ALL
SELECT /*combination of all for key columns months for (year-1). If some combination was in previous year - same should be in current, to receive baseline value*/
p.DepartmentID,
p.JobCodeID,
p.PayCodeID,
p.PayCodeGroupID,
fy.FiscalYearID,
m.SortOrder,
0 as Hours,
0 as Dollars
FROM fw.FactPayrollSampledMonthly p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN #YearsScope fy
WHERE m.FiscalMonthID <> 0 and p.TimeClassID = 1 and p.IsSystemGenerated = 0
' + case when @fiscalYearID <> 0 then ' and p.FiscalYearID in ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')' else '' end +'
) AllCombinations
GROUP BY DepartmentID,JobCodeID,PayCodeID,PayCodeGroupID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE (Dollars is not null
or Hours is not null)
' + case when @fiscalYearID <> 0 then ' and FiscalYearID = '+cast(@fiscalYearID as nvarchar(4)) else '' end
print @sql
exec (@sql)
end else begin --Budget
insert into #temp
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, Hours, Dollars, FTEs
from fw.FactPayrollSampledMonthly
where TimeClassID = 2 and (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID)
end
merge
fw.FactPayrollSampledMonthly as fact
using
(select * from #temp where (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID) and not (Hours = 0 and Dollars = 0)) as source
on
fact.DepartmentID = source.DepartmentID and fact.JobCodeID = source.JobCodeID and fact.PayCodeID = source.PayCodeID and fact.PayCodeGroupID = source.PayCodeGroupID and fact.FiscalYearID = source.FiscalYearID and
fact.FiscalMonthID = source.FiscalMonthID and fact.TimeClassID = 20 and (@fiscalYearID = 0 or fact.FiscalYearID = @fiscalYearID)
when not matched by target then
insert (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs) values
(source.DepartmentID, source.JobCodeID, source.PayCodeID, source.PayCodeGroupID, source.FiscalYearID, source.FiscalMonthID, 20, source.Hours, source.Dollars, source.FTEs)
when not matched by source and fact.TimeClassID = 20 and (@fiscalYearID = 0 or fact.FiscalYearID = @fiscalYearID) then
update set fact.IsDeleted = 1
when matched then
update set fact.Hours = source.Hours, fact.Dollars = source.Dollars, fact.FTEs = source.FTEs, fact.IsSystemGenerated = 0;
exec [dbo].[procRollingDeleteOnTable] 'fw', 'FactPayrollSampledMonthly', 'RowID', 'fw.FactPayrollSampledMonthly', 'TimeClassID = 20 and IsDeleted = 1', 10000, 0.5, 0
drop table #temp
drop table #YearsScope;
GO
---------------------------------------------
-- fw.procFactPayrollSampledDailyFTEsInsert
CREATE PROCEDURE [fw].[procFactPayrollSampledDailyFTEsInsert]
@departmentIDs NVARCHAR(max) = NULL,
@fiscalYearID INT = 0,
@onePayPeriodOnlyDate datetime = null,
@timeClassID INT = 4
AS
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-08-16 ishah JAZZ-41955 Daily Flexing - Calculating Payroll FTEs
************************************************************
*/
IF OBJECT_ID('tempdb..#departments') IS NOT NULL DROP TABLE #departments
SELECT val INTO #departments
FROM ConvertCSValuesToTable(@departmentIDs, ',')
IF OBJECT_ID('tempdb..#WorkWeekHours') IS NOT NULL DROP TABLE #WorkWeekHours
SELECT DeptJobCode.DepartmentID,
DeptJobCode.JobCodeID,
WorkingHoursCoef = cast(dww.Hours AS NUMERIC(20, 6)) / 7
INTO #WorkWeekHours
FROM (
SELECT DepartmentID,
JobCodeID,
WorkWeekID = COALESCE(jc.WorkWeekID, de.WorkWeekID, - 1)
FROM (
SELECT dp.DepartmentID,
WorkWeekID = CASE
WHEN e.WorkWeekID > - 1 THEN e.WorkWeekID
ELSE NULL
END
FROM fw.DimEntity e
INNER JOIN fw.DimDepartment dp on e.EntityID = dp.EntityID
) DE
CROSS JOIN (
SELECT djc.JobCodeID,
djcg.JobCodeGroupID,
WorkWeekID = CASE
WHEN djc.WorkWeekOverrideID > - 1 THEN djc.WorkWeekOverrideID
WHEN djc.WorkWeekOverrideID = - 1 AND djcg.WorkWeekOverrideID > - 1
THEN djcg.WorkWeekOverrideID ELSE NULL
END
FROM fw.DimJobCode djc
INNER JOIN fw.DimJobCodeGroup djcg ON djc.JobCodeGroupID = djcg.JobCodeGroupID
WHERE djc.IsDaily = 1 and djc.IsPR = 1
) JC
) DeptJobCode
LEFT JOIN fw.DimWorkWeek dww ON DeptJobCode.WorkWeekID = dww.WorkWeekID
DECLARE @BatchSize INT = 100000000
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
-- Added support for one pay period only
SELECT fp.PayPeriodID, pp.WorkingDays as WorkingDays, pp.PeriodDays as PeriodDays, COUNT(*) AS RecordsCount, 0 AS BatchID INTO #inputPayPeriods
FROM fw.FactPayrollSampledDaily fp
INNER JOIN fw.DimPayPeriod pp ON fp.PayPeriodID = pp.PayPeriodID
WHERE fp.TimeClassID = @timeClassID AND pp.PeriodNumber != 0 AND
((@onePayPeriodOnlyDate IS NOT NULL AND @onePayPeriodOnlyDate BETWEEN pp.PeriodStartCalendarDate AND pp.PeriodEndCalendarDate)
OR
(@onePayPeriodOnlyDate IS NULL AND (pp.FiscalYearIDSecond = @fiscalYearID OR @fiscalYearID = 0)))
GROUP BY fp.PayPeriodID, pp.WorkingDays, pp.PeriodDays
-- Split data into batches
WHILE EXISTS (SELECT TOP 1 1 FROM #inputPayPeriods WHERE BatchID = 0)
BEGIN
;WITH PayPeriodInfo AS
(
SELECT IPP.PayPeriodID, ROW_NUMBER() OVER (ORDER BY IPP.PayPeriodID) AS RowNumber, SUM(RecordsCount) OVER (ORDER BY IPP.PayPeriodID) AS Total, MaxBatchID+1 AS BatchID
FROM #inputPayPeriods IPP
CROSS JOIN (SELECT MAX(BatchID) AS MaxBatchID FROM #inputPayPeriods) M
WHERE IPP.BatchID = 0
)
UPDATE IPP
SET IPP.BatchID = MI.BatchID
FROM #inputPayPeriods IPP
INNER JOIN PayPeriodInfo MI ON MI.PayPeriodID = IPP.PayPeriodID
WHERE Total <= @BatchSize OR RowNumber = 1
END
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
UPDATE fact
SET fact.FTEs = CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (fact.Hours) / WorkingHoursCoef
ELSE fact.Hours / (IPP.WorkingDays * 8.0 / IPP.PeriodDays)
END
FROM fw.FactPayrollSampledDaily fact
INNER JOIN #inputPayPeriods IPP ON IPP.PayPeriodID = fact.PayPeriodID and IPP.BatchID = @BatchID
INNER JOIN fw.viewDimPayCodeGroup pcg ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID
AND fact.JobCodeID = ww.JobCodeID
WHERE pcg.ProductiveClass IN ( 'Productive', 'Non-Productive' )
AND fact.TimeClassID = @timeClassID
AND (
@departmentIDs IS NULL
OR fact.DepartmentID IN (
SELECT val
FROM #departments
)
)
SET @BatchID = @BatchID + 1
END
GO
---------------------------------------------
-- fw.procFactPayrollSampledDetailedBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-03-06 gforeman B-14693 Added year filter
** 2 2017-03-28 IPetriv D-05641 Logic for Prior and Actual was changed to simply copy actuals from previous year
** 3 2017-04-11 IPetriv B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactPayrollSampledMonthlyDetailed. Update fw.FactPayrollSampledMonthlyDetailed only once by the final dataset.
** 4 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 5 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 6 2018-05-24 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 7 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 8 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 9 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
*************************************************************/
CREATE proc [fw].[procFactPayrollSampledDetailedBaselineTargetUpdate]
@targetType int = null,
@numberOfMonths int = null,
@fiscalYearID int = 0
as
if (@targetType is null) set @targetType = (select Value from mr.SystemSetting where Name = 'Target Basis')
if (@numberOfMonths is null) set @numberOfMonths = (select Value from mr.SystemSetting where Name = 'Number Of Rolling Average Months')
declare @maxCalculatingFiscalYear int = (select max(FiscalYearID) from #PayrollSampledMonthlyDetailedStaging)
create table #temp
(
DepartmentID int,
JobCodeID int,
PayCodeID smallint,
PayCodeGroupID int,
EmployeeID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
Hours decimal (19, 4),
Dollars decimal (19, 4),
FTEs decimal (19, 4)
)
if (@targetType = 1) begin --Prior Year Actual
if (@fiscalYearID = 0)
insert into #temp
select d.DepartmentID, d.JobCodeID, d.PayCodeID, d.PayCodeGroupID, d.EmployeeID, d.FiscalYearID+1, d.FiscalMonthID, d.Hours, d.Dollars, d.FTEs
from #PayrollSampledMonthlyDetailedStaging d
where d.TimeClassID = 1
else
insert into #temp
select d.DepartmentID, d.JobCodeID, d.PayCodeID, d.PayCodeGroupID, d.EmployeeID, d.FiscalYearID+1, d.FiscalMonthID, d.Hours, d.Dollars, d.FTEs
from fw.FactPayrollSampledMonthlyDetailed d
where (d.FiscalYearID = @fiscalYearID-1) and d.TimeClassID = 1
end else if (@targetType = 10) begin --Rolling Average
declare @sql nvarchar(max)
if @fiscalYearID = 0
set @sql = '
insert into #temp (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID,Hours,Dollars)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID,isnull(Hours,0.0),isnull(Dollars,0.0) FROM (
select FullScope.DepartmentID, FullScope.JobCodeID, FullScope.PayCodeID, FullScope.PayCodeGroupID, FullScope.EmployeeID, FullScope.FiscalYearID, m.FiscalMonthID,
Dollars = ISNULL((Sum(Dollars) over(PARTITION BY DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0),
Hours = ISNULL((Sum(Hours) over(PARTITION BY DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
SortOrder,
SUM(Hours) as Hours,
SUM(Dollars) as Dollars
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
m.SortOrder,
Hours,
Dollars
FROM #PayrollSampledMonthlyDetailedStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and isnull(p.IsSystemGenerated,0) = 0 and p.TimeClassID = 1
UNION ALL
SELECT /*combination of all for key columns months for (year-1). If some combination was in previous year - same should be in current, to receive baseline value*/
p.DepartmentID,
p.JobCodeID,
p.EmployeeID,
p.PayCodeID,
p.PayCodeGroupID,
fy.FiscalYearID,
fy.SortOrder,
0 AS Hours,
0 AS Dollars
FROM #PayrollSampledMonthlyDetailedStaging p
INNER JOIN fw.DimFiscalMonth m on m.FiscalMonthID = p.FiscalMonthID
INNER JOIN (select FiscalYearID,FiscalMonthID,fm.sortOrder,fy.FiscalYearID*12+fm.SortOrder as ChronologicalOrder from fw.DimFiscalYear fy
full join fw.DimFiscalMonth fm on 1= 1
where FiscalMonthID <> 0 and FiscalYearID <> 0) fy ON ChronologicalOrder - (p.FiscalYearID*12+m.SortOrder) between 1 and '+cast(@numberOfMonths as nvarchar(2))+'
WHERE p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
) AllCombinations
GROUP BY DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Dollars is not null
or Hours is not null'
else
set @sql = '
insert into #temp (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID,Hours,Dollars)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID,isnull(Hours,0.0),isnull(Dollars,0.0) FROM (
select FullScope.DepartmentID, FullScope.JobCodeID, FullScope.PayCodeID, FullScope.PayCodeGroupID, FullScope.EmployeeID, FullScope.FiscalYearID, m.FiscalMonthID,
Dollars = ISNULL((Sum(Dollars) over(PARTITION BY DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0),
Hours = ISNULL((Sum(Hours) over(PARTITION BY DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
SortOrder,
SUM(Hours) as Hours,
SUM(Dollars) as Dollars
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
m.SortOrder,
Hours,
Dollars
FROM #PayrollSampledMonthlyDetailedStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and isnull(p.IsSystemGenerated,0) = 0 and p.TimeClassID = 1
UNION ALL
SELECT /*recods for months which are present in current year*/
DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
m.SortOrder,
Hours,
Dollars
FROM fw.FactPayrollSampledMonthlyDetailed p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and isnull(p.IsSystemGenerated,0) = 0 and p.TimeClassID = 1 and p.FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4))+'
UNION ALL
SELECT /*combination of all for key columns months for current year*/
DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
m.SortOrder,
0 AS Hours,
0 AS Dollars
FROM #PayrollSampledMonthlyDetailedStaging p
CROSS APPLY fw.DimFiscalMonth m
where m.FiscalMonthID <> 0 and isnull(p.IsSystemGenerated,0) = 0 and p.TimeClassID = 1
UNION ALL
SELECT /*combination of all for key columns months for (year-1). If some combination was in previous year - same should be in current, to receive baseline value*/
p.DepartmentID,
p.JobCodeID,
p.EmployeeID,
p.PayCodeID,
p.PayCodeGroupID,
fy.FiscalYearID,
m.SortOrder,
0 AS Hours,
0 AS Dollars
FROM fw.FactPayrollSampledMonthlyDetailed p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN (select distinct FiscalYearID from int.FactStaffing dm where dm.FiscalYearID in ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')) fy
WHERE m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0 and p.TimeClassID <> 20 and p.FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4))+'
) AllCombinations
GROUP BY DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Dollars is not null
or Hours is not null'
print @sql
exec (@sql)
end else begin --Budget
insert into #temp
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID, Hours, Dollars, FTEs
from #PayrollSampledMonthlyDetailedStaging
where TimeClassID = 2
end
delete from #PayrollSampledMonthlyDetailedStaging where TimeClassID = 20 and (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID)
insert into #PayrollSampledMonthlyDetailedStaging(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, FiscalYearID, FiscalMonthID, 20, Hours, Dollars, FTEs from #temp
where (FiscalYearID = @fiscalYearID or @fiscalYearID = 0) and not (Hours =0 and Dollars = 0)
drop table #temp;
GO
---------------------------------------------
-- fw.procFactPayrollSampledMonthlyUpdateFTEs
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2019-10-21 KF D-08819 FTE Baseline Calculation Issue
** 2 2020-09-03 KF JAZZ-4280 FTEs YTD logic for Rolling Methodology incorrectly calculating
** 3 2020-02-18 HV JAZZ-15496 Bug - Run Management Reporting Monthly Process is failed due to "Divide by zero error encountered..." error
** 4 2021-06-08 KF JAZZ-21092 Monthly FTE Factor for Rolling Average
** 5 2021-09-14 KF JAZZ-26273 Update Monthly FTE YTD Factor for Rolling Average
** 6 2024-04-23 HV JAZZ-68507 Inconsistencies in MR conversion factor used across TimeClasses
*************************************************************/
CREATE PROCEDURE [fw].[procFactPayrollSampledMonthlyUpdateFTEs]
@fiscalYearID SMALLINT = 0,
@timeClassID TINYINT = 20
AS
DECLARE @targetType int = (select Value from mr.SystemSetting where Name = 'Target Basis')
IF(@targetType = 10) --Rolling Average
BEGIN
CREATE TABLE #workingHours (FiscalYearID smallint, FiscalMonthID tinyint, WorkWeekID INT,
WorkingHours Decimal(19,4), WorkingHoursYTD Decimal(38,4),
RollingWorkingHours Decimal(19,4), RollingWorkingHoursYTD Decimal(38,4))
DECLARE @useCurrentMonthFTEFactor bit = (SELECT Value FROM mr.SystemSetting WHERE Name = 'Use The Current Month FTE Factor Instead Of The Rolling Average')
DECLARE @numberOfMonths INT = (select Value from mr.SystemSetting where Name = 'Number Of Rolling Average Months')
DECLARE @sql nvarchar(max)
SET @sql = '
INSERT INTO #workingHours (FiscalYearID, FiscalMonthID, WorkWeekID, WorkingHours, WorkingHoursYTD, RollingWorkingHours, RollingWorkingHoursYTD)
SELECT FiscalYearID, FiscalMonthID, WorkWeekID, WorkingHours, WorkingHoursYTD, RollingWorkingHours,
COALESCE((Sum(RollingWorkingHours) over(PARTITION BY WorkWeekID, FiscalYearID ORDER BY SortOrder)), 0) AS RollingWorkingHoursYTD
FROM (
SELECT FY.FiscalYearID, FM.FiscalMonthID, wpmCY.WorkWeekID, FM.SortOrder, wpmCY.Hours AS WorkingHours, wpmCY.YTDHours AS WorkingHoursYTD,
COALESCE((Sum(wpmCY.Hours) over(PARTITION BY wpmCY.WorkWeekID ORDER BY FY.FiscalYearID*12+FM.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfMonths as nvarchar(2))+', 0) AS RollingWorkingHours
FROM [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY
INNER JOIN fw.DimFiscalMonth FM ON FM.FiscalMonthID = wpmCY.FiscalMonthID
INNER JOIN fw.DimFiscalYear FY ON FY.FiscalYearID = wpmCY.FiscalYearID
) S
'
exec (@sql)
IF(@useCurrentMonthFTEFactor = 1 AND @timeClassID IN (4, 20, 22))
BEGIN
UPDATE fact
SET
fact.FTEs= CASE WHEN wpmCY.WorkingHours = 0 THEN 0 ELSE fact.Hours/wpmCY.WorkingHours END,
fact.FTEsYTD= CASE WHEN wpmCY.WorkingHoursYTD = 0 THEN 0 ELSE fact.HoursYTD/wpmCY.WorkingHoursYTD END,
fact.FTEsPriorYear = CASE WHEN COALESCE(wpmPY.WorkingHours, 0) = 0 THEN 0 ELSE fact.HoursPriorYear / wpmPY.WorkingHours END,
fact.FTEsPriorYTD = CASE WHEN COALESCE(wpmPY.WorkingHoursYTD, 0) = 0 THEN 0 ELSE fact.HoursPriorYTD / wpmPY.WorkingHoursYTD END
FROM
(
SELECT fact.*,
CASE WHEN jc.WorkWeekOverrideID != -1 THEN jc.WorkWeekOverrideID
WHEN jc.WorkWeekOverrideID = -1 AND jcg.WorkWeekOverrideID != -1 THEN jcg.WorkWeekOverrideID
WHEN jc.WorkWeekOverrideID = -1 and jcg.WorkWeekOverrideID =- 1 THEN D.WorkWeekID
END AS WorkWeekID
FROM fw.FactPayrollSampledMonthly fact
inner join fw.DimDepartment D on fact.DepartmentID= D.DepartmentID
inner join fw.DimJobCode JC on fact.JobCodeID= JC.JobCodeID
inner join fw.DimJobCodeGroup JCG on JC.jobCodeGroupID = JCG.JobCodeGroupID
inner join fw.DimPayCodeGroup PCG on fact.PayCodeGroupID = PCG.PayCodeGroupID
WHERE PCG.ProductiveClassID in ('3','2') --Productive and Non-Productive
and (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and fact.TimeClassID = @timeClassID
) fact
inner join #workingHours wpmCY on fact.FiscalMonthID= wpmCY.FiscalMonthID and fact.FiscalYearID= wpmCY.FiscalYearID and wpmCY.WorkWeekID= fact.WorkWeekID
left join #workingHours wpmPY on fact.FiscalMonthID= wpmPY.FiscalMonthID and (fact.FiscalYearID-1)=wpmPY.FiscalYearID and wpmPY.WorkWeekID=fact.WorkWeekID
END
ELSE BEGIN
UPDATE fact
SET
fact.FTEs= CASE WHEN wpmCY.RollingWorkingHours = 0 THEN 0 ELSE fact.Hours/wpmCY.RollingWorkingHours END,
fact.FTEsYTD= CASE WHEN wpmCY.RollingWorkingHoursYTD = 0 THEN 0 ELSE fact.HoursYTD/wpmCY.RollingWorkingHoursYTD END,
fact.FTEsPriorYear = CASE WHEN COALESCE(wpmPY.RollingWorkingHours, 0) = 0 THEN 0 ELSE fact.HoursPriorYear / wpmPY.RollingWorkingHours END,
fact.FTEsPriorYTD = CASE WHEN COALESCE(wpmPY.RollingWorkingHoursYTD, 0) = 0 THEN 0 ELSE fact.HoursPriorYTD / (wpmPY.RollingWorkingHoursYTD) END
FROM
(
SELECT fact.*,
CASE WHEN jc.WorkWeekOverrideID != -1 THEN jc.WorkWeekOverrideID
WHEN jc.WorkWeekOverrideID = -1 AND jcg.WorkWeekOverrideID != -1 THEN jcg.WorkWeekOverrideID
WHEN jc.WorkWeekOverrideID = -1 and jcg.WorkWeekOverrideID =- 1 THEN D.WorkWeekID
END AS WorkWeekID
FROM fw.FactPayrollSampledMonthly fact
inner join fw.DimDepartment D on fact.DepartmentID= D.DepartmentID
inner join fw.DimJobCode JC on fact.JobCodeID= JC.JobCodeID
inner join fw.DimJobCodeGroup JCG on JC.jobCodeGroupID = JCG.JobCodeGroupID
inner join fw.DimPayCodeGroup PCG on fact.PayCodeGroupID = PCG.PayCodeGroupID
WHERE
PCG.ProductiveClassID in ('3','2') --Productive and Non-Productive
and (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and fact.TimeClassID = @timeClassID
) fact
inner join #workingHours wpmCY on fact.FiscalMonthID= wpmCY.FiscalMonthID and fact.FiscalYearID= wpmCY.FiscalYearID and wpmCY.WorkWeekID= fact.WorkWeekID
left join #workingHours wpmPY on fact.FiscalMonthID= wpmPY.FiscalMonthID and (fact.FiscalYearID-1)=wpmPY.FiscalYearID and wpmPY.WorkWeekID=fact.WorkWeekID
IF OBJECT_ID('tempdb..#workingHours') IS NOT NULL DROP TABLE #workingHours
END
END
ELSE -- Not rolling average
BEGIN
update fact
set
fact.FTEs=fact.Hours / (wpmCY.Hours),
fact.FTEsYTD = fact.HoursYTD / (wpmCY.YTDHours),
fact.FTEsPriorYear = CASE WHEN COALESCE(wpmPY.Hours, 0) = 0 THEN 0 ELSE fact.HoursPriorYear / (wpmPY.Hours) END,
fact.FTEsPriorYTD = CASE WHEN COALESCE(wpmPY.YTDHours, 0) = 0 THEN 0 ELSE fact.HoursPriorYTD / (wpmPY.YTDHours) END
from
fw.FactPayrollSampledMonthly fact
inner join [fw].[DimDepartment] D on fact.DepartmentID=D.DepartmentID
inner join [fw].[DimJobCode] JC on fact.JobCodeID=JC.JobCodeID
inner join fw.DimJobCodeGroup JCG on JC.jobCodeGroupID = JCG.JobCodeGroupID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID and CASE WHEN @targetType = 1 AND TimeClassID in (20,4,22) THEN fact.FiscalYearID-1 ELSE fact.FiscalYearID END=wpmCY.FiscalYearID and wpmCY.WorkWeekID=D.WorkWeekID
left join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmPY on fact.FiscalMonthID=wpmPY.FiscalMonthID and CASE WHEN @targetType = 1 AND TimeClassID in (20,4,22) THEN fact.FiscalYearID-2 ELSE fact.FiscalYearID-1 END=wpmPY.FiscalYearID and wpmPY.WorkWeekID=D.WorkWeekID
inner join fw.DimFiscalMonth fm on fact.FiscalMonthID=fm.FiscalMonthID
inner join [fw].[DimPayCodeGroup] pcg on fact.PayCodeGroupID = pcg.PayCodeGroupID
where
pcg.ProductiveClassID in ('3','2') --Productive and Non-Productive
and jc.WorkWeekOverrideID=-1 and jcg.WorkWeekOverrideID=-1
and (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and fact.TimeClassID = @timeClassID
option (recompile)
update fact
set
fact.FTEs=fact.Hours / (wpmCY.Hours),
fact.FTEsYTD = fact.HoursYTD / (wpmCY.YTDHours),
fact.FTEsPriorYear = CASE WHEN COALESCE(wpmPY.Hours, 0) = 0 THEN 0 ELSE fact.HoursPriorYear / (wpmPY.Hours) END,
fact.FTEsPriorYTD = CASE WHEN COALESCE(wpmPY.YTDHours, 0) = 0 THEN 0 ELSE fact.HoursPriorYTD / (wpmPY.YTDHours) END
from
fw.FactPayrollSampledMonthly fact
inner join [fw].[DimJobCode] JC on fact.JobCodeID=JC.JobCodeID
inner join fw.DimJobCodeGroup JCG on JC.jobCodeGroupID = JCG.JobCodeGroupID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID and CASE WHEN @targetType = 1 AND TimeClassID in (20,4,22) THEN fact.FiscalYearID-1 ELSE fact.FiscalYearID END=wpmCY.FiscalYearID and wpmCY.WorkWeekID=jcg.WorkWeekOverrideID
left join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmPY on fact.FiscalMonthID=wpmPY.FiscalMonthID and CASE WHEN @targetType = 1 AND TimeClassID in (20,4,22) THEN fact.FiscalYearID-2 ELSE fact.FiscalYearID-1 END=wpmPY.FiscalYearID and wpmPY.WorkWeekID=jcg.WorkWeekOverrideID
inner join fw.DimFiscalMonth fm on fact.FiscalMonthID=fm.FiscalMonthID
inner join [fw].[DimPayCodeGroup] pcg on fact.PayCodeGroupID = pcg.PayCodeGroupID
where
pcg.ProductiveClassID in ('3','2') --Productive and Non-Productive
and jcg.WorkWeekOverrideID<>-1 and jc.WorkWeekOverrideID=-1
and (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and fact.TimeClassID = @timeClassID
option (recompile)
update fact
set
fact.FTEs=fact.Hours / (wpmCY.Hours),
fact.FTEsYTD = fact.HoursYTD / (wpmCY.YTDHours),
fact.FTEsPriorYear = CASE WHEN COALESCE(wpmPY.Hours, 0) = 0 THEN 0 ELSE fact.HoursPriorYear / (wpmPY.Hours) END,
fact.FTEsPriorYTD = CASE WHEN COALESCE(wpmPY.YTDHours, 0) = 0 THEN 0 ELSE fact.HoursPriorYTD / (wpmPY.YTDHours) END
from
fw.FactPayrollSampledMonthly fact
inner join [fw].[DimJobCode] JC on fact.JobCodeID=JC.JobCodeID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID and CASE WHEN @targetType = 1 AND TimeClassID in (20,4,22) THEN fact.FiscalYearID-1 ELSE fact.FiscalYearID END=wpmCY.FiscalYearID and wpmCY.WorkWeekID=jc.WorkWeekOverrideID
left join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmPY on fact.FiscalMonthID=wpmPY.FiscalMonthID and CASE WHEN @targetType = 1 AND TimeClassID in (20,4,22) THEN fact.FiscalYearID-2 ELSE fact.FiscalYearID-1 END=wpmPY.FiscalYearID and wpmPY.WorkWeekID=jc.WorkWeekOverrideID
inner join fw.DimFiscalMonth fm on fact.FiscalMonthID=fm.FiscalMonthID
inner join [fw].[DimPayCodeGroup] pcg on fact.PayCodeGroupID = pcg.PayCodeGroupID
where
pcg.ProductiveClassID in ('3','2') --Productive and Non-Productive
and jc.WorkWeekOverrideID<>-1
and (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and fact.TimeClassID = @timeClassID
option (recompile)
END
GO
---------------------------------------------
-- fw.procFactPayrollSampledPayPeriodBaselineTargetOverridesUpdate
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2021-02-18 KF JAZZ-15158 Variable Productive Hours - Detailed Target Spread
*************************************************************/
CREATE PROCEDURE [fw].[procFactPayrollSampledPayPeriodBaselineTargetOverridesUpdate]
-- #PayrollSampledPayPeriodStaging should be created before calling this procedure
AS
IF OBJECT_ID('tempdb..#VariableHours') IS NOT NULL DROP TABLE #VariableHours
IF OBJECT_ID('tempdb..#Spreads') IS NOT NULL DROP TABLE #Spreads
DECLARE @ProductiveClassProductiveID INT = 3
SELECT FP.DepartmentID, FP.PayPeriodID, FP.JobCodeID, FP.PayCodeGroupID, CAST(FP.Hours AS decimal(21,6)) AS Hours, PT.VariableWorkedHoursPerUOS
INTO #VariableHours
FROM #PayrollSampledPayPeriodStaging FP
INNER JOIN fw.DimPayPeriod PP ON PP.PayPeriodID = FP.PayPeriodID
INNER JOIN clientpi.ProductivityTargetsByDepartment PT ON PT.FiscalYearID = PP.FiscalYearIDSecond AND PT.DepartmentID = FP.DepartmentID AND (PT.PeriodNumber = PP.PeriodNumber OR PT.PeriodNumber = 0)
LEFT JOIN
(
SELECT VO.DepartmentID, VO.JobCodeID, VO.PayCodeGroupID, CASE WHEN VO.Variability > 0 THEN 1 ELSE 0 END AS IsVariable
FROM ob.PayrollVariabilityOverrideCache VO
INNER JOIN fw.DimPayCodeGroup PCG ON PCG.PayCodeGroupID = VO.PayCodeGroupID
WHERE PCG.ProductiveClassID = @ProductiveClassProductiveID
) V1 ON V1.DepartmentID = FP.DepartmentID AND V1.JobCodeID = FP.JobCodeID AND V1.PayCodeGroupID = FP.PayCodeGroupID
LEFT JOIN
(
SELECT D.DepartmentID, JC.JobCodeID, PCG.PayCodeGroupID, 1 AS IsVariable
FROM fw.DimDepartment D
CROSS JOIN fw.DimJobCode JC
CROSS JOIN fw.DimPayCodeGroup PCG
WHERE D.IsVariable = 1 AND JC.IsVariable = 1 AND PCG.IsVariable = 1 AND PCG.ProductiveClassID = @ProductiveClassProductiveID
) V2 ON V2.DepartmentID = FP.DepartmentID AND V2.JobCodeID = FP.JobCodeID AND V2.PayCodeGroupID = FP.PayCodeGroupID
WHERE FP.TimeClassID = 20 AND COALESCE(V1.IsVariable, V2.IsVariable) = 1 AND (NOT (FP.IsSystemGenerated = 1 AND FP.Hours = 0))
SELECT VH.DepartmentID, VH.PayPeriodID, VH.JobCodeID, VH.PayCodeGroupID, (CASE WHEN D.IsZeroSum = 1 THEN 1.0 ELSE VH.Hours END)/D.Total AS Spread
INTO #Spreads
FROM #VariableHours VH
INNER JOIN
(
SELECT DepartmentID, PayPeriodID,
CASE WHEN SUM(Hours) = 0 THEN 1 ELSE 0 END AS IsZeroSum,
CASE WHEN SUM(Hours) = 0 THEN COUNT(1) ELSE SUM(Hours) END AS Total
FROM #VariableHours
GROUP BY DepartmentID, PayPeriodID
) D ON D.DepartmentID = VH.DepartmentID AND D.PayPeriodID = VH.PayPeriodID
UPDATE ST
SET Hours = S.Spread * VH.VariableWorkedHoursPerUOS * COALESCE(FS.Units, 0)
FROM #VariableHours VH
INNER JOIN #Spreads S ON S.DepartmentID = VH.DepartmentID AND S.PayPeriodID = VH.PayPeriodID AND S.JobCodeID = VH.JobCodeID AND S.PayCodeGroupID = VH.PayCodeGroupID
INNER JOIN #PayrollSampledPayPeriodStaging ST ON ST.DepartmentID = VH.DepartmentID AND ST.PayPeriodID = VH.PayPeriodID AND ST.JobCodeID = VH.JobCodeID AND ST.PayCodeGroupID = VH.PayCodeGroupID
LEFT JOIN
(
SELECT DepartmentID, PayPeriodID, SUM(Units) AS Units
FROM fw.viewPrimaryStatisticsStaffingByPayPeriod
WHERE TimeClassID = 20 AND IsDeleted = 0
GROUP BY DepartmentID, PayPeriodID
) FS ON FS.DepartmentID = VH.DepartmentID AND FS.PayPeriodID = VH.PayPeriodID
WHERE ST.TimeClassID = 20
IF OBJECT_ID('tempdb..#VariableHours') IS NOT NULL DROP TABLE #VariableHours
IF OBJECT_ID('tempdb..#Spreads') IS NOT NULL DROP TABLE #Spreads
GO
---------------------------------------------
-- fw.procFactPayrollSampledPayPeriodBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 2 2018-05-24 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 3 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 4 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 5 2019-08-20 vfay D-08311 PR Sampling Proc : removed filtering out 0 Value Rows
** 6 2024-01-30 KF JAZZ-66821 Run PR Process Task: Some procs don't support non-consecutive pay period id (expect consecutive pay period id). It causes wrong YTD values & wrong Rolling Average Baseline Target values
** 7 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
*************************************************************/
CREATE PROC [fw].[procFactPayrollSampledPayPeriodBaselineTargetUpdate]
@targetType tinyint = null,
@numberOfPayPeriods tinyint = null,
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0
as
if (@targetType is null) set @targetType = (select Value from pi.SystemSetting where Name = 'Target Basis')
if (@numberOfPayPeriods is null) set @numberOfPayPeriods = (select Value from pi.SystemSetting where Name = 'Number Of Rolling Average Pay Periods')
create table #departments (val int primary key)
insert into #departments select val from ConvertCSValuesToTable(@departmentIDs, ',')
create table #payperiods (val smallint primary key, PayCycleID int)
insert into #payperiods
select PayPeriodID, PayCycleID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID
create table #PayPeriodsPriorYear (val smallint primary key, PayCycleID int)
insert into #PayPeriodsPriorYear select PayPeriodID, PayCycleID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID-1
declare @sql varchar(max)
create table #temp
(
DepartmentID int,
JobCodeID int,
PayCodeGroupID int,
PayPeriodID smallint,
Hours decimal (18, 6),
Dollars decimal (18, 6)
)
if (@targetType = 10) begin --Rolling Average
IF OBJECT_ID('tempdb..#fullscope') IS NOT NULL DROP TABLE #fullscope
IF OBJECT_ID('tempdb..#tempSortedPayPeriods') IS NOT NULL DROP TABLE #tempSortedPayPeriods
select PayCycleID, PayPeriodID, SortOrder into #tempSortedPayPeriods from pi.viewPayPeriodsSortedInPayCycles
IF @fiscalYearID = 0 BEGIN
set @sql = '
insert into #temp (DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID,Hours,Dollars)
select DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID, isnull(Hours,0.0),isnull(Dollars,0.0)
FROM (
select FullScope.DepartmentID, FullScope.JobCodeID, FullScope.PayCodeGroupID, FullScope.PayPeriodID,
Dollars = ISNULL((SUM(Dollars) over(PARTITION BY DepartmentID, JobCodeID, PayCodeGroupID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfPayPeriods AS NVARCHAR(2)) +', 0),
Hours = ISNULL((SUM(Hours) over(PARTITION BY DepartmentID, JobCodeID, PayCodeGroupID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfPayPeriods AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID, /*records for months, which are absent in current year, but exist at least one month*/
SUM(Dollars) as Dollars,
SUM(Hours) as Hours
FROM (
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeGroupID, p.PayPeriodID,
p.Hours,
p.Dollars
FROM #PayrollSampledPayPeriodStaging p
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeGroupID, dpp.PayPeriodID,
0 AS Hours,
0 AS Dollars
FROM #PayrollSampledPayPeriodStaging p
inner join #tempSortedPayPeriods pp on pp.PayPeriodID = p.PayPeriodID
FULL join #tempSortedPayPeriods dpp on dpp.PayCycleID = pp.PayCycleID
where dpp.SortOrder - pp.SortOrder between 1 and '+cast(@numberOfPayPeriods as nvarchar(2))+'
and p.TimeClassID = 1 and p.isSystemGenerated = 0
) AllCombinations
GROUP BY DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID
) FullScope
inner join #tempSortedPayPeriods t on t.PayPeriodID = FullScope.PayPeriodID
) FinalDataset
WHERE (Dollars is not null
or Hours is not null)'
END
ELSE BEGIN -- @fiscalYearID != 0
IF OBJECT_ID('tempdb..#PayPeriodsAllScope') IS NOT NULL DROP TABLE #PayPeriodsAllScope
select * into #PayPeriodsAllScope from #payperiods
insert into #PayPeriodsAllScope
select pp.PayPeriodID, pp.PayCycleID
from fw.DimPayPeriod pp
inner join #tempSortedPayPeriods t on t.PayPeriodID = pp.PayPeriodID
inner join
(
select s.PayCycleID, MIN(s.SortOrder-@numberOfPayPeriods) as MinSortOrder, MIN(s.SortOrder -1) as MaxSortOrder
from #payperiods pp
inner join #tempSortedPayPeriods s on s.PayPeriodID = pp.val
group by s.PayCycleID
) r on r.PayCycleID = pp.PayCycleID and t.SortOrder between MinSortOrder and MaxSortOrder
set @sql = '
select C.DepartmentID, C.JobCodeID, C.PayCodeGroupID, C.PayPeriodID, /*records for months, which are absent in current year, but exist at least one month*/
SUM(C.Dollars) as Dollars,
SUM(C.Hours) as Hours
into #fullscope
FROM (
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeGroupID , p.PayPeriodID,
p.Hours,
p.Dollars
FROM #PayrollSampledPayPeriodStaging p /*table contains only this particular actuals (filtered by Depts, Year) no need for additional filters*/
where TimeClassID = 1 and isSystemGenerated = 0
UNION ALL
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeGroupID , p.PayPeriodID,
p.Hours,
p.Dollars
FROM fw.FactPayrollSampledPayPeriod p
inner join #PayPeriodsPriorYear pppy on p.PayPeriodID = pppy.val /*filtering only values for "prior year", in fact periods, which affects current year*/
'+ case when @departmentIDs IS NULL then '' else ' INNER JOIN #departments dpt on dpt.val = p.DepartmentID' end+'
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeGroupID, dpp.Val as PayPeriodID,
0 AS Hours,
0 AS Dollars
FROM #PayrollSampledPayPeriodStaging p
inner join fw.DimPayPeriod pp on pp.PayPeriodID = p.PayPeriodID
FULL join #PayPeriodsAllScope dpp on dpp.PayCycleID = pp.PayCycleID
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeGroupID, dpp.PayPeriodID,
0 AS Hours,
0 AS Dollars
FROM fw.FactPayrollSampledPayPeriodDetailed p
INNER JOIN #PayPeriodsPriorYear pppy on p.PayPeriodID = pppy.val /*filtering only values for "prior year", in fact periods, which affects current year*/
INNER JOIN fw.DimPayPeriod dpp ON dpp.PayCycleID = pppy.PayCycleID
'+ case when @departmentIDs IS NULL then '' else ' INNER JOIN #departments dpt on dpt.val = p.DepartmentID' end
+' where p.TimeClassID = 1 and p.isSystemGenerated = 0
) C
inner join #PayPeriodsAllScope P on p.val = C.PayPeriodID
GROUP BY C.DepartmentID, C.JobCodeID, C.PayCodeGroupID, C.PayPeriodID
insert into #temp (DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID,Hours,Dollars)
select DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID, isnull(Hours,0.0),isnull(Dollars,0.0)
FROM
(
select f.DepartmentID, f.JobCodeID, f.PayCodeGroupID, f.PayPeriodID,
Dollars = ISNULL((SUM(f.Dollars) over(PARTITION BY f.DepartmentID, f.JobCodeID, f.PayCodeGroupID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfPayPeriods AS NVARCHAR(2)) +', 0),
Hours = ISNULL((SUM(f.Hours) over(PARTITION BY f.DepartmentID, f.JobCodeID, f.PayCodeGroupID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfPayPeriods AS NVARCHAR(2)) +', 0)
FROM #fullscope f
inner join #tempSortedPayPeriods t on t.PayPeriodID = f.PayPeriodID
) FinalDataset
INNER JOIN #PayPeriods PP on pp.Val = FinalDataset.PayPeriodID
WHERE (Dollars is not null
or Hours is not null)'
END
exec(@sql)
IF OBJECT_ID('tempdb..#fullscope') IS NOT NULL DROP TABLE #fullscope
end else begin --Budget
insert into #temp
(DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID, Hours ,Dollars)
select DepartmentID, JobCodeID, PayCodeGroupID, PayPeriodID, isnull(Hours,0.0),isnull(Dollars,0.0)
from #PayrollSampledPayPeriodStaging
where TimeClassID = 2 and (@departmentIDs is null or DepartmentID in (select val from #departments)) and (@fiscalYearID = 0 or PayPeriodID in(select val from #payperiods))
end
insert into #PayrollSampledPayPeriodStaging (DepartmentID, JobCodeID, PayPeriodID, PayCodeGroupID, TimeClassID, Hours,Dollars,HoursYTD,HoursPriorYear,HoursPriorYTD,DollarsYTD,DollarsPriorYear,DollarsPriorYTD,FTEs,FTEsYTD,FTEsPriorYear,FTEsPriorYTD, isSystemGenerated)
SELECT DepartmentID, JobCodeID, PayPeriodID, PayCodeGroupID, 20 as TimeClassID, Hours,Dollars,0 as HoursYTD,0 as HoursPriorYear,0 as HoursPriorYTD,0 as DollarsYTD,0 as DollarsPriorYear,0 as DollarsPriorYTD,0 as FTEs,0 as FTEsYTD,0 as FTEsPriorYear,0 as FTEsPriorYTD, 0 as isSystemGenerated from #temp
where (@fiscalYearID = 0 or PayPeriodID in(select val from #payperiods))
drop table #temp
drop table #departments
IF OBJECT_ID('tempdb..#PayPeriodsAllScope') IS NOT NULL DROP TABLE #PayPeriodsAllScope
IF OBJECT_ID('tempdb..#tempSortedPayPeriods') IS NOT NULL DROP TABLE #tempSortedPayPeriods;
GO
---------------------------------------------
-- fw.procFactPayrollSampledPayPeriodDetailedBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 2 2018-05-16 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 3 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 4 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 5 2019-08-23 vfay D-08311 PR Sampling Proc : removed filtering out 0 Value Rows
** 6 2024-01-30 KF JAZZ-66821 Run PR Process Task: Some procs don't support non-consecutive pay period id (expect consecutive pay period id). It causes wrong YTD values & wrong Rolling Average Baseline Target values
** 7 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
*************************************************************/
CREATE proc [fw].[procFactPayrollSampledPayPeriodDetailedBaselineTargetUpdate]
@targetType tinyint = null,
@numberOfPayPeriods tinyint = null,
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0
with recompile
as
if (@targetType is null) set @targetType = (select Value from pi.SystemSetting where Name = 'Target Basis')
if (@numberOfPayPeriods is null) set @numberOfPayPeriods = (select Value from pi.SystemSetting where Name = 'Number Of Rolling Average Pay Periods')
create table #departments (val int primary key)
insert into #departments select val from ConvertCSValuesToTable(@departmentIDs, ',')
create table #payperiods (val smallint primary key, PayCycleID int)
insert into #payperiods
select PayPeriodID, PayCycleID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID
create table #PayPeriodsPriorYear (val smallint primary key, PayCycleID int)
insert into #PayPeriodsPriorYear select PayPeriodID, PayCycleID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID-1
declare @sql varchar(max)
create table #temp
(
DepartmentID int,
JobCodeID int,
PayCodeID int,
PayCodeGroupID int,
EmployeeID int,
PayPeriodID smallint,
Hours decimal (18, 6),
Dollars decimal (18, 6)
)
if (@targetType = 10) begin --Rolling Average
IF OBJECT_ID('tempdb..#fullscope') IS NOT NULL DROP TABLE #fullscope
IF OBJECT_ID('tempdb..#tempSortedPayPeriods') IS NOT NULL DROP TABLE #tempSortedPayPeriods
select PayCycleID, PayPeriodID, SortOrder into #tempSortedPayPeriods from pi.viewPayPeriodsSortedInPayCycles
IF @fiscalYearID = 0 BEGIN
set @sql = '
insert into #temp (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, Hours, Dollars)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, isnull(Hours,0.0),isnull(Dollars,0.0)
FROM (
select FullScope.DepartmentID, FullScope.JobCodeID, FullScope.PayCodeID, FullScope.PayCodeGroupID, FullScope.EmployeeId, FullScope.PayPeriodID,
Dollars = ISNULL((Sum(Dollars) over(PARTITION BY DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfPayPeriods as nvarchar(2))+', 0),
Hours = ISNULL((Sum(Hours) over(PARTITION BY DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfPayPeriods as nvarchar(2))+', 0)
FROM (
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, /*records for months, which are absent in current year, but exist at least one month*/
SUM(Dollars) as Dollars,
SUM(Hours) as Hours
FROM (
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeID, p.PayCodeGroupID, p.EmployeeID, p.PayPeriodID,
p.Hours,
p.Dollars
FROM #PayrollSampledPayPeriodDetailedStaging p
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.JobCodeID, p.PayCodeID, p.PayCodeGroupID, p.EmployeeID, dpp.PayPeriodID,
0 AS Hours,
0 AS Dollars
FROM #PayrollSampledPayPeriodDetailedStaging p
inner join #tempSortedPayPeriods pp on pp.PayPeriodID = p.PayPeriodID
FULL join #tempSortedPayPeriods dpp on dpp.PayCycleID = pp.PayCycleID
where dpp.SortOrder - pp.SortOrder between 1 and '+cast(@numberOfPayPeriods as nvarchar(2))+'
and p.TimeClassID = 1 and p.isSystemGenerated = 0
) AllCombinations
GROUP BY DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, PayPeriodID, EmployeeID
) FullScope
inner join #tempSortedPayPeriods t on t.PayPeriodID = FullScope.PayPeriodID
) FinalDataset
WHERE (Dollars is not null
or Hours is not null)'
end
ELSE BEGIN -- @fiscalYearID != 0
IF OBJECT_ID('tempdb..#PayPeriodsAllScope') IS NOT NULL DROP TABLE #PayPeriodsAllScope
select * into #PayPeriodsAllScope from #payperiods
insert into #PayPeriodsAllScope
select pp.PayPeriodID, pp.PayCycleID
from fw.DimPayPeriod pp
inner join #tempSortedPayPeriods t on t.PayPeriodID = pp.PayPeriodID
inner join
(
select s.PayCycleID, MIN(s.SortOrder-@numberOfPayPeriods) as MinSortOrder, MIN(s.SortOrder -1) as MaxSortOrder
from #payperiods pp
inner join #tempSortedPayPeriods s on s.PayPeriodID = pp.val
group by s.PayCycleID
) r on r.PayCycleID = pp.PayCycleID and t.SortOrder between MinSortOrder and MaxSortOrder
set @sql = '
select C.DepartmentID, C.JobCodeID, C.PayCodeID, C.PayCodeGroupID, C.EmployeeID, C.PayPeriodID, /*records for months, which are absent in current year, but exist at least one month*/
SUM(C.Dollars) as Dollars,
SUM(C.Hours) as Hours
into #fullscope
FROM (
SELECT
p.DepartmentID, p.JobCodeID, p.PayCodeID, p.PayCodeGroupID , EmployeeID, p.PayPeriodID,
p.Hours,
p.Dollars
FROM #PayrollSampledPayPeriodDetailedStaging p /*table contains only this particular actuals (filtered by Depts, Year) no need for additional filters*/
where TimeClassID = 1 and isSystemGenerated = 0
UNION ALL
SELECT
p.DepartmentID, p.JobCodeID, p.PayCodeID, p.PayCodeGroupID, p.EmployeeID, p.PayPeriodID,
Hours,
Dollars
FROM fw.FactPayrollSampledPayPeriodDetailed p
inner join #PayPeriodsPriorYear pppy on p.PayPeriodID = pppy.val /*filtering only values for "prior year", in fact periods, which affects current year*/
'+ case when @departmentIDs IS NULL then '' else ' INNER JOIN #departments dpt on dpt.val = p.DepartmentID' end+'
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT
p.DepartmentID, p.JobCodeID, p.PayCodeID, p.PayCodeGroupID, EmployeeID ,dpp.Val as PayPeriodID,
0 AS Hours,
0 AS Dollars
FROM #PayrollSampledPayPeriodDetailedStaging p
inner join fw.DimPayPeriod pp on pp.PayPeriodID = p.PayPeriodID
FULL join #PayPeriodsAllScope dpp on dpp.PayCycleID = pp.PayCycleID
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT
p.DepartmentID, p.JobCodeID, p.PayCodeID, p.PayCodeGroupID, p.EmployeeID, dpp.PayPeriodID,
0 AS Hours,
0 AS Dollars
FROM fw.FactPayrollSampledPayPeriodDetailed p
INNER JOIN #PayPeriodsPriorYear pppy on p.PayPeriodID = pppy.val /*filtering only values for "prior year", in fact periods, which affects current year*/
INNER JOIN fw.DimPayPeriod dpp ON dpp.PayCycleID = pppy.PayCycleID
'+ case when @departmentIDs IS NULL then '' else ' INNER JOIN #departments dpt on dpt.val = p.DepartmentID' end
+' where p.TimeClassID = 1 and p.isSystemGenerated = 0
) C
inner join #PayPeriodsAllScope P on p.val = C.PayPeriodID
GROUP BY C.DepartmentID, C.JobCodeID, C.PayCodeID, C.PayCodeGroupID, C.EmployeeID, C.PayPeriodID
insert into #temp (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, Hours, Dollars)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, isnull(Hours,0.0), isnull(Dollars,0.0)
FROM (
select f.DepartmentID, f.JobCodeID, f.PayCodeID, f.PayCodeGroupID, f.EmployeeID, f.PayPeriodID,
Dollars = ISNULL((Sum(f.Dollars) over(PARTITION BY f.DepartmentID, f.JobCodeID, f.PayCodeID, f.PayCodeGroupID, f.EmployeeID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfPayPeriods as nvarchar(2))+', 0),
Hours = ISNULL((Sum(f.Hours) over(PARTITION BY f.DepartmentID, f.JobCodeID, f.PayCodeID, f.PayCodeGroupID, f.EmployeeID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfPayPeriods as nvarchar(2))+', 0)
FROM #fullscope f
inner join #tempSortedPayPeriods t on t.PayPeriodID = f.PayPeriodID
) FinalDataset
INNER JOIN #PayPeriods PP on pp.Val = FinalDataset.PayPeriodID
WHERE (Dollars is not null
or Hours is not null)'
END
exec(@sql)
IF OBJECT_ID('tempdb..#fullscope') IS NOT NULL DROP TABLE #fullscope
end else begin --Budget
insert into #temp
(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, Hours ,Dollars)
select DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, isnull(Hours,0.0),isnull(Dollars,0.0)
from #PayrollSampledPayPeriodDetailedStaging
where TimeClassID = 2 and (@departmentIDs is null or DepartmentID in (select val from #departments)) and (@fiscalYearID = 0 or PayPeriodID in(select val from #payperiods))
end
insert into #PayrollSampledPayPeriodDetailedStaging (DepartmentID, JobCodeID, PayPeriodID, PayCodeGroupID, PayCodeID, EmployeeID, TimeClassID, Hours, Dollars)
SELECT DepartmentID, JobCodeID, PayPeriodID, PayCodeGroupID, PayCodeID, EmployeeID, 20 as TimeClassID, Hours, Dollars from #temp
where (@fiscalYearID = 0 or PayPeriodID in(select val from #payperiods))
drop table #temp
drop table #departments
drop table #payperiods
IF OBJECT_ID('tempdb..#PayPeriodsAllScope') IS NOT NULL DROP TABLE #PayPeriodsAllScope
IF OBJECT_ID('tempdb..#tempSortedPayPeriods') IS NOT NULL DROP TABLE #tempSortedPayPeriods;
GO
---------------------------------------------
-- fw.procFactProviderSampledBaselineTargetUpdate
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-06-27 KF B-20195 MR - Provider calculate baseline target
** 2 2018-07-24 KF B-20342 MR - Update provider sampling to be in the appropriate format
*************************************************************/
CREATE PROCEDURE [fw].[procFactProviderSampledBaselineTargetUpdate]
@fiscalYearID INT = 0
AS
CREATE TABLE #temp
(
DepartmentID INT,
ProviderID INT,
FiscalYearID INT,
FiscalMonthID INT,
OBForecastDetailID INT,
Dollars DECIMAL(18,6),
Hours DECIMAL(18,6),
Volume DECIMAL(18,6),
FTEs DECIMAL(18,6)
)
--DECLARE @maxCalculatingFiscalYear INT = (SELECT MAX(FiscalYearID) FROM #ProviderSampledStaging)
--TODO: if Prior Year YTD/Rolling Average types are added, @targetType initialization should be changed in proc client.procFactProviderSampledMonthlyFTEsInsert based on mr.SystemSetting
--Budget
INSERT INTO #temp
SELECT DepartmentID, ProviderID, FiscalYearID, FiscalMonthID, OBForecastDetailID, Dollars, Hours, Volume, FTEs
FROM #ProviderSampledStaging
WHERE TimeClassID = 2
AND (FiscalYearID = @FiscalYearID OR @FiscalYearID = 0)
DELETE FROM #ProviderSampledStaging WHERE TimeClassID = 20 and (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
INSERT INTO #ProviderSampledStaging (DepartmentID, ProviderID, FiscalYearID, FiscalMonthID, TimeClassID, OBForecastDetailID, Dollars, Hours, Volume, FTEs)
SELECT source.DepartmentID, source.ProviderID, source.FiscalYearID, source.FiscalMonthID, 20, source.OBForecastDetailID, source.Dollars, source.Hours, source.Volume, source.FTEs FROM #temp source
WHERE NOT(Dollars = 0 AND Hours = 0 AND Volume = 0 AND FTEs = 0)
DROP TABLE #temp
GO
---------------------------------------------
-- fw.procFactRoleAssignmentImportSample
CREATE proc [fw].[procFactRoleAssignmentImportSample]
as
declare @rowID int
declare @userGUID uniqueidentifier
declare @roleID smallint
declare @lootID nvarchar(16)
declare crsRoleImport cursor fast_forward for select RowID, UserGUID, RoleID, LootGroupID from client.viewFactRoleAssignmentImport
open crsRoleImport
fetch next from crsRoleImport into @rowID, @userGUID, @roleID, @lootID
while(@@FETCH_STATUS = 0) begin
exec procS3AssignIdentityToRole @userGUID, @roleID, @lootID
update client.FactRoleAssignmentImport set ImportDate = GETDATE() where RowID = @rowID and SampleDate = '01/01/1900'
fetch next from crsRoleImport into @rowID, @userGUID, @roleID, @lootID
end
close crsRoleImport
deallocate crsRoleImport
GO
---------------------------------------------
-- fw.procFactStatisticPrimarySampledBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-03-06 gforeman B-14693 Added year filter
** 2 2017-03-28 ipetriv D-05641 Logic for Prior and Actual was changed to simply copy actuals from previous year
** 3 2017-04-05 ipetriv D-05789 Changed algorithm for rolling average calculation
** 4 2017-05-24 IPetriv B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactStatisticPrimarySampledMonthly.
** 5 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 6 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 7 2018-05-16 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 8 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 9 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
*************************************************************/
CREATE proc [fw].[procFactStatisticPrimarySampledBaselineTargetUpdate]
@targetType int = null,
@numberOfMonths int = null,
@fiscalYearID int = 0
as
if (@targetType is null) set @targetType = (select Value from mr.SystemSetting where Name = 'Target Basis')
if (@numberOfMonths is null) set @numberOfMonths = (select Value from mr.SystemSetting where Name = 'Number Of Rolling Average Months')
declare @sql varchar(max)
declare @maxCalculatingFiscalYear int = (select max(FiscalYearID) from #StatisticPrimarySampledStaging)
create table #temp
(
DepartmentID int,
AccountID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
Amount decimal (19, 4)
)
if (@targetType = 1) begin --Prior Year Actual
if @fiscalYearID <> 0
insert into #temp
select d.DepartmentID, d.AccountID, d.FiscalYearID+1, d.FiscalMonthID, d.Amount
from fw.FactStatisticPrimarySampledMonthly d WHERE d.TimeClassID = 1 and d.FiscalYearID = @fiscalYearID-1
else
insert into #temp
select d.DepartmentID, d.AccountID, d.FiscalYearID+1, d.FiscalMonthID, d.Amount
from #StatisticPrimarySampledStaging d WHERE d.TimeClassID = 1
end else if (@targetType = 10) begin --Rolling Average
IF @fiscalYearID = 0
set @sql = '
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID,isnull(Amount,0.0) FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.FiscalYearID, m.FiscalMonthID,
Amount = ISNULL((Sum(Amount) over(PARTITION BY DepartmentID,AccountID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
AccountID,
FiscalYearID,
SortOrder,
SUM(Amount) as Amount
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM #StatisticPrimarySampledStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*combination of all for key columns months which were present in prior year*/
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
m.SortOrder,
0 AS Amount
FROM #StatisticPrimarySampledStaging p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN (select FiscalYearID
from fw.DimFiscalYear dm
) fy
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
) AllCombinations
GROUP BY DepartmentID,AccountID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Amount is not null
AND FiscalYearID <='+cast(@maxCalculatingFiscalYear as nvarchar(4))
ELSE
SET @sql = '
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID,isnull(Amount,0.0) FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.FiscalYearID, m.FiscalMonthID,
Amount = ISNULL((Sum(Amount) over(PARTITION BY DepartmentID,AccountID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
AccountID,
FiscalYearID,
SortOrder,
SUM(Amount) as Amount
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM #StatisticPrimarySampledStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*recods with amounts from previous year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM fw.FactStatisticPrimarySampledMonthly p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
and FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4)) +'
UNION ALL
SELECT /*combination of all for key columns months for current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
0 AS Amount
FROM #StatisticPrimarySampledStaging p
CROSS APPLY fw.DimFiscalMonth m
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*combination of all for key columns months which were present in prior year*/
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
m.SortOrder,
0 AS Amount
FROM fw.FactStatisticPrimarySampledMonthly p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN (select FiscalYearID
from fw.DimFiscalYear dm
where FiscalYearID in ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')'+'
) fy
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0 and p.FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4)) +'
) AllCombinations
GROUP BY DepartmentID,AccountID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Amount is not null
AND FiscalYearID ='+cast(@fiscalYearID as nvarchar(4))
exec (@sql)
end else begin --Budget
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Amount
from #StatisticPrimarySampledStaging
where TimeClassID = 2 and (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID)
end
insert into #StatisticPrimarySampledStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount)
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID, 20, Amount from #temp
where (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID) and Amount !=0
drop table #temp
GO
---------------------------------------------
-- fw.procFactStatisticSampledBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-03-06 gforeman B-14693 Added year filter
** 2 2017-03-28 ipetriv D-05641 Logic for Prior and Actual was changed to simply copy actuals from previous year
** 3 2017-04-05 ipetriv D-05789 Changed algorithm for rolling average calculation
** 4 2017-05-24 IPetriv B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactPayrollSampledMonthlyDetailed.
** 5 2017-06-07 IPetriv B-15086 Fixed after integration test fails
** 6 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 7 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 8 2018-05-16 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 9 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 10 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
*************************************************************/
CREATE proc [fw].[procFactStatisticSampledBaselineTargetUpdate]
@targetType int = null,
@numberOfMonths int = null,
@fiscalYearID int = 0
with recompile
as
if (@targetType is null) set @targetType = (select Value from mr.SystemSetting where Name = 'Target Basis')
if (@numberOfMonths is null) set @numberOfMonths = (select Value from mr.SystemSetting where Name = 'Number Of Rolling Average Months')
declare @sql varchar(max)
declare @maxCalculatingFiscalYear int = (select max(FiscalYearID) from #StatisticSampledMonthlyStaging)
create table #temp
(
DepartmentID int,
AccountID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
Amount decimal (18, 6)
)
if (@targetType = 1) begin --Prior Year Actual
if @fiscalYearID <> 0
insert into #temp
select d.DepartmentID, d.AccountID, d.FiscalYearID+1, d.FiscalMonthID, d.Amount
from fw.FactStatisticSampledMonthly d where d.TimeClassID = 1 and d.FiscalYearID = @fiscalYearID-1
else
insert into #temp
select d.DepartmentID, d.AccountID, d.FiscalYearID+1, d.FiscalMonthID, d.Amount
from #StatisticSampledMonthlyStaging d where d.TimeClassID = 1
end else if (@targetType = 10) begin --Rolling Average
IF @fiscalYearID = 0
set @sql = '
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID,isnull(Amount,0.0) FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.FiscalYearID, m.FiscalMonthID,
Amount = ISNULL((Sum(Amount) over(PARTITION BY DepartmentID,AccountID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
AccountID,
FiscalYearID,
SortOrder,
SUM(Amount) as Amount
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM #StatisticSampledMonthlyStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
fy.SortOrder,
0 AS Amount
FROM #StatisticSampledMonthlyStaging p
INNER JOIN fw.DimFiscalMonth m on m.FiscalMonthID = p.FiscalMonthID
INNER JOIN (select FiscalYearID,FiscalMonthID,fm.sortOrder,fy.FiscalYearID*12+fm.SortOrder as ChronologicalOrder from fw.DimFiscalYear fy
full join fw.DimFiscalMonth fm on 1= 1
where FiscalMonthID <> 0 and FiscalYearID <> 0) fy ON ChronologicalOrder - (p.FiscalYearID*12+m.SortOrder) between 1 and '+cast(@numberOfMonths as nvarchar(2))+'
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
) AllCombinations
GROUP BY DepartmentID,AccountID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Amount is not null
AND FiscalYearID <='+cast(@maxCalculatingFiscalYear as nvarchar(4))
ELSE
set @sql = '
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID,isnull(Amount,0.0) FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.FiscalYearID, m.FiscalMonthID,
Amount = ISNULL((Sum(Amount) over(PARTITION BY DepartmentID,AccountID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
AccountID,
FiscalYearID,
SortOrder,
SUM(Amount) as Amount
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM #StatisticSampledMonthlyStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(isSystemGenerated,0) = 0
UNION ALL
SELECT /*recods with amounts from previous year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM fw.FactStatisticSampledMonthly p
INNER JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(isSystemGenerated,0) = 0
and FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4)) +'
UNION ALL
SELECT /*combination of all for key columns months for current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
0 AS Amount
FROM #StatisticSampledMonthlyStaging p
CROSS APPLY fw.DimFiscalMonth m
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
m.SortOrder,
0 AS Amount
FROM fw.FactStatisticSampledMonthly p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN (select FiscalYearID
from fw.DimFiscalYear dm
where FiscalYearID in ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')'+'
) fy
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0 and p.FiscalYearID ='+cast(@fiscalYearID-1 as nvarchar(4))+'
) AllCombinations
GROUP BY DepartmentID,AccountID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Amount is not null
AND FiscalYearID ='+cast(@fiscalYearID as nvarchar(4))
exec (@sql)
end else begin --Budget
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Amount
from #StatisticSampledMonthlyStaging
where TimeClassID = 2 and (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID)
end
insert into #StatisticSampledMonthlyStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount, isSystemGenerated)
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID, 20, Amount, 0 as isSystemGenerated from #temp
WHERE (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID) and Amount !=0
drop table #temp
GO
---------------------------------------------
-- fw.procFactStatisticSampledPayPeriodBaselineTargetUpdate
/************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-02-08 GJF B-14308 Added year filter
** 2 2017-04-05 ipetriv D-05789 Changed algorithm for rolling average calculation
** 3 2017-05-29 ipetriv B-15994 Refactored sampling process and implemented using of staging tables
** 4 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 5 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 6 2018-05-16 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 7 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 8 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 9 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
** 10 2020-07-30 HV JAZZ-2302 YTD PR Calculations Incorrect when Processing Current Year Only
** 11 2024-01-30 KF JAZZ-66821 Run PR Process Task: Some procs don't support non-consecutive pay period id (expect consecutive pay period id). It causes wrong YTD values & wrong Rolling Average Baseline Target values
*************************************************************/
CREATE PROCEDURE [fw].[procFactStatisticSampledPayPeriodBaselineTargetUpdate]
@targetType tinyint = null,
@numberOfPayPeriods tinyint = null,
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0
with recompile
as
if (@targetType is null) set @targetType = (select Value from pi.SystemSetting where Name = 'Target Basis')
if (@numberOfPayPeriods is null) set @numberOfPayPeriods = (select Value from pi.SystemSetting where Name = 'Number Of Rolling Average Pay Periods')
declare @sql varchar(max)
create table #departments (val int primary key)
insert into #departments select val from ConvertCSValuesToTable(@departmentIDs, ',')
create table #payperiods(val smallint primary key, PayCycleID int)
insert into #payperiods select PayPeriodID, PayCycleID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID
create table #PayPeriodsPriorYear (val smallint primary key, PayCycleID int)
insert into #PayPeriodsPriorYear select PayPeriodID, PayCycleID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID-1
create table #temp
(
DepartmentID int,
AccountID int,
PayPeriodID smallint,
Units decimal (18, 6)
)
if (@targetType = 10) begin --Rolling Average
IF OBJECT_ID('tempdb..#fullscope') IS NOT NULL DROP TABLE #fullscope
IF OBJECT_ID('tempdb..#tempSortedPayPeriods') IS NOT NULL DROP TABLE #tempSortedPayPeriods
SELECT PayCycleID, PayPeriodID, SortOrder INTO #tempSortedPayPeriods FROM pi.viewPayPeriodsSortedInPayCycles
IF @fiscalYearID = 0 BEGIN
set @sql = '
insert into #temp (DepartmentID, AccountID, PayPeriodID, Units)
select DepartmentID, AccountID, PayPeriodID, isnull(Units,0.0)
FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.PayPeriodID,
Units = ISNULL((Sum(Units) over(PARTITION BY DepartmentID, AccountID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfPayPeriods as nvarchar(2))+', 0)
FROM
(
select DepartmentID, AccountID, PayPeriodID, /*records for months, which are absent in current year, but exist at least one month*/
SUM(Units) as Units
FROM (
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.AccountID, p.PayPeriodID,
p.Units
FROM #StatisticSampledPayPeriod p
where TimeClassID = 1 and isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.AccountID, dpp.PayPeriodID,
0 AS Units
FROM #StatisticSampledPayPeriod p
inner join #tempSortedPayPeriods pp on pp.PayPeriodID = p.PayPeriodID
FULL join #tempSortedPayPeriods dpp on dpp.PayCycleID = pp.PayCycleID
where dpp.SortOrder - pp.SortOrder between 1 and '+cast(@numberOfPayPeriods as nvarchar(2))+'
and p.TimeClassID = 1 and p.isSystemGenerated = 0
) AllCombinations
GROUP BY DepartmentID, AccountID, PayPeriodID
) FullScope
inner join #tempSortedPayPeriods t on t.PayPeriodID = FullScope.PayPeriodID
) FinalDataset
WHERE Units is not null'
END
ELSE BEGIN -- @fiscalYearID != 0
IF OBJECT_ID('tempdb..#PayPeriodsAllScope') IS NOT NULL DROP TABLE #PayPeriodsAllScope
select * into #PayPeriodsAllScope from #payperiods
insert into #PayPeriodsAllScope
select pp.PayPeriodID, pp.PayCycleID
from fw.DimPayPeriod pp
inner join #tempSortedPayPeriods t on t.PayPeriodID = pp.PayPeriodID
inner join
(
select s.PayCycleID, MIN(s.SortOrder-@numberOfPayPeriods) as MinSortOrder, MIN(s.SortOrder -1) as MaxSortOrder
from #payperiods pp
inner join #tempSortedPayPeriods s on s.PayPeriodID = pp.val
group by s.PayCycleID
) r on r.PayCycleID = pp.PayCycleID and t.SortOrder between MinSortOrder and MaxSortOrder
set @sql = '
select C.DepartmentID, C.AccountID, C.PayPeriodID, /*records for months, which are absent in current year, but exist at least one month*/
SUM(C.Units) as Units
into #fullscope
FROM (
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.AccountID, p.PayPeriodID,
p.Units
FROM #StatisticSampledPayPeriod p /*table contains only this particular actuals (filtered by Depts, Year) no need for additional filters*/
where TimeClassID = 1 and isSystemGenerated = 0
UNION ALL
SELECT /*recods for months which are present in current year*/
p.DepartmentID, p.AccountID, p.PayPeriodID,
p.Units
FROM fw.FactStatisticSampledPayPeriod p
inner join #PayPeriodsPriorYear pppy on p.PayPeriodID = pppy.val /*filtering only values for "prior year", in fact periods, which affects current year*/
'+ case when @departmentIDs IS NULL then '' else ' INNER JOIN #departments dpt on dpt.val = p.DepartmentID' end+'
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.AccountID, dpp.val as PayPeriodID,
0 AS Units
FROM #StatisticSampledPayPeriod p
inner join fw.DimPayPeriod pp on pp.PayPeriodID = p.PayPeriodID
FULL join #PayPeriodsAllScope dpp on dpp.PayCycleID = pp.PayCycleID
where p.TimeClassID = 1 and p.isSystemGenerated = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID, p.AccountID, dpp.PayPeriodID,
0 AS Units
FROM fw.FactStatisticSampledPayPeriod p
INNER JOIN #PayPeriodsPriorYear pppy on p.PayPeriodID = pppy.val /*filtering only values for "prior year", in fact periods, which affects current year*/
INNER JOIN fw.DimPayPeriod dpp ON dpp.PayCycleID = pppy.PayCycleID
'+ case when @departmentIDs IS NULL then '' else ' INNER JOIN #departments dpt on dpt.val = p.DepartmentID' end
+' where p.TimeClassID = 1 and p.isSystemGenerated = 0
) C
inner join #PayPeriodsAllScope P on p.val = C.PayPeriodID
GROUP BY C.DepartmentID, C.AccountID, C.PayPeriodID
insert into #temp (DepartmentID, AccountID, PayPeriodID, Units)
select DepartmentID, AccountID, PayPeriodID, isnull(Units,0.0)
FROM
(
select f.DepartmentID, f.AccountID, f.PayPeriodID,
Units = ISNULL((Sum(f.Units) over(PARTITION BY f.DepartmentID, f.AccountID, t.PayCycleID ORDER BY t.SortOrder ROWS BETWEEN '+cast(@numberOfPayPeriods as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/'+cast(@numberOfPayPeriods as nvarchar(2))+', 0)
FROM #fullscope f
inner join #tempSortedPayPeriods t on t.PayPeriodID = f.PayPeriodID
) FinalDataset
INNER JOIN #PayPeriods PP on pp.Val = FinalDataset.PayPeriodID
WHERE Units is not null'
END
exec(@sql)
IF OBJECT_ID('tempdb..#fullscope') IS NOT NULL DROP TABLE #fullscope
end else begin --Budget
insert into #temp (DepartmentID, AccountID, PayPeriodID, Units)
select DepartmentID, AccountID, PayPeriodID, Units
from #StatisticSampledPayPeriod
where TimeClassID = 2 and (@departmentIDs is null or DepartmentID in (select val from #departments)) and (@fiscalYearID = 0 or PayPeriodID in(select val from #payperiods))
end
insert into #StatisticSampledPayPeriod (DepartmentID, AccountID,PayPeriodID, TimeClassID, Units)
select source.DepartmentID, source.AccountID, source.PayPeriodID, 20, source.Units from #temp source
where (@fiscalYearID = 0 or PayPeriodID in(select val from #payperiods)) and Units !=0
drop table #temp
drop table #departments
drop table #payperiods
drop table #PayPeriodsPriorYear
IF OBJECT_ID('tempdb..#PayPeriodsAllScope') IS NOT NULL DROP TABLE #PayPeriodsAllScope
IF OBJECT_ID('tempdb..#tempSortedPayPeriods') IS NOT NULL DROP TABLE #tempSortedPayPeriods
GO
---------------------------------------------
-- fw.procFactStatisticSecondarySampledBaselineTargetUpdate
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-03-07 gforeman B-14693 Added year filter
** 2 2017-03-28 ipetriv D-05641 Logic for Prior and Actual was changed to simply copy actuals from previous year
** 3 2017-04-05 ipetriv D-05789 Changed algorithm for rolling average calculation
** 4 2017-05-29 ipetriv B-15994 Refactored sampling process and implemented using of staging tables
** 5 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 6 2017-07-20 IP D-06150 Fixed updating values for Target Type = 2
** 7 2018-05-16 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 8 2018-05-16 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 9 2018-06-01 IP D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values (one year part)
** 10 2018-06-05 IP TK-58643 added filetr for current year only and non-zero records in output
*************************************************************/
CREATE proc [fw].[procFactStatisticSecondarySampledBaselineTargetUpdate]
@targetType int = null,
@numberOfMonths int = null,
@fiscalYearID int = 0
as
if (@targetType is null) set @targetType = (select Value from mr.SystemSetting where Name = 'Target Basis')
if (@numberOfMonths is null) set @numberOfMonths = (select Value from mr.SystemSetting where Name = 'Number Of Rolling Average Months')
declare @sql varchar(max)
declare @maxCalculatingFiscalYear int = (select max(FiscalYearID) from #StatisticSecondarySampledMonthlyStaging)
create table #temp
(
DepartmentID int,
AccountID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
Amount decimal (19, 4)
)
if (@targetType = 1) begin --Prior Year Actual
insert into #temp
select d.DepartmentID, d.AccountID, d.FiscalYearID+1, d.FiscalMonthID, d.Amount
from fw.FactStatisticSecondarySampledMonthly d where d.TimeClassID = 1 and (@fiscalYearID = 0 or d.FiscalYearID = @fiscalYearID-1)
end else if (@targetType = 10) begin --Rolling Average
IF @fiscalYearID = 0
set @sql = '
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID,isnull(Amount,0.0) FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.FiscalYearID, m.FiscalMonthID,
Amount = ISNULL((Sum(Amount) over(PARTITION BY DepartmentID,AccountID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
AccountID,
FiscalYearID,
SortOrder,
SUM(Amount) as Amount
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM #StatisticSecondarySampledMonthlyStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
m.SortOrder,
0 AS Amount
FROM #StatisticSecondarySampledMonthlyStaging p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN (select FiscalYearID from fw.DimFiscalYear dm) fy
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
) AllCombinations
GROUP BY DepartmentID,AccountID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Amount is not null
AND FiscalYearID <='+cast(@maxCalculatingFiscalYear as nvarchar(4))
ELSE
SET @sql = '
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID,isnull(Amount,0.0) FROM (
select FullScope.DepartmentID, FullScope.AccountID, FullScope.FiscalYearID, m.FiscalMonthID,
Amount = ISNULL((Sum(Amount) over(PARTITION BY DepartmentID,AccountID ORDER BY FiscalYearID*12+m.SortOrder ROWS BETWEEN '+cast(@numberOfMonths as nvarchar(2))+' PRECEDING AND 1 PRECEDING))/' + cast(@numberOfMonths AS NVARCHAR(2)) +', 0)
FROM (
select DepartmentID, /*records for months, which are absent in current year, but exist at least one month*/
AccountID,
FiscalYearID,
SortOrder,
SUM(Amount) as Amount
FROM (
SELECT /*recods for months which are present in current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM #StatisticSecondarySampledMonthlyStaging p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
UNION ALL
SELECT /*combination of all for key columns months for current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
Amount
FROM fw.FactStatisticSecondarySampledMonthly p
JOIN fw.DimFiscalMonth m ON p.FiscalMonthID = m.FiscalMonthID
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
and FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4)) +'
UNION ALL
SELECT /*combination of all for key columns months for current year*/
DepartmentID,
AccountID,
FiscalYearID,
m.SortOrder,
0 AS Amount
FROM #StatisticSecondarySampledMonthlyStaging p
CROSS APPLY fw.DimFiscalMonth m
where m.FiscalMonthID <> 0 and TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0
and FiscalYearID = '+cast(@fiscalYearID as nvarchar(4)) +'
UNION ALL
SELECT /*combination of all for key columns months for current year*/
p.DepartmentID,
p.AccountID,
fy.FiscalYearID,
m.SortOrder,
0 AS Amount
FROM fw.FactStatisticSecondarySampledMonthly p
CROSS JOIN fw.DimFiscalMonth m
CROSS JOIN (select FiscalYearID
from fw.DimFiscalYear dm
where dm.FiscalYearID in ('+cast(@fiscalYearID-1 as nvarchar(4))+','+cast(@fiscalYearID as nvarchar(4))+')'+'
) fy
where m.FiscalMonthID <> 0 and p.TimeClassID = 1 and isnull(p.IsSystemGenerated,0) = 0 and p.FiscalYearID = '+cast(@fiscalYearID-1 as nvarchar(4))+'
) AllCombinations
GROUP BY DepartmentID,AccountID,FiscalYearID,SortOrder
) FullScope
JOIN fw.DimFiscalMonth m ON FullScope.SortOrder = m.SortOrder
) FinalDataset
WHERE Amount is not null
AND FiscalYearID ='+cast(@fiscalYearID as nvarchar(4))
exec (@sql)
end else begin --Budget
insert into #temp
select DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Amount
from #StatisticSecondarySampledMonthlyStaging
where TimeClassID = 2 and (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID)
end
INSERT INTO #StatisticSecondarySampledMonthlyStaging (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,Amount,TimeClassID)
SELECT DepartmentID,AccountID,FiscalYearID,FiscalMonthID,Amount,20 FROM #temp
WHERE (@fiscalYearID = 0 or FiscalYearID = @fiscalYearID) and Amount !=0
exec [dbo].[procRollingDeleteOnTable] 'fw', 'FactStatisticSecondarySampledMonthly', 'RowID', 'fw.FactStatisticSecondarySampledMonthly', 'TimeClassID = 20 and IsDeleted = 1', 10000, 0.5, 0
drop table #temp
GO
---------------------------------------------
-- fw.procFillFactPatientBillingLineItemGroupedCache
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-10-13 KF JAZZ-44078 Charge Based Statistics Modals Performance Improvement
** 2 2022-02-01 KF JAZZ-48413 Charge Based Statistics Modals Performance Improvement- Bug Fixing
*************************************************************/
CREATE PROC [fw].[procFillFactPatientBillingLineItemGroupedCache]
AS
-- Truncate table, drop indexes
TRUNCATE TABLE fw.FactPatientBillingLineItemGroupedCache
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'FactPatientBillingLineItemGroupedCache', @indexName = 'CORE_PostDateID_DepartmentID_ChargeCodeID_PatientTypeRollupID_inc'
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'FactPatientBillingLineItemGroupedCache', @indexName = 'CORE_ServiceDateID_DepartmentID_ChargeCodeID_PatientTypeRollupID_inc'
-- Split by batches
DECLARE @batchSize INT = 200000000
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
CREATE TABLE #inputDepartments (DepartmentID INT, RecordsCount INT, BatchID INT)
DECLARE
@fromClause nvarchar(max) = '
dss.FactPatientBillingLineItemDetail fd
INNER JOIN fw.DimDepartment d ON d.DepartmentID = fd.DepartmentID',
@whereClause nvarchar(max) = '',
@declareParameters nvarchar(max) = ''
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'fd',
@fromClause = @fromClause,
@whereClause = @whereClause,
@declareParameters = @declareParameters,
@isDebug = 0
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO fw.FactPatientBillingLineItemGroupedCache (DepartmentID, ChargeCodeID, PatientTypeRollupID, ServiceDateID, PostDateID, FiscalYearID, UnitsOfService)
SELECT fd.DepartmentID, fd.ChargeCodeId, pt.PatientTypeRollupId, fd.ServiceDateId, fd.PostDateID, fd.FiscalYearID, COALESCE(SUM(fd.UnitsOfService), 0.0E0) AS UnitsOfService
FROM dss.FactPatientBillingLineItemDetail fd
INNER JOIN clientdss.FactPatientEncounterSummary fs ON fs.EncounterID = fd.EncounterID
INNER JOIN fw.DimPatientType pt ON pt.PatientTypeID = fs.PatientTypeID
INNER JOIN fw.DimChargeCode c ON c.ChargeCodeID = fd.ChargeCodeID
INNER JOIN fw.DimPatientTypeRollup ptr ON ptr.PatientTypeRollupId = pt.PatientTypeRollupId
INNER JOIN #inputDepartments ID ON ID.DepartmentID = fd.DepartmentID
WHERE ID.BatchID = @BatchID
GROUP BY fd.DepartmentID, fd.ChargeCodeId, pt.PatientTypeRollupId, fd.ServiceDateId, fd.PostDateID, fd.FiscalYearID
SET @BatchID = @BatchID + 1
END
-- Recreate indexes
CREATE INDEX CORE_PostDateID_DepartmentID_ChargeCodeID_PatientTypeRollupID_inc
ON fw.FactPatientBillingLineItemGroupedCache (PostDateID, DepartmentID, ChargeCodeID, PatientTypeRollupID)
INCLUDE(UnitsOfService)
CREATE INDEX CORE_ServiceDateID_DepartmentID_ChargeCodeID_PatientTypeRollupID_inc
ON fw.FactPatientBillingLineItemGroupedCache (ServiceDateID, DepartmentID, ChargeCodeID, PatientTypeRollupID)
INCLUDE(UnitsOfService)
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
IF OBJECT_ID('tempdb..#transactions') IS NOT NULL DROP TABLE #transactions
GO
---------------------------------------------
-- fw.procFlexProviderStatisticsMonthly
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-06-27 KZ B-19363 MR - Provider flexing - flexing
** 2 2018-06-28 KF B-19363 MR - Provider flexing - flexing
** 3 2018-07-10 KZ B-20342 MR - Update provider sampling to be in the appropriate format
*************************************************************/
CREATE PROCEDURE [fw].[procFlexProviderStatisticsMonthly]
@fiscalYearID INT = 0,
@departmentIDs nvarchar(max) = null
AS
declare @minYear int = @fiscalYearID - 1
declare @maxYear int = @fiscalYearID
if (@minYear = 0 or @maxYear = 0) begin
select @minYear = min(FiscalYearID) from [fw].[FactProviderSampledMonthly_Pivoted]
select @maxYear = max(FiscalYearID) from [fw].[FactProviderSampledMonthly_Pivoted]
end
declare @currentYear int
select @currentYear = Setting from [dbo].[DBSetting] where Name='Current_GL_YearID'
declare @currentMonth int
select @currentMonth = Setting from [dbo].[DBSetting] where Name='Current_GL_MonthID'
declare @month int
select @month = SortOrder + @currentYear * 12 from [fw].[DimFiscalMonth] where FiscalMonthID=@currentMonth
DELETE FROM [fw].[FactProviderSampledMonthly_Pivoted] WHERE TimeClassID = 4 AND (FiscalYearID between @minYear AND @maxYear)
AND (@departmentIDs is null or DepartmentID in (select val from ConvertCSValuesToTable(@departmentIDs, ',')))
INSERT INTO [fw].[FactProviderSampledMonthly_Pivoted] ([DepartmentID], [ProviderID], [OBForecastDetailID], [FiscalYearID], [FiscalMonthID], [TimeClassID], [Volume])
SELECT F.[DepartmentID], F.[ProviderID], F.[OBForecastDetailID], F.[FiscalYearID], F.[FiscalMonthID], 4 as [TimeClassID],
iif(F.FiscalYearID * 12 + max(M.SortOrder) <= @month,
sum(
case when F.TimeClassID = 1 then F.[Volume] * cast(FD.IsVariable as decimal(18, 6)) * cast(D.IsVariable as decimal(18, 6)) * cast(P.IsVariable as decimal(18, 6))
when F.TimeClassID = 20 then F.[Volume] * (1.0 - (cast(FD.IsVariable as decimal(18, 6)) * cast(D.IsVariable as decimal(18, 6)) * cast(P.IsVariable as decimal(18, 6))))
else 0 end)
, coalesce(sum(case when F.TimeClassID = 20 then F.[Volume] end), 0)) as [Amount]
FROM [fw].[FactProviderSampledMonthly_Pivoted] F
INNER JOIN [fw].[DimDepartment] D on D.DepartmentID = F.DepartmentID
INNER JOIN [ob].[DimOBForecastDetail] FD on FD.OBForecastDetailID = F.OBForecastDetailID
INNER JOIN [fw].[DimProvider] P on P.ProviderID = F.ProviderID
INNER JOIN [fw].[DimFiscalMonth] M on M.FiscalMonthID = F.FiscalMonthID
WHERE F.IsDeleted = 0 and F.TimeClassID in(1, 20) AND (FiscalYearID between @minYear AND @maxYear)
AND (@departmentIDs is null or F.DepartmentID in (select val from ConvertCSValuesToTable(@departmentIDs, ',')))
GROUP BY F.[DepartmentID], F.[ProviderID], F.[OBForecastDetailID], F.[FiscalYearID], F.[FiscalMonthID]
GO
---------------------------------------------
-- fw.procFlexStatisticsDaily
CREATE PROCEDURE [fw].[procFlexStatisticsDaily]
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2019-03-19 KF D-08059 PR | Daily and pay period screens are calculating targets differently
** 2 2022-07-05 HV JAZZ-39736 PR Metrics Definition - Statistics Daily Flexing
** 3 2022-08-02 HV JAZZ-41284 Daily flexing - Payroll Hours and Dollars
** 4 2022-08-30 KF JAZZ-42568 Flex UOS not accounting for account variability for daily PR
** 5 2024-02-23 HV JAZZ-67657 [RowId] Convert fw.FactStatisticSampledDaily.Rowid to bigint
*************************************************************/
@FiscalYearID INT = 0,
@DepartmentIDs NVARCHAR(MAX) = null,
@isOnlyOnePayPeriod BIT = 0
AS
DECLARE @currentDateOverride nvarchar(max) = (SELECT Value FROM [pi].[SystemSetting] WHERE Name = 'Current Date Override')
DECLARE @currentDate date = CASE
WHEN @currentDateOverride = '' THEN CAST(GETDATE() AS DATE)
ELSE CAST (@currentDateOverride AS date)
END
DECLARE @yesterdayDate date = DATEADD(DAY, - 1, @currentDate)
DECLARE @yesterdayDateID int = (SELECT DateID FROM fw.DimDate WHERE CalendarDateTime = @yesterdayDate)
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
CREATE TABLE #DailyCalcPeriodsScope (PayPeriodID int primary key,PayCycleID int,PeriodStartCalendarDate date,PeriodEndCalendarDate date)
INSERT INTO #DailyCalcPeriodsScope (PayPeriodID,PayCycleID,PeriodStartCalendarDate,PeriodEndCalendarDate)
SELECT PayPeriodID,PayCycleID,PeriodStartCalendarDate,PeriodEndCalendarDate
FROM fw.DimPayPeriod
WHERE
(@isOnlyOnePayPeriod = 1 and @yesterdayDate BETWEEN PeriodStartCalendarDate and PeriodEndCalendarDate)
or
(@isOnlyOnePayPeriod = 0 and (FiscalYearIDSecond = @fiscalYearID or @fiscalYearID = 0))
IF OBJECT_ID('tempdb..#DepartmentIDs') IS NOT NULL DROP TABLE #DepartmentIDs
CREATE TABLE #DepartmentIDs (val int primary key)
INSERT INTO #DepartmentIDs select val from ConvertCSValuesToTable(@departmentIDs, ',')
DECLARE @FromClause NVARCHAR(MAX) = 'fw.FactStatisticSampledDaily F INNER JOIN #DailyCalcPeriodsScope dcp on dcp.PayPeriodID = F.PayPeriodID'
DECLARE @WhereClause NVARCHAR(MAX) = 'F.TimeClassID = 4'
IF(@DepartmentIDs IS NOT NULL)
BEGIN
SET @FromClause = @fromClause + ' INNER JOIN #DepartmentIDs TD ON TD.val = F.DepartmentID'
END
exec [dbo].[procRollingDeleteOnTable]
@tableSchema = 'fw',
@tableName = 'FactStatisticSampledDaily',
@identityColumn = 'RowID',
@fromClause = @FromClause,
@whereClause = @WhereClause,
@deleteRecordCount = 10000000,
@truncateThreshold = 0.5,
@isPrintingStatement = 0
DECLARE @nextRowID BIGINT
SELECT @nextRowID = ISNULL((SELECT MAX(RowID) FROM fw.FactStatisticSampledDaily), 1)
DBCC CHECKIDENT('fw.FactStatisticSampledDaily','RESEED', @nextRowID);
DECLARE @BatchSize INT = 30000000
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
SELECT F.PayPeriodID, COUNT(1) AS RecordsCount, 0 AS BatchID INTO #inputPayPeriods
FROM fw.FactStatisticSampledDaily F
INNER JOIN #DailyCalcPeriodsScope dcp on F.PayPeriodID = dcp.PayPeriodID
WHERE F.IsDeleted = 0 AND F.TimeClassID in(1, 20)
GROUP BY F.PayPeriodID
-- Split data into batches
WHILE EXISTS (SELECT TOP 1 1 FROM #inputPayPeriods WHERE BatchID = 0)
BEGIN
;WITH PayPeriodInfo AS
(
SELECT DM.PayPeriodID, ROW_NUMBER() OVER (ORDER BY DM.PayPeriodID) AS RowNumber, SUM(RecordsCount) OVER (ORDER BY DM.PayPeriodID) AS Total, M.MaxBatchID+1 AS BatchID
FROM #inputPayPeriods IPP
INNER JOIN fw.DimPayPeriod DM ON DM.PayPeriodID = IPP.PayPeriodID
CROSS JOIN (SELECT MAX(BatchID) AS MaxBatchID FROM #inputPayPeriods) M
WHERE IPP.BatchID = 0
)
UPDATE IPP
SET IPP.BatchID = MI.BatchID
FROM #inputPayPeriods IPP
INNER JOIN PayPeriodInfo MI ON MI.PayPeriodID = IPP.PayPeriodID
WHERE MI.Total <= @BatchSize OR MI.RowNumber = 1
END
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO fw.FactStatisticSampledDaily (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
SELECT S.DepartmentID, S.AccountID, S.PayPeriodID, S.DateID, S.TimeClassID, S.Units
FROM
(
SELECT F.DepartmentID, F.AccountID, F.PayPeriodID, F.DateID, 4 AS TimeClassID,
CASE
WHEN F.DateID <= @yesterdayDateID
THEN
SUM(CASE
WHEN F.TimeClassID = 1 THEN F.Units * A.Variability * CAST(D.IsVariable as decimal(18, 6))
WHEN F.TimeClassID = 20 THEN F.Units * (1.0 - (A.Variability * CAST(D.IsVariable as decimal(18, 6))))
ELSE 0
END)
ELSE
COALESCE(SUM(CASE WHEN F.TimeClassID = 20 THEN F.Units END), 0)
END
AS Units
FROM fw.FactStatisticSampledDaily F
INNER JOIN fw.DimDepartment D on D.DepartmentID = F.DepartmentID
INNER JOIN fw.DimAccount A on A.AccountID = F.AccountID
INNER JOIN fw.DimDate DD on DD.DateID = F.DateID
INNER JOIN #inputPayPeriods IPP ON IPP.PayPeriodID = F.PayPeriodID
LEFT JOIN #DepartmentIDs TD ON TD.val = D.DepartmentID
WHERE F.IsDeleted = 0
AND F.TimeClassID in(1, 20)
AND (@DepartmentIDs IS NULL OR TD.val IS NOT NULL)
AND IPP.BatchID = @BatchID
GROUP BY F.DepartmentID, F.AccountID, F.DateID, F.PayPeriodID
) S
SET @BatchID = @BatchID + 1
END
IF OBJECT_ID('tempdb..#DepartmentIDs') IS NOT NULL DROP TABLE #DepartmentIDs
GO
---------------------------------------------
-- fw.procGLSampledAdjustedTargetMonthlyInsert
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-10-02 IP B-17596 Created
** 2 2018-11-19 OV D-06627 fix: GL Dollars Adjusted Target records are not added when there is only Actual data
** 3 2020-02-05 IH D-08896 Add handling of Units
** 4 2022-08-23 BC JAZZ-11498 Change Table Variable to Temporary Tables
*************************************************************/
CREATE PROCEDURE [fw].[procGLSampledAdjustedTargetMonthlyInsert] (@FiscalYearID INT = 0)
AS
BEGIN
/*
Proposal
If the client is not using flexing, this will be the target plus the efficiency factor
This should work regardless of the target basis (i.e. rolling avg or budget)
The factor will be applied after the inversion
If the factor type is percentage, the adjusted target will be the target*(1+factor)
i.e. if my target is 100 and my factor is 5%, the adjusted target will be 100*(1+0.05)=105
i.e. if my target is 100 and my factor is -5%, the adjusted target will be 100*(1+-0.05)=95
If the factor type is value, the adjusted value will be target + factor
i.e. if my target is 1000 and my factor is 200, the adjusted target will be will be 1000+200=1200
i.e. if my target is 1000 and my factor is -200, the adjusted target will be 1000-200=800
If there is more than one factor impacting a department and account or job code/pay code group combination, then the factors should layer on top of each other based on history order
If an efficiency factor does not exist for a particular account/job code, then the value in the new time class will be either flex or baseline target if flex is not used
This will happen after Flex is calculated
Include integration tests
*/ DECLARE @IsFlexingEnabled INT = (
SELECT VALUE
FROM [mr].[SystemSetting]
WHERE NAME = 'Is Target Flexed'
)
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
CREATE TABLE #EfficiencyFactorScope (
EfficiencyFactorGUID [uniqueidentifier] NOT NULL
,[DepartmentID] [int] NOT NULL
,[AccountID] [int] NOT NULL
,[FiscalYearID] [smallint] NOT NULL
,[FiscalMonthID] [tinyint] NOT NULL
,Value NUMERIC(25, 6) NOT NULL
,Type TINYINT
,FactorType CHAR(1)
,DateCreated DATETIME
,UNIQUE CLUSTERED (
FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
);
IF EXISTS (SELECT TOP 1 * FROM [mr].[EfficiencyFactor]) BEGIN
WITH EfficiencyFactorScope
AS (
SELECT *
,rn = ROW_NUMBER() OVER (
PARTITION BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID ORDER BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
FROM (
SELECT DISTINCT ef.EfficiencyFactorGUID
,ef.FiscalYearID
,efgd.FiscalMonthID
,efd.DepartmentID
,isnull(efgd.AccountID, da.AccountID) AS AccountID
,CASE
WHEN isnull(efgd.AccountID, - 999) = da.AccountID
THEN 0
ELSE efgd.Value
END AS Value
,ef.Type
,ef.FactorType
,ef.DateCreated
FROM mr.EfficiencyFactor ef
INNER JOIN mr.EfficiencyFactorDepartment efd ON ef.EfficiencyFactorGUID = efd.EfficiencyFactorGUID
INNER JOIN mr.EfficiencyFactorGLDetails efgd ON efgd.EfficiencyFactorGUID = ef.EfficiencyFactorGUID
LEFT JOIN fw.DimAccount da ON efgd.OBFinancialReportingID = da.OBDollarsFinancialReportingID
AND efgd.AccountID IS NULL
LEFT JOIN mr.EfficiencyFactorGLDetails efgd_exist ON efgd.EfficiencyFactorGUID = efgd_exist.EfficiencyFactorGUID
AND efgd_exist.AccountID = da.AccountID
AND efgd_exist.FiscalMonthID = efgd.FiscalMonthID
WHERE (
@FiscalYearID = ef.FiscalYearID
OR @FiscalYearID = 0
)
AND (
efgd_exist.AccountID IS NULL
OR da.AccountID IS NULL
)
AND ef.Type = 0
AND isnull(efgd.AccountID, da.AccountID) IS NOT NULL
) X
)
INSERT INTO #EfficiencyFactorScope (
EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
)
SELECT EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
FROM EfficiencyFactorScope
WHERE RN = 1
DELETE
FROM fw.FactGLSampled
WHERE (
@FiscalYearID = FiscalYearID
OR @FiscalYearID = 0
)
AND TimeClassID = 22
INSERT INTO fw.FactGLSampled (
DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,TimeClassID
,IsDeleted
,Dollars
,Units
)
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,22 AS TimeClassID
,0 AS IsDeleted
,SUM(Dollars)
,SUM(Units)
FROM (
SELECT isnull(fact.DepartmentID, ToApply.DepartmentID) AS DepartmentID
,isnull(fact.AccountID, toApply.AccountID) AS AccountID
,isnull(fact.FiscalYearID, toApply.FiscalYearID) AS FiscalYearID
,isnull(fact.FiscalMonthID, toApply.FiscalMonthID) AS FiscalMonthID
,Dollars = CASE WHEN FactorType = 'P' THEN isnull(Dollars, 0.0) * isnull(Value, 0.0) / 100.00
ELSE isnull(Value, 0.0)
END
,Units = 0.0
FROM #EfficiencyFactorScope ToApply
INNER JOIN (
SELECT DISTINCT DepartmentID
,AccountID
FROM fw.FactGLSampled
) GenCand ON GenCand.DepartmentID = ToApply.DepartmentID
AND GenCand.AccountID = ToApply.AccountID
FULL JOIN (select DepartmentID
, AccountID
, FiscalYearID
, FiscalMonthID
, SUM(CASE WHEN (@IsFlexingEnabled = 1 and isnull(fact.TimeClassID, 0) = 4) OR (isnull(fact.TimeClassID, 0) = 20 AND @IsFlexingEnabled = 0)
THEN isnull(fact.Dollars,0.0)
ELSE 0.0
END) as Dollars
FROM fw.FactGLSampled fact
WHERE fact.TimeClassID in (1, 4, 20)
and fact.FiscalYearID = @FiscalYearID OR @FiscalYearID = 0
GROUP BY DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID ) fact ON fact.DepartmentID = ToApply.DepartmentID
AND fact.AccountID = ToApply.AccountID
AND fact.FiscalYearID = ToApply.FiscalYearID
AND fact.FiscalMonthID = ToApply.FiscalMonthID
where value is not null
UNION ALL
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,CASE WHEN (@IsFlexingEnabled = 1 and isnull(fact.TimeClassID, 0) = 4) OR (isnull(fact.TimeClassID, 0) = 20 AND @IsFlexingEnabled = 0)
THEN isnull(fact.Dollars,0.0)
ELSE 0.0
END as Dollars
,CASE WHEN (@IsFlexingEnabled = 1 and isnull(fact.TimeClassID, 0) = 4) OR (isnull(fact.TimeClassID, 0) = 20 AND @IsFlexingEnabled = 0)
THEN fact.Units
ELSE 0.0
END as Units
FROM fw.FactGLSampled fact
WHERE fact.FiscalYearID = @FiscalYearID OR @FiscalYearID = 0
) X WHERE x.Dollars != 0 OR x.Units != 0
GROUP BY DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
EXEC [fw].[procFactMonthlyYTDPriorYearUpdate] @factTableName = 'fw.FactGLSampled'
,@keyNameCSV = 'AccountID'
,@measureNameCSV = 'Dollars,Units'
,@fiscalYearID = @FiscalYearID
,@timeClassID = 22
,@isDebugOnly = 0
END
END
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
GO
---------------------------------------------
-- fw.procGLSampledFlexInsert
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 5/10/16 NL B-11692 Including FiscalYearID in delete
** 2 10/38/17 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
*************************************************************/
CREATE PROC [fw].[procGLSampledFlexInsert]
@fiscalyearid smallint
with recompile
as
--delete existing data
WHILE EXISTS(SELECT NULL FROM fw.FactGLSampled (nolock) WHERE FiscalYearID = @fiscalYearID and TimeClassID = 4) BEGIN
DELETE TOP (10000) fw.FactGLSampled WHERE FiscalYearID = @fiscalYearID and TimeClassID = 4
END
--push new data to fact table
INSERT INTO [fw].[FactGLSampled]([DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], [Units], [Dollars])
SELECT
GL.DepartmentID,
GL.AccountID,
GL.FiscalYearID,
GL.FiscalMonthID,
4,
SUM(0) as Units,
SUM(CASE
WHEN acc.Inversion = -1 THEN gl.value * -1
ELSE gl.value
END) AS Dollars
FROM
[int].[FactGL] gl
INNER JOIN [fw].[DimAccount] acc on acc.AccountCode = gl.AccountCode
WHERE
gl.TimeClassID = 2
AND gl.FiscalYearID = @fiscalyearid
AND (gl.value != 0)
GROUP BY
gl.DepartmentID,
gl.AccountID,
gl.FiscalYearID,
gl.FiscalMonthID,
gl.TimeClassID
--run calculations
exec fw.procFactMonthlyMergeDuplicates 'fw.FactGLSampled', 'AccountID', 'Dollars,Units', @fiscalYearID, 4, 0
exec fw.procFactMonthlyYTDPriorYearUpdate 'fw.FactGLSampled', 'AccountID', 'Dollars,Units', @fiscalYearID, 4, 0
GO
---------------------------------------------
-- fw.procGLSampledInsert
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2014-01-13 AKK D-01370 Fixing order of operations for WHEN condition
** 2 2014-09-30 JG Kris updated proc to optimize performance
** 3 2015-07-15 NL D-02813 Removing parameter from YTD call
** 4 2016-12-27 AK D-05183 Added IsSystemGenerated reset
** 5 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 6 2017-02-21 GF D-05545 Add debug flag to disable output for standard run
** 7 2020-02-06 KF D-08896 FP/ MR / Flexing / Drivers - MR GL Hours Flexing doesn't work
*************************************************************/
CREATE proc [fw].[procGLSampledInsert]
@fiscalyearid smallint,
@timeclassid tinyint,
@isDebug bit = 0
with recompile
as
--this proc is obsolete, call All instead
exec fw.procGLSampledInsertAll @fiscalyearid, @isDebug
GO
---------------------------------------------
-- fw.procGLSampledInsertAll
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-07-05 IP D-06023 Changing columns size to support values over 1 trillion
** 2 2017-07-19 IP TK-45395 Fixed conditions of merge statement (include isSystemGenerated column)
** 3 2018-01-12 IP TK-53108 Fixed conditions of merge statement (include TimeClassID = 12 to target)
** 4 2018-01-12 IP TK-53108 Fixed conditions of merge statement (include TimeClassID = 4 to target and source)
** 5 2018-02-01 IP TK-53658 Re-applied stored procedure
** 6 2018-02-14 GF Apply account inversion fix
** 7 2019-02-05 OV D-07814 Optimize the proc to do truncate/insert for each year where @fiscalYearID = 0
** 8 2020-02-05 KF D-08896 FP/ MR / Flexing / Drivers - MR GL Hours Flexing doesn't work
** 9 2020-02-18 KF B-26204 MR | GL Hour Flexing
** 10 2021-11-11 HV JAZZ-28155 Remove MR 3.0 Flag and all associated code
** 11 2023-09-14 BS JAZZ-55750 Remove filter to allow other time classes in MR reporting
** 12 2024-06-04 ishah JAZZ-61244 [TrLog][High] Bug - Run Management Reporting Monthly Process (MR Sampling, all years run): Task failed on Inserting GL Sampled.
*************************************************************/
CREATE PROC [fw].[procGLSampledInsertAll]
@fiscalYearID smallint = 0,
@isDebug bit = 0
as
print 'Starting calculating staging table --- '+convert(varchar(20),GETDATE(),113)
IF OBJECT_ID('tempdb..#FactGLStagingValue') IS NOT NULL DROP TABLE #FactGLStagingValue
IF OBJECT_ID('tempdb..#FactGLStaging') IS NOT NULL DROP TABLE #FactGLStaging
IF OBJECT_ID('tempdb..#StatisticSampledMonthlyStaging') IS NOT NULL DROP TABLE #StatisticSampledMonthlyStaging
IF OBJECT_ID('fw.FactGLStagingWithCalcs') IS NOT NULL DROP TABLE fw.FactGLStagingWithCalcs
IF OBJECT_ID('tempdb..#SummaryOfChanges') IS NOT NULL DROP TABLE #SummaryOfChanges
exec client.procGLSampledInsertPreprocess
--push new data to fact table
CREATE TABLE #SummaryOfChanges (Change VARCHAR(20), FiscalYearID smallint, TimeClassID tinyint, IsDeleted bit);
CREATE TABLE #FactGLStagingValue (
DepartmentID int,
AccountID int,
FiscalYearID int,
FiscalMonthID int,
TimeClassID int,
Amount decimal(21,6),
ApplyDate datetime,
Src varchar(max),
UNIQUE NONCLUSTERED (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID)
)
exec fw.procPrepareGL @fiscalYearID
CREATE TABLE #FactGLStaging (RowID bigint identity(1,1), DepartmentID int, AccountID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Units decimal(21,6), Dollars decimal(21,6), FTEs decimal(21,6),isDeleted bit default 0, isSystemGenerated bit default 0)
DECLARE @batchSize INT
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
CREATE TABLE #inputDepartments (DepartmentID INT, RecordsCount INT, BatchID INT)
-- Split by batches
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 30000000,
@ResultBatchSize = @batchSize OUTPUT
DECLARE @fromClause nvarchar(max), @whereClause nvarchar(max)
SET @fromClause = '
(
select
GL.DepartmentID,
GL.AccountID,
GL.FiscalYearID,
GL.FiscalMonthID,
GL.TimeClassID
from
#FactGLStagingValue GL
inner join fw.DimAccount A on A.AccountID = GL.AccountID
where
gl.Amount != 0
group by
GL.DepartmentID,
GL.AccountID,
GL.FiscalYearID,
GL.FiscalMonthID,
GL.TimeClassID
) X
'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #FactGLStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Units, Dollars)
select
GL.DepartmentID,
GL.AccountID,
GL.FiscalYearID,
GL.FiscalMonthID,
GL.TimeClassID,
sum(0) as Units,
sum(CASE
WHEN A.Inversion = -1 then GL.Amount * -1
ELSE GL.Amount
END) AS Dollars
from
#FactGLStagingValue GL
inner join #inputDepartments IP on IP.DepartmentID = GL.DepartmentID
inner join fw.DimAccount A on A.AccountID = GL.AccountID
where
gl.Amount != 0 and IP.BatchID = @BatchID
group by
GL.DepartmentID,
GL.AccountID,
GL.FiscalYearID,
GL.FiscalMonthID,
GL.TimeClassID
SET @BatchID = @BatchID + 1
END
IF OBJECT_ID('tempdb..#FactGLStagingValue') IS NOT NULL DROP TABLE #FactGLStagingValue
exec fw.procFactMonthlyMergeDuplicates '#FactGLStaging', 'AccountID', 'Dollars,Units', @fiscalYearID, 0, 0
-- Statistics Hours to GL Units
IF EXISTS (SELECT * FROM mr.SystemSetting WHERE Name = 'Feature Flag Use GL Units' AND Value = 1)
BEGIN
CREATE TABLE #StatisticSampledMonthlyStaging (RowID bigint identity(1,1),AccountID int, DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Amount decimal(19,4))
insert into #StatisticSampledMonthlyStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount)
exec fw.PrepareStatistics @FiscalYearID,0
SELECT
STAT.DepartmentID,
STAT.AccountID,
STAT.FiscalYearID,
STAT.FiscalMonthID,
STAT.TimeClassID,
SUM(STAT.Amount) AS Units
INTO #FactGLUnits
FROM #StatisticSampledMonthlyStaging STAT
INNER JOIN fw.DimAccount A ON A.AccountID = STAT.AccountID
WHERE A.OBStatUnitTypeID = 51 --Hours
GROUP BY
STAT.DepartmentID,
STAT.AccountID,
STAT.FiscalYearID,
STAT.FiscalMonthID,
STAT.TimeClassID
SET @fromClause = '
(
SELECT GL.DepartmentID, GL.AccountID, GL.FiscalYearID, GL.FiscalMonthID, GL.TimeClassID
FROM #FactGLStaging GL
INNER JOIN #FactGLUnits U ON
U.DepartmentID = GL.DepartmentID AND
U.AccountID = GL.AccountID AND
U.FiscalYearID = GL.FiscalYearID AND
U.FiscalMonthID = GL.FiscalMonthID AND
U.TimeClassID = GL.TimeClassID
) X
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
UPDATE GL
SET GL.Units = U.Units
FROM #FactGLStaging GL
INNER JOIN #FactGLUnits U ON
U.DepartmentID = GL.DepartmentID AND
U.AccountID = GL.AccountID AND
U.FiscalYearID = GL.FiscalYearID AND
U.FiscalMonthID = GL.FiscalMonthID AND
U.TimeClassID = GL.TimeClassID
INNER JOIN #inputDepartments IP on IP.DepartmentID = U.DepartmentID
WHERE IP.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
SET @fromClause = '
(
SELECT U.DepartmentID, U.AccountID, U.FiscalYearID, U.FiscalMonthID, U.TimeClassID, U.Units, 0 as Dollars
FROM #FactGLUnits U
LEFT JOIN #FactGLStaging GL ON
U.DepartmentID = GL.DepartmentID AND
U.AccountID = GL.AccountID AND
U.FiscalYearID = GL.FiscalYearID AND
U.FiscalMonthID = GL.FiscalMonthID AND
U.TimeClassID = GL.TimeClassID
WHERE GL.RowID IS NULL
) X
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #FactGLStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Units, Dollars)
SELECT U.DepartmentID, U.AccountID, U.FiscalYearID, U.FiscalMonthID, U.TimeClassID, U.Units, 0
FROM #FactGLUnits U
INNER JOIN #inputDepartments IP on IP.DepartmentID = U.DepartmentID
LEFT JOIN #FactGLStaging GL ON
U.DepartmentID = GL.DepartmentID AND
U.AccountID = GL.AccountID AND
U.FiscalYearID = GL.FiscalYearID AND
U.FiscalMonthID = GL.FiscalMonthID AND
U.TimeClassID = GL.TimeClassID
WHERE GL.RowID IS NULL AND IP.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
END --'Feature Flag Use GL Units'
--
--run calculations
exec fw.procFactGLSampledBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactMonthlyYTDPriorYearUpdateStaging 'fw.FactGLSampled','#FactGLStaging', 'AccountID', 'Dollars,Units', @fiscalYearID, 0, 0
if @FiscalYearID = 0
BEGIN
truncate table fw.FactGLSampled
declare @maxYear int = (select max(FiscalYearID) from fw.FactGLStagingWithCalcs)
declare @minYear int = (select min(FiscalYearID) from fw.FactGLStagingWithCalcs)
WHILE @minYear <= @maxYear
BEGIN
SET @whereClause = 'FiscalYearID = ' + cast(@minYear as nvarchar(100)) + ' '
IF OBJECT_ID('tempdb..#inputDepartmentsForFactGLSampled') IS NOT NULL DROP TABLE #inputDepartmentsForFactGLSampled
CREATE TABLE #inputDepartmentsForFactGLSampled (DepartmentID INT, RecordsCount INT, BatchID INT)
INSERT INTO #inputDepartmentsForFactGLSampled
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = 'fw.FactGLStagingWithCalcs X',
@whereClause = @whereClause,
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartmentsForFactGLSampled
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO fw.FactGLSampled (
DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,TimeClassID
,Units
,UnitsYTD
,UnitsPriorYear
,UnitsPriorYTD
,Dollars
,DollarsYTD
,DollarsPriorYear
,DollarsPriorYTD
,TransactionID
,IsSystemGenerated)
SELECT
FG.DepartmentID
,FG.AccountID
,FG.FiscalYearID
,FG.FiscalMonthID
,FG.TimeClassID
,FG.Units
,FG.UnitsYTD
,FG.UnitsPriorYear
,FG.UnitsPriorYTD
,FG.Dollars
,FG.DollarsYTD
,FG.DollarsPriorYear
,FG.DollarsPriorYTD
,0
,FG.IsSystemGenerated
FROM fw.FactGLStagingWithCalcs FG
INNER JOIN #inputDepartmentsForFactGLSampled IP ON IP.DepartmentID = FG.DepartmentID
WHERE FiscalYearID = @minYear AND IP.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
SET @minYear = @minYear + 1
END
END
ELSE
BEGIN
;with tgt (DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
IsDeleted,
IsSystemGenerated) as (
select
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
IsDeleted,
IsSystemGenerated
from
fw.FactGLSampled
where
(
TimeClassID != 4
or
(TimeClassID = 4 and exists(select 1 from [mr].[SystemSetting] where Name = 'Is MR Flexing Manually Loaded' and Value = '1'))
)
AND (FiscalYearID = @fiscalYearID)
),
src (DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
IsSystemGenerated) as (
select
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
IsSystemGenerated
from
fw.FactGLStagingWithCalcs
where
(
TimeClassID != 4
or
(TimeClassID = 4 and exists(select 1 from [mr].[SystemSetting] where Name = 'Is MR Flexing Manually Loaded' and Value = '1'))
)
AND (FiscalYearID = @fiscalYearID)
)
MERGE tgt as target
USING src as source
ON (
target.departmentid = source.departmentid
and target.accountid = source.accountid
and target.fiscalyearid = source.fiscalyearid
and target.fiscalmonthid = source.fiscalmonthid
and target.timeclassid = source.timeclassid
)
WHEN MATCHED AND (
target.Units<> source.Units
or target.UnitsYTD<> source.UnitsYTD
or target.UnitsPriorYear<> source.UnitsPriorYear
or target.UnitsPriorYTD<> source.UnitsPriorYTD
or target.Dollars<> source.Dollars
or target.DollarsYTD<> source.DollarsYTD
or target.DollarsPriorYear<> source.DollarsPriorYear
or target.DollarsPriorYTD<> source.DollarsPriorYTD
or target.IsSystemGenerated <> source.IsSystemGenerated
) THEN
UPDATE SET
target.Units = source.Units,
target.UnitsYTD= source.UnitsYTD,
target.UnitsPriorYear= source.UnitsPriorYear,
target.UnitsPriorYTD= source.UnitsPriorYTD,
target.Dollars= source.Dollars,
target.DollarsYTD= source.DollarsYTD,
target.DollarsPriorYear= source.DollarsPriorYear,
target.DollarsPriorYTD= source.DollarsPriorYTD,
target.IsSystemGenerated = source.IsSystemGenerated
WHEN NOT MATCHED BY TARGET THEN
INSERT (DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
IsDeleted,
IsSystemGenerated) VALUES (
source.DepartmentID,
source.AccountID,
source.FiscalYearID,
source.FiscalMonthID,
source.TimeClassID,
source.Units,
source.UnitsYTD,
source.UnitsPriorYear,
source.UnitsPriorYTD,
source.Dollars,
source.DollarsYTD,
source.DollarsPriorYear,
source.DollarsPriorYTD,
0,
source.IsSystemGenerated)
WHEN NOT MATCHED BY SOURCE THEN
DELETE
OUTPUT $action, inserted.FiscalYearID, inserted.TimeClassID, inserted.isdeleted INTO #SummaryOfChanges;
END
EXEC dbo.procRollingDeleteOnTable
'fw',
'fw.FactGLSampled',
'RowID',
'fw.FactGLSampled',
'isDeleted = 1',
10000000,
0.5,
0
DECLARE @nextRowID BIGINT
SELECT @nextRowID = ISNULL((SELECT MAX(RowID) FROM fw.FactGLSampled), 1)
DBCC CHECKIDENT('fw.FactGLSampled','RESEED', @nextRowID);
--return summary of results
if (@isDebug = 1) begin
SELECT 'GL Sample' as SampleType, FiscalYearID, TimeClassID, Change, IsDeleted, COUNT(*) AS CountPerChange
FROM #SummaryOfChanges
GROUP BY Change, FiscalYearID, TimeClassID, IsDeleted;
end
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
IF OBJECT_ID('tempdb..#FactGLStaging') IS NOT NULL DROP TABLE #FactGLStaging
IF OBJECT_ID('tempdb..#StatisticSampledMonthlyStaging') IS NOT NULL DROP TABLE #StatisticSampledMonthlyStaging
IF OBJECT_ID('fw.FactGLStagingWithCalcs') IS NOT NULL DROP TABLE fw.FactGLStagingWithCalcs
IF OBJECT_ID('tempdb..#SummaryOfChanges') IS NOT NULL DROP TABLE #SummaryOfChanges
GO
---------------------------------------------
-- fw.procGLSampledPerformFlexing
CREATE PROC [fw].[procGLSampledPerformFlexing]
@CostingResultID int,
@CostingTimeClassID tinyint,
@FiscalYearID int
AS
/* ************************************************************************************************************************
** Author: Nathan LeRoy
** Create Date: 2016-04-22
** Description: Runs GL flexing for MR
** Last Modified: 2016-05-23
**************************************************************************************************************************
** Change History
**************************************************************************************************************************
** CID Date Author WI Description
** 1 5/10/16 NL B-11692 Changed flexing to work like new ABB flexing procs
** 2 5/20/16 NL B-12055 Removed call to insert flexed data (handled in engine now)
** 3 8/05/16 NL Added call to procABBMRTransferFlexedPayrollSampledMonthlyToFactGLSampled
** 4 9/23/16 NL Adding copy from budget -> flex
** 5 1/30/16 NL MANUAL changing the way this handles NULL cost data
*************************************************************************************************************************/
-- reset all of the flex data to budget (only data that should be flexed like ABB)
SELECT DISTINCT DepartmentID
INTO #ABBDepts
FROM (
SELECT DepartmentID FROM [dss].[FactCostingOutDetailGL] WHERE CostingResultID = @CostingResultID
UNION ALL
SELECT DepartmentID FROM [dss].[FactCostingOutDetailPayroll] WHERE CostingResultID = @CostingResultID) depts;
INSERT INTO [fw].[FactGLSampled]([DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], [TimeClassID], [IsDeleted], [Units], [UnitsYTD], [UnitsPriorYear], [UnitsPriorYTD], [Dollars], [DollarsYTD], [DollarsPriorYear], [DollarsPriorYTD], [IsSystemGenerated])
SELECT [DepartmentID], [AccountID], [FiscalYearID], [FiscalMonthID], 4, [IsDeleted], [Units], [UnitsYTD], [UnitsPriorYear], [UnitsPriorYTD], [Dollars], [DollarsYTD], [DollarsPriorYear], [DollarsPriorYTD], [IsSystemGenerated]
FROM [fw].[FactGLSampled]
WHERE TimeClassID = 2 and FiscalYearID = @FiscalYearID and DepartmentID in ( select DepartmentID from #ABBDepts );
-- perform the flexing
UPDATE
ab
SET
-- BEG CID 5 --
ab.Dollars = CASE WHEN ISNULL(ab.Variability, 0) = 0
THEN ab.Dollars
ELSE ISNULL(((ab.Dollars * (1 - (cost.TotalVariableDirectCost / NULLIF(cost.TotalCost, 0.0)))) + cost.TotalExtendedVariableDirectCost), 0)
END
-- END CID 5 --
FROM
(SELECT gl.DepartmentID, gl.AccountID, gl.FiscalYearID, gl.FiscalMonthID, gl.TimeClassID, gl.Dollars, ISNULL(avo.Variability, av.Variability) as Variability
FROM [fw].[FactGLSampled] gl
LEFT JOIN (SELECT AccountID, Variability FROM [dss].[AccountVariability] WHERE CostingConfigGuid = (SELECT CostingConfigGuid FROM [dss].[CostingResult] WHERE CostingResultID = @CostingResultID)) av ON gl.AccountID = av.AccountID
LEFT JOIN (SELECT DepartmentID, AccountID, Variability FROM [dss].[AccountVariabilityOverride] WHERE CostingConfigGuid = (SELECT CostingConfigGuid FROM [dss].[CostingResult] WHERE CostingResultID = @CostingResultID)) avo on gl.DepartmentID = avo.DepartmentID and gl.AccountID = avo.AccountID
WHERE TimeClassID = 4 AND FiscalYearID = @FiscalYearID) ab
INNER JOIN #ABBDepts abd on ab.DepartmentID = abd.DepartmentID
LEFT JOIN
(SELECT
DepartmentID,
AccountID,
FiscalMonthID,
FiscalYearID,
SUM(cost.ExtendedVariableDirectCost) as TotalExtendedVariableDirectCost,
SUM(cost.TotalVariableDirectCost) as TotalVariableDirectCost,
SUM(cost.TotalCost) as TotalCost
FROM
[fw].[viewMRGLBudgetCostPerRVUbyMonth] cost
WHERE
cost.CostingResultID = @CostingResultID
AND
cost.TimeClassID = @CostingTimeClassID
GROUP BY
DepartmentID, AccountID, FiscalMonthID, FiscalYearID
) cost
ON ab.DepartmentID = cost.DepartmentID
AND ab.AccountID = cost.AccountID
AND ab.FiscalMonthID = cost.FiscalMonthID
AND ab.FiscalYearID = cost.FiscalYearID;
DROP TABLE #ABBDepts;
EXEC [fw].[procABBMRTransferFlexedPayrollSampledMonthlyToFactGLSampled] @fiscalYearID = @FiscalYearID, @CostingResultID = @CostingResultID;
GO
---------------------------------------------
-- fw.procGetSQLObjectsRelatedToDimension
CREATE PROCEDURE [fw].[procGetSQLObjectsRelatedToDimension]
@dimensionGlobalId NVARCHAR(50),
@dimensionIdValue INT
AS
--create temp table
CREATE TABLE #related_objects (Id int IDENTITY(1,1), FK_Schema VARCHAR(500) not null default(''), FK_Table VARCHAR(500) not null default(''), FK_Column VARCHAR(500) not null default(''),FriendlyName VARCHAR(200) DEFAULT(''))
--create temp table
CREATE TABLE #result(FK_Schema VARCHAR(500) not null default(''), FK_Table VARCHAR(500) not null default(''), FK_Column VARCHAR(500) not null default(''),FriendlyName VARCHAR(200) DEFAULT(''))
--fill table with related objects
INSERT INTO #related_objects(FK_Schema, FK_Table, FK_Column, FriendlyName)
SELECT g.SchemaName FK_Schema, g.ObjectName FK_Table, a.SQLColumnName FK_Column, d.FriendlyName FROM dbo.ScoreAttribute a
INNER JOIN dbo.ScoreDimensionGroup g ON g.DimensionGroupGUID = a.DimensionGroupGUID
INNER JOIN dbo.ScoreDimension d ON d.DimensionGUID = g.DimensionGUID
WHERE a.ForeignKeyGUID = (SELECT DefaultKeyGUID FROM dbo.ScoreDimension WHERE GlobalID = @dimensionGlobalId)
INSERT INTO #related_objects(FK_Schema, FK_Table, FK_Column, FriendlyName)
SELECT dt.SQLSchemaName FK_Schema, dt.SQLObjectName FK_Table, a.SQLColumnName FK_Column ,dt.FriendlyName
FROM ScoreDataTable dt
INNER JOIN ScoreDataTableKeyLink kl ON kl.DataTableGUID = dt.DataTableGUID
INNER JOIN dbo.ScoreAttribute a ON a.AttributeGUID = kl.KeyGUID
WHERE a.AttributeGUID = (SELECT DefaultKeyGUID FROM dbo.ScoreDimension WHERE GlobalID = @dimensionGlobalId)
INSERT INTO #related_objects(FK_Schema, FK_Table, FK_Column, FriendlyName)
SELECT fk.FK_Schema, fk.FK_Table, fk.FK_Column, fk.FK_Table
FROM dbo.ScoreDimension d
JOIN dbo.ScoreDimensionGroup dg ON d.DimensionGUID = dg.DimensionGUID
JOIN dbo.viewSysForeignKeys fk ON dg.ObjectName = PK_Table
LEFT JOIN #related_objects r ON r.FK_Schema = fk.FK_Schema AND r.FK_Table = fk.FK_Table AND r.FK_Column = fk.FK_Column
WHERE d.GlobalID = @dimensionGlobalId
AND r.FK_Schema IS NULL
DECLARE @count INT = 1, @total INT = 0, @table VARCHAR(150), @schema VARCHAR(50), @column VARCHAR(50), @friendlyName VARCHAR(500), @sql VARCHAR(MAX)
SELECT @total = COUNT(0) FROM #related_objects
WHILE(@count <= @total)
BEGIN
SELECT @schema = FK_Schema, @table = FK_Table, @column = FK_Column, @friendlyName = FriendlyName FROM #related_objects WHERE Id = @count
SET @sql = 'IF EXISTS(SELECT TOP 1 1 FROM ['+@schema+'].['+@table+'] WHERE '+@column+'='''+CAST(@dimensionIdValue AS VARCHAR)+''')
BEGIN
INSERT INTO #result (FK_Schema, FK_Table, FK_Column,FriendlyName) VALUES ('''+@schema+''','''+@table+''','''+@column+''','''+@friendlyName+''')
END'
EXEC(@sql)
SET @count = @count + 1
END
SELECT FK_Schema, FK_Table, FriendlyName FROM #result
DROP TABLE #related_objects
DROP TABLE #result
GO
---------------------------------------------
-- fw.procGetStatisticsDrillIn
CREATE PROCEDURE [fw].[procGetStatisticsDrillIn](
@DepartmentIDs VARCHAR(max)
,@AccountIDs VARCHAR(max)
,@PayPeriodIDs VARCHAR(max)
,@isYTD bit
)
AS
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-12-18 IP B-17582 created procedure
** 2 2018-05-08 KF B-19364 MRPR - Set Global Weights for Charge Codes - System Center Page
** 3 2018-10-20 IH D-07606 PR - Delete rounding charge code values
** 4 2019-04-19 OV B-20579 filtered by new column 'TimeClassID' from int.FactSharedImportDailyStatistics
** 5 2019-05-01 KF D-08230 [fw].[procGetStatisticsDrillIn] is not taking the actual weighted average
** 6 2022-05-11 HV JAZZ-36796 PR - Volume charge code data doesn't populate if loaded with real time stamp
** 7 2022-07-01 HV JAZZ-40032 Rollback to previous version
** 8 2022-07-19 HV JAZZ-39414 procGetStatisticsDrillIn timing out after 3 minutes
JAZZ-36796 PR - Volume charge code data doesn't populate if loaded with real time stamp
** 9 2023-02-17 IS JAZZ-49480 fw.procGetStatisticsDrillIn has excessive part looking at TimeClassID=2 data
*************************************************************/
BEGIN
IF OBJECT_ID('tempdb..#filtering') IS NOT NULL DROP TABLE #filtering
IF OBJECT_ID('tempdb..#SubSelect') IS NOT NULL DROP TABLE #SubSelect
IF OBJECT_ID('tempdb..#FDPSD') IS NOT NULL DROP TABLE #FDPSD
IF OBJECT_ID('tempdb..#ConsolidatedParams') IS NOT NULL DROP TABLE #ConsolidatedParams
CREATE TABLE #FDPSD (DepartmentID int primary key)
insert into #FDPSD
select distinct DriverDepartmentID as DepartmentID
from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache
CREATE TABLE #ConsolidatedParams (DepartmentID int, AccountId int, PayPeriodID int)
CREATE TABLE #filtering (
DepartmentID INT
,AccountID INT
,PayPeriodID INT
,TimeClassID INT
,SelectTable TINYINT
)
IF @isYTD = 1
INSERT INTO #ConsolidatedParams (DepartmentID,AccountId,PayPeriodID)
SELECT DISTINCT d.DepartmentID,A.val as AccountID,pp_a.PayPeriodID
FROM ConvertCSValuesToTable(@departmentIDs, ',') csv
inner join fw.DimDepartment d on d.DepartmentID = csv.val
inner join fw.DimPayPeriod pp on pp.PayCycleID =d.PayCycleID
inner join ConvertCSValuesToTable(@PayPeriodIDs, ',') p on p.val = pp.PayPeriodCode
INNER JOIN fw.DimPayPeriod pp_a on pp_a.PeriodNumber <= pp.PeriodNumber and pp_a.FiscalYearIDSecond = pp.FiscalYearIDSecond and pp_a.PayCycleID = pp.PayCycleID
inner join ConvertCSValuesToTable(@AccountIDs, ',') a on 1=1
ELSE
INSERT INTO #ConsolidatedParams (DepartmentID,AccountId,PayPeriodID)
SELECT DISTINCT d.DepartmentID,A.val as AccountID,pp.PayPeriodID
FROM ConvertCSValuesToTable(@departmentIDs, ',') csv
inner join fw.DimDepartment d on d.DepartmentID = csv.val
inner join fw.DimPayPeriod pp on pp.PayCycleID =d.PayCycleID
inner join ConvertCSValuesToTable(@PayPeriodIDs, ',') p on p.val = pp.PayPeriodCode
inner join ConvertCSValuesToTable(@AccountIDs, ',') a on 1=1
INSERT INTO #filtering (
DepartmentID
,AccountID
,PayPeriodID
,TimeClassID
,SelectTable
)
SELECT STAT.DepartmentID
,STAT.AccountID
,STAT.PayPeriodID
,STAT.TimeClassID
,1 AS SelectTable
FROM [int].[FactStatisticsbyPayPeriod] STAT
INNER JOIN [fw].[DimDepartment] D ON D.Departmentid = STAT.Departmentid
inner join #ConsolidatedParams cp on cp.AccountId = STAT.AccountID and cp.DepartmentID = STAT.DepartmentID and cp.PayPeriodID = STAT.PayPeriodID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
WHERE STAT.Value != 0
AND STAT.Isdeleted = 0
AND STAT.PayPeriodID != 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null)
AND STAT.TimeClassID = 1
AND stat.DepartmentID <> 0
UNION
SELECT stat.DepartmentID
,stat.AccountID
,PP.PayPeriodID
,stat.TimeClassID
,2 AS SelectTable
FROM [int].[FactSharedImportDailyStatistics] stat
INNER JOIN [fw].[DimDate] DATE ON stat.DateID = DATE.DateID
INNER JOIN [fw].[DimDepartment] D ON D.Departmentid = STAT.Departmentid
INNER JOIN [fw].[DimPayPeriod] PP ON D.PayCycleID = PP.PayCycleID
AND DATE.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate
AND PP.PeriodEndCalendarDate
inner join #ConsolidatedParams cp on cp.AccountId = STAT.AccountID and cp.DepartmentID = STAT.DepartmentID and cp.PayPeriodID = pp.PayPeriodID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
WHERE stat.Value <> 0
AND TimeClassID = 1
AND STAT.Isdeleted = 0
AND PP.PayPeriodID != 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null)
AND stat.DepartmentID <> 0
GROUP BY stat.DepartmentID
,stat.AccountID
,PP.PayPeriodID
,stat.TimeClassID
UNION
SELECT STAT.DepartmentID
,STAT.AccountID
,PP.PayPeriodID
,1 AS TimeClassID
,3 AS SelectTable
FROM [fw].[FactChargeBasedStatistics] STAT
INNER JOIN [fw].[DimDate] DATE ON STAT.DateID = DATE.DateID
INNER JOIN [fw].[DimDepartment] DEPT ON STAT.DepartmentID = DEPT.DepartmentID
INNER JOIN [fw].[DimPayPeriod] PP ON DEPT.PayCycleID = PP.PayCycleID
AND DATE.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate
AND PP.PeriodEndCalendarDate
inner join #ConsolidatedParams cp on cp.AccountId = STAT.AccountID and cp.DepartmentID = STAT.DepartmentID and cp.PayPeriodID = pp.PayPeriodID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
WHERE STAT.Value != 0
AND STAT.IsDeleted = 0
AND PP.PayPeriodID != 0
and (DEPT.IsPR = 1 or FDPSD.DepartmentID is not null)
GROUP BY STAT.DepartmentID
,STAT.AccountID
,PP.PayPeriodID
DELETE F FROM #filtering f
inner join (
SELECT DepartmentID
,AccountID
,PayPeriodID
,TimeClassID
,SelectTable
,max(SelectTable) OVER(PARTITION BY DepartmentID,AccountID,TimeClassID,PayPeriodID ORDER BY DepartmentID,AccountID,TimeClassID,PayPeriodID) AS SelectTableMax
,count(SelectTable) OVER(PARTITION BY DepartmentID,AccountID,TimeClassID,PayPeriodID ORDER BY DepartmentID,AccountID,TimeClassID,PayPeriodID) AS SelectTableCount
FROM #filtering) d
on f.DepartmentID = d.DepartmentID
and f.AccountID = d.AccountID
and f.TimeClassID = d.TimeClassID
and f.PayPeriodID = d.PayPeriodID
and NOT (d.SelectTableCount = 1 and d.SelectTableMax = 3)
SELECT
pt.PatientTypeRollupID,
bl.DepartmentID,
bl.FiscalYearID as FiscalYearID,
bl.ChargeCodeID,
sum(bl.UnitsOfService) AS ChargeCodeValue_UnitsOfService
INTO #SubSelect
FROM [dss].[FactPatientBillingLineItemDetail] bl
INNER JOIN clientdss.FactPatientEncounterSummary es WITH (READUNCOMMITTED) ON bl.EncounterID = es.EncounterID
INNER JOIN fw.DimPatientType pt WITH (READUNCOMMITTED) ON es.PatientTypeID = pt.PatientTypeID
INNER JOIN (
SELECT DISTINCT DepartmentID, dpp.PeriodStartCalendarDate, dateadd(millisecond, -1, convert(datetime2(3),dateadd(day, 1, convert(date, dpp.PeriodEndCalendarDate)))) as PeriodEndCalendarDate from #filtering f
INNER JOIN fw.DimPayPeriod dpp on dpp.PayPeriodID = f.PayPeriodID
) flt on flt.DepartmentID = bl.DepartmentID and bl.ServiceDateTime between flt.PeriodStartCalendarDate and flt.PeriodEndCalendarDate
GROUP BY pt.PatientTypeRollupID,
bl.ChargeCodeID,
bl.DepartmentID,
bl.FiscalYearID
option (recompile)
SELECT
S.ChargeCode,
S.PatientTypeRollup,
round(S.ChargeCodeValue_UnitsOfService, 0) AS ChargeCodeValue_UnitsOfService,
CAST(S.StatisticValue/S.ChargeCodeValue_UnitsOfService AS Numeric(19,4)) AS Weight,
S.StatisticValue
FROM
( SELECT
cc.NAME AS ChargeCode
,ptr.NAME AS PatientTypeRollup
,sum(subselect.ChargeCodeValue_UnitsOfService) as ChargeCodeValue_UnitsOfService
,sum(subselect.ChargeCodeValue_UnitsOfService * map.Weight) AS StatisticValue
FROM #SubSelect subselect
INNER JOIN [fw].[viewDepartmentChargeCodeStatisticMapping] map WITH (READUNCOMMITTED) ON subselect.DepartmentID = map.DepartmentID
AND subselect.ChargeCodeID = map.ChargeCodeID
AND subselect.PatientTypeRollupID = map.PatientTypeRollupID
AND map.FiscalYearID = subselect.FiscalYearID
INNER JOIN fw.DimChargeCode cc ON cc.ChargeCodeID = map.ChargeCodeID
INNER JOIN fw.DimPatientTypeRollup ptr WITH (READUNCOMMITTED) ON ptr.PatientTypeRollupID = subselect.PatientTypeRollupID
INNER JOIN (select distinct AccountID from #filtering) flt ON flt.AccountID = map.AccountID
WHERE map.Weight <> 0
GROUP BY cc.NAME, ptr.NAME
HAVING sum(subselect.ChargeCodeValue_UnitsOfService) <> 0
) S
IF OBJECT_ID('tempdb..#filtering') IS NOT NULL DROP TABLE #filtering
IF OBJECT_ID('tempdb..#SubSelect') IS NOT NULL DROP TABLE #SubSelect
IF OBJECT_ID('tempdb..#FDPSD') IS NOT NULL DROP TABLE #FDPSD
IF OBJECT_ID('tempdb..#ConsolidatedParams') IS NOT NULL DROP TABLE #ConsolidatedParams
END
GO
---------------------------------------------
-- fw.procInsertDimensionDefaults
--Author: gforeman
--Branch: GoldenManMigr
--Forward
CREATE PROCEDURE [fw].[procInsertDimensionDefaults]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @DEFAULTID int
SET @DEFAULTID = 0
DECLARE @DEFAULTNAME nvarchar(100)
SET @DEFAULTNAME = 'Not Specified'
IF NOT EXISTS (SELECT 1 FROM fw.DimAccount where AccountID = 0)
BEGIN
SET IDENTITY_INSERT fw.DimAccount ON
INSERT INTO fw.DimAccount (AccountID) VALUES (@DEFAULTID)
SET IDENTITY_INSERT fw.DimAccount OFF
END
IF NOT EXISTS (SELECT 1 FROM fw.DimDepartment where DepartmentID = 0)
BEGIN
SET IDENTITY_INSERT fw.DimDepartment ON
INSERT INTO fw.DimDepartment (DepartmentID, Description) VALUES (@DEFAULTID, @DEFAULTNAME)
SET IDENTITY_INSERT fw.DimDepartment OFF
END
IF NOT EXISTS (SELECT 1 FROM fw.DimEmployee where EmployeeID = 0)
BEGIN
SET IDENTITY_INSERT fw.DimEmployee ON
INSERT INTO fw.DimEmployee (EmployeeID, NameLast, NameFirst) VALUES (@DEFAULTID, @DEFAULTNAME, @DEFAULTNAME)
SET IDENTITY_INSERT fw.DimEmployee OFF
END
IF NOT EXISTS (SELECT 1 FROM fw.DimJobCode where JobCodeID = 0)
BEGIN
SET IDENTITY_INSERT fw.DimJobCode ON
INSERT INTO fw.DimJobCode (JobCodeID) VALUES (@DEFAULTID)
SET IDENTITY_INSERT fw.DimJobCode OFF
END
END
GO
---------------------------------------------
-- fw.procInsertPayPeriodsForPayCycle
CREATE PROC fw.procInsertPayPeriodsForPayCycle
@payCycleId INT,
@numOfYearsToAdd INT
AS
----verify paycycle id exists if it does not exit out
IF NOT EXISTS (SELECT 1 FROM fw.DimPayCycle WHERE PayCycleID=@payCycleId)
BEGIN
EXEC [migration].[LogMigrationDetail] @Name = 'fw.procInsertPayPeriodsForPayCycle',
@Message = 'PayCycleId not found',
@AffectedObject = 'fw.DimPayPeriod',
@Status='Warning';
Return
END
--limiting this to at most 20 years into the future from today and 20 years at a time
IF ((@numOfYearsToAdd>20) OR (DATEDIFF(YEAR, GETDATE(), (SELECT DATEADD(YEAR, @numOfYearsToAdd , MAX(PeriodEndCalendarDate)) FROM fw.dimpayperiod WHERE PayCycleID = @payCycleId)) > 20))
BEGIN
EXEC [migration].[LogMigrationDetail] @Name = 'fw.procInsertPayPeriodsForPayCycle',
@Message = 'Over limit of 20 for number of years to add at once or over 20 years from today for pay periods',
@AffectedObject = 'fw.DimPayPeriod',
@Status='Warning';
Return
END
DECLARE @lastPayPeriod INT;
DECLARE @paygap INT;
DECLARE @newStart DATETIME;
DECLARE @fiscalYear INT;
DECLARE @previousFiscalYear INT;
DECLARE @previousPeriodNum INT;
DECLARE @payCycleName VARCHAR(200);
SELECT TOP 1 @lastPayPeriod = pp.PayPeriodID, @paygap = pp.PeriodDays, @newStart = DATEADD(DAY, 1, PeriodEndCalendarDate),
@FiscalYear = dbo.GetFiscalYearForDate(PeriodEndCalendarDate) + @numOfYearsToAdd,
@previousFiscalYear = dbo.GetFiscalYearForDate(PeriodEndCalendarDate),
@previousPeriodNum = pp.periodnumber, @payCycleName = pp.PayCycleName
FROM
fw.dimpayperiod pp
WHERE pp.PayCycleID = @payCycleId ORDER BY PayPeriodID desc
DECLARE @endDate DATETIME SET @endDate = DATEFROMPARTS(@fiscalYear, (DATEPART(MONTH, dbo.GetFiscalYearEndDate())), DATEPART(DAY, dbo.GetFiscalYearEndDate()))
DECLARE @numOfEntries INT SET @numOfEntries = (SELECT FLOOR(DATEDIFF(day, @newStart, @endDate )/@paygap))
DECLARE @historyItemGUID UNIQUEIDENTIFIER = (SELECT NEWID());
IF OBJECT_ID('tempdb..#tempTablePayPeriods') IS NOT NULL DROP TABLE #tempTablePayPeriods;
CREATE TABLE #tempTablePayPeriods (PeriodDays TINYINT, RowNumberID INT, WorkingDays TINYINT, PayCycleId INT, PayCycleSortOrder INT,
AccrualMethod NVARCHAR(100), PayCycleCode NVARCHAR(200), PeriodEndCalendarDate DATETIME,
FiscalYearIDStart INT, FiscalYearIDSecond INT, PeriodNumber TINYINT, PayPeriodCode NVARCHAR(100),
Code NVARCHAR(350), Name NVARCHAR(350), PayCycleName VARCHAR(200), HistoryItemGUID UNIQUEIDENTIFIER)
INSERT into #tempTablePayPeriods
SELECT *,CONCAT(FiscalYearIdSecond, '-', PeriodNumber) PayPeriodCode, CONCAT(PayCycleCode, ' - ', finalCalculations.FiscalYearIdSecond,'-', PeriodNumber) Code,
CONCAT(@payCycleName, ' - ',finalCalculations.FiscalYearIdSecond, '-', PeriodNumber) Name, @payCycleName PayCycleName, @historyItemGUID HistoryItemGuid
FROM (
SELECT PeriodDays, RowNumberID, WorkingDays, PayCycleId, PayCycleSortOrder, AccrualMethod,
PayCycleCode, PeriodEndCalendarDate, FiscalYearIDStart, FiscalYearIDSecond, IIF(FiscalYearIdSecond = @previousFiscalYear, PeriodNumberCalc + @previousPeriodNum, PeriodNumberCalc) AS 'PeriodNumber'
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY FiscalYearIdSecond ORDER BY RowNumberID) AS 'PeriodNumberCalc'
FROM (
SELECT *, dbo.GetFiscalYearForDate((dateadd(day,(1)-PeriodDays,PeriodEndCalendarDate))) FiscalYearIdStart,
dbo.GetFiscalYearForDate(PeriodEndCalendarDate) FiscalYearIdSecond
FROM
(
SELECT
pp.PeriodDays,
rn.RowNumberID,
pp.WorkingDays,
pc.PayCycleID,
pc.SortOrder PayCycleSortOrder,
pc.AccrualMethod,
pc.Code PayCycleCode,
DATEADD(DAY, (@paygap * rn.RowNumberID), pp.PeriodEndCalendarDate) PeriodEndCalendarDate
FROM fw.DimPayPeriod pp
INNER JOIN fw.DimRowNumber rn ON rn.RowNumberID BETWEEN 1 AND @numOfEntries -- however many new entries are required
INNER JOIN fw.DimPayCycle pc ON pc.PayCycleID = pp.PayCycleID
WHERE pp.PayCycleID =@payCycleId
AND pp.PayPeriodID = @lastPayPeriod-- this whatever the last row in the current paycycle is
) baseSelection
) periodNumber
)periodNumberFilter
) finalCalculations ORDER BY finalCalculations.RowNumberID
INSERT INTO fw.dimpayperiod (PeriodDays, WorkingDays, PayCycleId, PayCycleSortOrder, AccrualMethod, PayCycleCode, PeriodEndCalendarDate, FiscalYearIDStart,
FiscalYearIDSecond, PeriodNumber, PayPeriodCode, Code, Name, PayCycleName, HistoryItemGUID)
SELECT PeriodDays, WorkingDays, PayCycleId, PayCycleSortOrder, AccrualMethod, PayCycleCode, PeriodEndCalendarDate, FiscalYearIDStart,
FiscalYearIDSecond, PeriodNumber, PayPeriodCode, Code, Name, PayCycleName, HistoryItemGUID
FROM #tempTablePayPeriods
--insert into history item table
DECLARE @entityguid UNIQUEIDENTIFIER SET @entityguid = (SELECT DimensionGUID FROM dbo.ScoreDimension WHERE GlobalID='Pay Period')
EXEC dbo.procLogObjectHistoryItemGUIDObjectType 'Strata.Score.Config.Dimension.ScoreDimension, Strata.Score, Version=2024.33.0.0, Culture=neutral, PublicKeyToken=null',
@entityguid,'Adding Pay Period Ids for Pay Cycle', 0, @historyItemGUID
DROP TABLE #tempTablePayPeriods;
GO
---------------------------------------------
-- fw.procMergeEncounterBasedStatistics
CREATE PROC fw.procMergeEncounterBasedStatistics
@statisticID int
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #detailsToMerge
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToMerge(RowId)
INSERT #detailsToMerge (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, SUM(ebs.Value)
FROM fw.FactEncounterBasedStatistics ebs
WHERE ebs.StatisticID = @statisticID
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
CREATE TABLE #batch
(
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToMerge
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToMerge
WHERE RowId >= @startRowId
ORDER BY RowID) as d
TRUNCATE TABLE #batch
INSERT #batch (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #detailsToMerge ebs
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
UPDATE fw.FactChargeBasedStatistics
SET Value = ebs.Value
FROM fw.FactChargeBasedStatistics cbs
JOIN #batch ebs
ON cbs.DepartmentID = ebs.DepartmentID
AND cbs.AccountID = ebs.AccountID
AND cbs.DateID = ebs.DateID
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #batch ebs
WHERE NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatistics cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.DateID = cbs.DateID
)
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToMerge d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToMerge
DROP TABLE IF EXISTS #batch
END
GO
---------------------------------------------
-- fw.procMergeEncounterBasedStatisticsMonthly
CREATE PROC fw.procMergeEncounterBasedStatisticsMonthly
@statisticID int
AS
BEGIN
SET NOCOUNT ON
DROP TABLE IF EXISTS #detailsToMerge
CREATE TABLE #detailsToMerge
(
FiscalYearID smallint,
FiscalMonthID tinyint,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
INSERT #detailsToMerge (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM fw.FactEncounterBasedStatisticsMonthly ebs
WHERE ebs.StatisticID = @statisticID
UPDATE #detailsToMerge
SET Value = aggr.AggregatedValue
FROM
(
SELECT ebs.FiscalYearID, ebs.FiscalMonthID, ebs.DepartmentID, ebs.AccountID, SUM(ebs.Value) AS AggregatedValue
FROM #detailsToMerge d
JOIN fw.FactEncounterBasedStatisticsMonthly ebs
ON ebs.DepartmentID = d.DepartmentID
AND ebs.AccountID = d.AccountID
AND ebs.FiscalYearID = d.FiscalYearID
AND ebs.FiscalMonthID = d.FiscalMonthID
GROUP BY ebs.FiscalYearID, ebs.FiscalMonthID, ebs.DepartmentID, ebs.AccountID
) aggr
JOIN #detailsToMerge det
ON aggr.DepartmentID = det.DepartmentID
AND aggr.AccountID = det.AccountID
AND aggr.FiscalYearID = det.FiscalYearID
AND aggr.FiscalMonthID = det.FiscalMonthID
UPDATE fw.FactChargeBasedStatisticsMonthly
SET Value = ebs.Value
FROM #detailsToMerge ebs
JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM #detailsToMerge ebs
WHERE NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatisticsMonthly cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
)
END
GO
---------------------------------------------
-- fw.procOptimizationRebuildIndexesAll
CREATE proc [fw].[procOptimizationRebuildIndexesAll]
@AreYouSureYouWantToTakeDownTheSQLServer bit = 0
as
/************************************************************
** Author: akowalski
** Create Date: 2015-12-08
** Description: Rebuilds indexs and updates statistics on all tables in the database. Do not use unless you're sure you know what you're doing. It could take days to complete on platform customers.
** Last Modified: 2015-12-08
** GM Release: 2015-12-08
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
**
*************************************************************/
if @AreYouSureYouWantToTakeDownTheSQLServer=1
begin
SET NOCOUNT ON;
DECLARE @SCHEMA nvarchar(256)
DECLARE @FactTableName nvarchar(256)
DECLARE @SQL nvarchar(1024)
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t
where t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression<>0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
--=================== BEGIN CID 1 =====================
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--=================== END CID 1 =======================
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t
where t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression=0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
--=================== BEGIN CID 1 =====================
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (DATA_COMPRESSION = PAGE)
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--=================== END CID 1 =======================
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
end
RETURN
GO
---------------------------------------------
-- fw.procOptimizationRebuildIndexesDimensions
CREATE proc [fw].[procOptimizationRebuildIndexesDimensions] as
/************************************************************
** Author: akowalski
** Create Date: 2013-02-18
** Description: Finds all dimension tables in the FW schemas and rebuilds indexes, for after dimension customization.
** Last Modified: 2013-02-18
** GM Release: 2013-03-12
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2013-02-19 DK 56588 Adding update statistics command
**
*************************************************************/
SET NOCOUNT ON;
DECLARE @SCHEMA nvarchar(256)
DECLARE @FactTableName nvarchar(256)
DECLARE @SQL nvarchar(1024)
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t
where t.schema_id in(select schema_id from sys.schemas where name in('fw', 'client')) and t.name like 'dim%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression<>0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
--=================== BEGIN CID 1 =====================
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--=================== END CID 1 =======================
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t
where t.schema_id in(select schema_id from sys.schemas where name in('fw', 'client')) and t.name like 'dim%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression=0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
--=================== BEGIN CID 1 =====================
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (DATA_COMPRESSION = PAGE)
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--=================== END CID 1 =======================
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
RETURN
GO
---------------------------------------------
-- fw.procOptimizationRebuildIndexesFillins
CREATE proc fw.procOptimizationRebuildIndexesFillins as
/************************************************************
** Author: akowalski
** Create Date: 2013-02-18
** Description: Finds all fillin tables rebuilds indexes, for after fillin refreshes.
** Last Modified: 2013-02-18
** GM Release: 2013-03-12
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
**
**
*************************************************************/
SET NOCOUNT ON;
DECLARE @SCHEMA nvarchar(256)
DECLARE @FactTableName nvarchar(256)
DECLARE @SQL nvarchar(1024)
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in ('data', 'dbo')) and t.name like 'ScoreFillin%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression<>0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in ('data', 'dbo')) and t.name like 'ScoreFillin%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression=0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (DATA_COMPRESSION = PAGE)
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
RETURN
GO
---------------------------------------------
-- fw.procOptimizationRebuildIndexesSecurity
CREATE proc fw.procOptimizationRebuildIndexesSecurity as
/************************************************************
** Author: akowalski
** Create Date: 2014-04-23
** Description: Finds all security related tables, for after mass security assignments.
** Last Modified: 2014-04-23
** GM Release: 2014.3
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
**
**
*************************************************************/
SET NOCOUNT ON;
DECLARE @SCHEMA nvarchar(256)
DECLARE @FactTableName nvarchar(256)
DECLARE @SQL nvarchar(1024)
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in ('dbo')) and t.name like 'S3%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression<>0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in ('dbo')) and t.name like 'S3%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression=0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (DATA_COMPRESSION = PAGE)
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
alter index all on dbo.xplan REBUILD
update statistics dbo.xplan WITH FULLSCAN
RETURN
GO
---------------------------------------------
-- fw.procOptimizationRebuildIndexesWorkflow
CREATE proc fw.procOptimizationRebuildIndexesWorkflow as
/************************************************************
** Author: akowalski
** Create Date: 2014-04-23
** Description: Finds all workflow related tables, for during heavy capital budgeting.
** Last Modified: 2014-04-23
** GM Release: 2014.3
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
**
**
*************************************************************/
SET NOCOUNT ON;
DECLARE @SCHEMA nvarchar(256)
DECLARE @FactTableName nvarchar(256)
DECLARE @SQL nvarchar(1024)
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in ('dbo')) and t.name like 'WF%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression<>0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
DECLARE FactTableCursor CURSOR FOR
select t.name, (select name from sys.schemas where schema_id = t.schema_id) from sys.tables t where t.schema_id in(select schema_id from sys.schemas where name in ('dbo')) and t.name like 'WF%'
and t.object_ID not in (
select distinct t.object_id from sys.tables t
inner join sys.indexes i on t.object_id=i.object_id
inner join sys.partitions p on t.object_id=p.object_ID and i.index_id=p.index_id
where p.data_compression=0
) order by t.name
open FactTableCursor
FETCH NEXT FROM FactTableCursor
INTO @FactTableName, @SCHEMA
WHILE @@FETCH_STATUS = 0
BEGIN
set @SQL = 'alter index all on ' + @SCHEMA + '.' + @FactTableName + ' REBUILD WITH (DATA_COMPRESSION = PAGE)
update statistics ' + @SCHEMA + '.' + @FactTableName + ' WITH FULLSCAN'
--print @SQL
EXECUTE sp_executesql @SQL
FETCH NEXT FROM FactTableCursor INTO @FactTableName, @SCHEMA
END
CLOSE FactTableCursor
DEALLOCATE FactTableCursor
RETURN
GO
---------------------------------------------
-- fw.procPayRollSampledAdjustedTargetMonthlyInsert
CREATE PROCEDURE [fw].[procPayRollSampledAdjustedTargetMonthlyInsert] (@FiscalYearID int = 0)
AS
BEGIN
/*
Proposal
If the client is not using flexing, this will be the target plus the efficiency factor
This should work regardless of the target basis (i.e. rolling avg or budget)
The factor will be applied after the inversion
If the factor type is percentage, the adjusted target will be the target*(1+factor)
i.e. if my target is 100 and my factor is 5%, the adjusted target will be 100*(1+0.05)=105
i.e. if my target is 100 and my factor is -5%, the adjusted target will be 100*(1+-0.05)=95
If the factor type is value, the adjusted value will be target + factor
i.e. if my target is 1000 and my factor is 200, the adjusted target will be will be 1000+200=1200
i.e. if my target is 1000 and my factor is -200, the adjusted target will be 1000-200=800
If there is more than one factor impacting a department and account or job code/pay code group combination, then the factors should layer on top of each other based on history order
If an efficiency factor does not exist for a particular account/job code, then the value in the new time class will be either flex or baseline target if flex is not used
This will happen after Flex is calculated
Include integration tests
*/
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-04-18 IP TK-57807 Fixed issue PR Statistic Sampling: 'Reallocate between departments' adjustment is calculated incorrectly
** 2 2019-01-17 GF D-08031 Optimized PCG case
** 3 2019-06-14 OV D-08158 Added join to JobCodeGroup
** 4 2019-10-22 KF D-08819 FTE Baseline Calculation Issue
** 5 2022-08-23 BC JAZZ-11498 Change Table Variable to Temporary Tables
************************************************************
*/
DECLARE @IsFlexingEnabled INT = (
SELECT value
FROM [mr].[SystemSetting]
WHERE NAME = 'Is Target Flexed'
)
IF EXISTS (SELECT TOP 1 * FROM [mr].[EfficiencyFactor]) BEGIN
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
CREATE TABLE #EfficiencyFactorScope (
EfficiencyFactorGUID [uniqueidentifier] NOT NULL
,[DepartmentID] [int] NOT NULL
,[JobCodeID] [int] NOT NULL
,[FiscalYearID] [smallint] NOT NULL
,[FiscalMonthID] [tinyint] NOT NULL
,Value NUMERIC(25, 6) NOT NULL
,Type TINYINT
,PayCodeGroupID [int] not null
,FactorType CHAR(1)
,DateCreated DATETIME
,UNIQUE CLUSTERED (
FiscalYearID
,FiscalMonthID
,DepartmentID
,JobCodeID
,EfficiencyFactorGUID
,PayCodeGroupID
)
);
WITH EfficiencyFactorScope
AS (
SELECT *
,rn = ROW_NUMBER() OVER (
PARTITION BY FiscalYearID
,FiscalMonthID
,DepartmentID
,JobCodeID
,Type
,PayCodeGroupID
,EfficiencyFactorGUID ORDER BY FiscalYearID
,FiscalMonthID
,DepartmentID
,JobCodeID
,Type
,PayCodeGroupID
,EfficiencyFactorGUID
)
FROM (
SELECT DISTINCT ef.EfficiencyFactorGUID
,ef.FiscalYearID
,efgd.FiscalMonthID
,efd.DepartmentID
,isnull(efgd.JobCodeID, djc.JobCodeID) AS JobCodeID
,efgd.Value
,ef.Type
,efgd.PayCodeGroupID
,ef.FactorType
,ef.DateCreated
FROM mr.EfficiencyFactor ef
INNER JOIN mr.EfficiencyFactorDepartment efd ON ef.EfficiencyFactorGUID = efd.EfficiencyFactorGUID
INNER JOIN mr.EfficiencyFactorPayrollDetails efgd ON efgd.EfficiencyFactorGUID = ef.EfficiencyFactorGUID
left JOIN fw.DimJobCode djc ON efgd.JobCodeGroupID = djc.JobCodeGroupID and efgd.JobCodeID is null
INNER JOIN (SELECT DISTINCT DepartmentID,JobCodeID FROM fw.FactPayRollSampledMonthly) scope on scope.JobCodeID = isnull(efgd.JobCodeID, djc.JobCodeID) and scope.DepartmentID = efd.DepartmentID
left JOIN mr.EfficiencyFactorPayrollDetails efgd_exist ON efgd.EfficiencyFactorGUID = efgd_exist.EfficiencyFactorGUID and efgd.PayCodeGroupID = efgd_exist.PayCodeGroupID and efgd_exist.JobCodeID = djc.JobCodeID and efgd_exist.FiscalMonthID = efgd.FiscalMonthID
WHERE (@FiscalYearID = ef.FiscalYearID or @FiscalYearID = 0) and (efgd_exist.JobCodeID is null or djc.JobCodeID is null) AND isnull(efgd.JobCodeID, djc.JobCodeID) IS NOT NULL
AND ef.Type in (2,3) --Payroll Dollars&Hours
) X
)
INSERT INTO #EfficiencyFactorScope (
EfficiencyFactorGUID
,[DepartmentID]
,[JobCodeID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,PayCodeGroupID
,FactorType
,DateCreated
)
SELECT EfficiencyFactorGUID
,[DepartmentID]
,[JobCodeID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,PayCodeGroupID
,FactorType
,DateCreated
FROM EfficiencyFactorScope
WHERE RN = 1
DELETE FROM fw.FactPayRollSampledMonthly WHERE (@FiscalYearID = FiscalYearID or @FiscalYearID = 0) and TimeClassID = 22
INSERT INTO fw.FactPayRollSampledMonthly (DepartmentID,
JobCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
PayCodeGroupID,
IsDeleted,
Hours,
Dollars)
SELECT
DepartmentID
,JobCodeID
,FiscalYearID
,FiscalMonthID
,22 as TimeClassID
,PayCodeGroupID
,0 as IsDeleted
,SUM(H) as Hours
,SUM(D) as Dollars
FROM (
SELECT isnull(fact.DepartmentID,ToApply.DepartmentID) as DepartmentID
,isnull(fact.JobCodeID,ToApply.JobCodeID) as JobCodeID
,isnull(fact.FiscalYearID,ToApply.FiscalYearID) as FiscalYearID
,isnull(fact.FiscalMonthID,ToApply.FiscalMonthID) as FiscalMonthID
,isnull(fact.PayCodeGroupID,ToApply.PayCodeGroupID) as PayCodeGroupID
,H = CASE WHEN Type = 3 and FactorType = 'P' THEN isnull(Hours,0.0)*isnull(Value,0.0)/100.00
WHEN Type = 3 and FactorType = 'V' THEN isnull(Value,0.0)
ELSE 0.0
END
,D = CASE WHEN Type = 2 and FactorType = 'P' THEN isnull(Dollars,0.0)*isnull(Value,0.0)/100.00
WHEN Type = 2 and FactorType = 'V' THEN isnull(Value,0.0)
ELSE 0.0
END
FROM #EfficiencyFactorScope ToApply
INNER JOIN (SELECT DISTINCT DepartmentID,JobCodeID FROM fw.FactPayRollSampledMonthly) GenCand on
GenCand.DepartmentID = ToApply.DepartmentID
AND GenCand.JobCodeID = ToApply.JobCodeID
FULL JOIN
(select DepartmentID
,JobCodeID
,FiscalYearID
,FiscalMonthID
,PayCodeGroupID
,Hours
,Dollars
FROM
fw.FactPayRollSampledMonthly
WHERE ( (
isnull(TimeClassID,0) = 4 AND @IsFlexingEnabled = 1
)
OR ( isnull(TimeClassID,0) = 20 AND @IsFlexingEnabled = 0
)
)
AND isnull(IsSystemGenerated,0) = 0 and (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) fact ON fact.DepartmentID = ToApply.DepartmentID
AND fact.JobCodeID = ToApply.JobCodeID
AND fact.FiscalYearID = ToApply.FiscalYearID
AND fact.FiscalMonthID = ToApply.FiscalMonthID
AND fact.PayCodeGroupID = ToApply.PayCodeGroupID
UNION ALL
select DepartmentID
,JobCodeID
,FiscalYearID
,FiscalMonthID
,PayCodeGroupID
,Hours
,Dollars
FROM
fw.FactPayRollSampledMonthly
WHERE ( (
isnull(TimeClassID,0) = 4 AND @IsFlexingEnabled = 1
)
OR ( isnull(TimeClassID,0) = 20 AND @IsFlexingEnabled = 0
)
)
AND isnull(IsSystemGenerated,0) = 0 and (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) X
GROUP BY
DepartmentID
,JobCodeID
,FiscalYearID
,FiscalMonthID
,PayCodeGroupID
exec [fw].[procFactMonthlyYTDPriorYearUpdate] @factTableName = 'fw.FactPayRollSampledMonthly',@keyNameCSV = 'JobCodeID,PayCodeGroupID,PayCodeID',@measureNameCSV = 'Dollars,Hours',@fiscalYearID = 0,@timeClassID = 22,@isDebugOnly = 0
exec [fw].[procFactPayrollSampledMonthlyUpdateFTEs] @fiscalYearID = @FiscalYearID, @timeClassID = 22
END
END
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
GO
---------------------------------------------
-- fw.procPayrollSampledDailyDetailedInsert
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2017-02-16 GF B-14308 Created
** 2 2017-02-20 GF D-05613 Add tests for zero rows, FTEs
** 3 2017-03-06 GF B-14693 Ensure daily enabled
** 4 2017-04-04 IP TK-40663 Added test to compare general sums
** 5 2017-05-10 IP D-05913 Added testcase from rolling baseline target values
** 6 2017-06-07 IP Commented out baseline test
** 7 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 8 2017-06-19 IP Modify SP to use unique temp table procPayrollSampledDailyDetailedInsert
** 9 2017-06-23 IP Fixed issue with transaction log out of memory procPayrollSampledDailyDetailedInsert
** 10 2017-09-08 IP Adding Budget Adjustments to fw_procPayrollSampledDailyDetailedInsert
** 11 2017-09-23 IP Adding Budget Adjustments to fw_procPayrollSampledDailyDetailedInsert
** 12 2018-02-15 IP Add react to archived FTE Adjutments in fw_procPayrollSampledDailyDetailedInsert
** 13 2018-02-22 IP D-06786 add department calculation for TC = 2 if dept is not in PR , Dept is in Budget Allocation
** 14 2018-03-08 ip B-18793 PR - Daily processing post action 2 week run
** 15 2018-05-17 IP D-07329 Returning fuctionality to include stats for departments using non-PR driver departments
** 16 2018-05-21 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 17 2018-05-17 IP TK-58509 reverting functionality of ignoring 0s
** 18 2018-05-17 IP TK-58523 reaplying changes for D-06786
** 19 2018-08-27 OV D-07628 Fixed issu: PR Payroll Files Not Displaying in Data Sets
** 20 2018-08-28 IP D-07628 Fixed issu: PR Payroll Files Not Displaying in Data Sets (add ignoring @fiscalYearID if @isCalcDaily is set)
** 21 2018-09-11 kzhuk D-07649 PR Daily custom action calls procedures for wrong year
** 22 2018-10-05 OV D-07728 fix: PR Payroll Daily Sampling: isPR=0 departments and Job Codes are not filtered out during sampling for one year
** 23 2019-02-25 OV D-07697 fix: Daily custom action: FTEs are not calculated in case there was no data in the table before
** 24 2019-03-05 OV D-08020 table variables @departments converted to temp tables #departmentIDs
** 25 2019-03-29 OV D-07650 Payroll data are sampled for all Pay Period including after yesterday
** 26 2019-04-18 OV B-20571 Allow clients to input daily budget Payroll data
** 27 2019-04-23 OV B-20571 Take Dollars and Hours separately from different tables as Value, grouped by IDs and UnitType in the end
** 28 2019-05-14 OV B-22955 Filtered procedure by new 'isDaily' column from DimJobCode
** 29 2019-07-24 OV D-08629 FTEs are set to 0 for first Pay Period days belonging to previous year
** 30 2019-10-15 WR D-08686 Run PR Process Task is filling transaction log
** 31 2019-11-25 IH TK-80619 Rollback transaction log changes
** 32 2020-01-08 HV B-25788 procPayrollSampledDailyInsert DBA Enhancements
** 33 2021-12-10 HV JAZZ-23990 procPayrollSampledDailyDetailedInsert Filling Up Temp DB
** 34 2021-12-16 HV JAZZ-23990 procPayrollSampledDailyDetailedInsert Filling Up Temp DB
** 35 2022-01-20 HV JAZZ-32256 PR Department Productivity Daily Page Performance Improvements
** 36 2022-02-15 HV JAZZ-33795 PR Department Productivity Daily Page: Compress view index
** 37 2022-03-21 HV JAZZ-31812 PR - Daily budget hours doubled in certain pay periods
JAZZ-22706 Year Changeover In Daily Staffing is inflating Prior Year Days from Transfer Proc Update
** 38 2022-10-27 ishah JAZZ-45100 Reuse split by batches functionality in existing procedure
** 39 2022-11-22 HV JAZZ-44508 Automated Daily PR processing doesn't calculate future target, when system center processing does
** 40 2023-10-09 HV JAZZ-61830 PR - Index and department filter changes - fw.procPayrollSampledDailyDetailedInsert and client.procFactPayrollSampledDailyDetailedFTEsInsert_Staging
** 41 2023-11-09 BS JAZZ-62716 PR -Transaction Log is filled out: fw.procPayrollSampledDailyDetailedInsert and client.procFactPayrollSampledDailyDetailedFTEsInsert_Staging (insert by batches)
** 42 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
*************************************************************/
CREATE proc [fw].[procPayrollSampledDailyDetailedInsert]
@fiscalYearID int = 0,
@isCalcDaily bit = 0,
@isFeatureFlagOn bit = 0
with recompile
as
declare @yearOfSampling int = [fw].[GetPayPeriodSamplingYear] (@fiscalYearID, @isCalcDaily)
DECLARE @currentDateOverride nvarchar(max) = (SELECT Value FROM [pi].[SystemSetting] WHERE Name = 'Current Date Override')
DECLARE @currentDate date = CASE
WHEN @currentDateOverride = '' THEN CAST(GETDATE() AS DATE)
ELSE CAST (@currentDateOverride AS DATE)
END
DECLARE @yesterday_date date = DATEADD(DAY, - 1, @currentDate)
IF OBJECT_ID('tempdb..#PayrollSampledDailyDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledDailyDetailedStaging
declare @IterationFiscalYearID int
IF OBJECT_ID('tempdb..#departmentsBudgetAllocations') IS NOT NULL DROP TABLE #departmentsBudgetAllocations
create table #departmentsBudgetAllocations (val int primary key)
insert into #departmentsBudgetAllocations (val)
select
SourceDepartmentID as DepartmentID
from mr.BudgetReallocationAdjustment a
inner join mr.BudgetReallocation r on r.BudgetReallocationGUID=a.BudgetReallocationGUID
inner join FW.DimDepartment d on d.DepartmentID = r.TargetDepartmentID and d.IsPR = 1
where SourceDepartmentID <> 0
union -- unique
select
TargetDepartmentID as DepartmentID
from mr.BudgetReallocationAdjustment a
inner join mr.BudgetReallocation r on r.BudgetReallocationGUID=a.BudgetReallocationGUID
inner join FW.DimDepartment d on d.DepartmentID = r.SourceDepartmentID and d.IsPR = 1 -- Filtering all departments that move data FROM selected
where TargetDepartmentID <> 0
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
select PayPeriodID,PayCycleID,PeriodStartCalendarDate,PeriodEndCalendarDate into #DailyCalcPeriodsScope
from fw.DimPayPeriod
where
(@isCalcDaily = 1 and @yesterday_date BETWEEN PeriodStartCalendarDate and PeriodEndCalendarDate) -- if @isCalcDaily = 1 is present we ignore what @yearOfSampling is passed to stored procedure (based on B-18793)
or
(@isCalcDaily = 0 AND (@fiscalYearID = FiscalYearIDSecond or @fiscalYearID = 0)) -- if @isCalcDaily = 0 we should react to what @fiscalYearID is set
--cancel if not using daily
if (not exists(select 1 from pi.SystemSetting where Name = 'PR Daily Enabled' and Value = '1')) begin return end
--pull new data - actuals
create table #PayrollSampledDailyDetailedStaging (DepartmentID int, JobCodeID int, PayCodeID int, PayCodeGroupID int, EmployeeID int, PayPeriodID int, DateID int, TimeClassID int, Hours decimal(18,4), Dollars decimal(18,4), FTEs decimal(18,4))
-- Split by batches
DECLARE @batchSize INT
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 120000000,
@ResultBatchSize = @batchSize OUTPUT
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
CREATE TABLE #inputDepartments (DepartmentID INT, RecordsCount INT, BatchID INT)
DECLARE
@fromClause nvarchar(max) = '
(
select
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
pp.PayPeriodID,
data.DateID,
data.TimeClassID,
sum(case when data.UnitTypeID = 51 and pc.IsHoursIgnored = 0 then data.Value else 0 end) as Hours,
sum(case when data.UnitTypeID = 34 and pc.IsDollarsIgnored = 0 then data.Value else 0 end) as Dollars,
0 AS FTEs
from
int.FactStaffingDaily data
inner join [fw].[DimPayCode] pc on data.PayCodeID = pc.PayCodeID
inner join fw.DimDepartment d on d.DepartmentID = data.DepartmentID
inner join fw.DimDate dt on dt.DateID = data.DateID
inner join fw.DimPayPeriod pp on pp.PayCycleID = d.PayCycleID and dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
where
pp.PayPeriodID != 0
and data.IsDeleted = 0
and data.Value != 0
and d.IsPR = 1
and TimeClassID = 1
group by
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
pp.PayPeriodID,
data.DateID,
data.TimeClassID) X'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
insert into #PayrollSampledDailyDetailedStaging (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, DateID, TimeClassID, Hours, Dollars, FTEs)
select
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
pp.PayPeriodID,
data.DateID,
data.TimeClassID,
sum(case when data.UnitTypeID = 51 and pc.IsHoursIgnored = 0 then data.Value else 0 end) as Hours,
sum(case when data.UnitTypeID = 34 and pc.IsDollarsIgnored = 0 then data.Value else 0 end) as Dollars,
0 AS FTEs
from
int.FactStaffingDaily data
inner join [fw].[DimPayCode] pc on data.PayCodeID = pc.PayCodeID
inner join fw.DimDepartment d on d.DepartmentID = data.DepartmentID
inner join fw.DimDate dt on dt.DateID = data.DateID
inner join fw.DimPayPeriod pp on pp.PayCycleID = d.PayCycleID and dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
inner join #inputDepartments ID ON ID.DepartmentID = data.DepartmentID
where
pp.PayPeriodID != 0
and data.IsDeleted = 0
and data.Value != 0
and d.IsPR = 1
and TimeClassID = 1
and ID.BatchID = @BatchID
-- and (@fiscalYearID = 0 or dt.FiscalYear = @fiscalYearID) -- #DailyCalcPeriodsScope already contains all Pay Periods that should be recalculated, so filtering by year could bring destructive effect in case @fisclaYearID <> 'calendar year' (conflict @FiscalYearID and @isCalcDaily)
group by
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
pp.PayPeriodID,
data.DateID,
data.TimeClassID
SET @BatchID = @BatchID + 1
END
--pull new data - budget from daily, payperiod, monthly data
IF OBJECT_ID('tempdb..#StaffingDaily') IS NOT NULL DROP TABLE #StaffingDaily
CREATE TABLE #StaffingDaily (
DepartmentID INT,
JobCodeID int,
PayCodeID SMALLINT,
PayCodeGroupID INT,
DateID INT,
TimeClassID TINYINT,
PayPeriodID SMALLINT,
UnitTypeID TINYINT,
IsHoursIgnored BIT,
IsDollarsIgnored BIT,
Value DECIMAL(19,4))
-- Split by batches
TRUNCATE TABLE #inputDepartments
SET @fromClause = '
(
SELECT
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored
FROM int.FactStaffingDaily FACT
inner join [fw].[DimPayCode] PC on PC.PayCodeID = FACT.PayCodeID
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join [fw].[DimDate] DT on DT.DateID = FACT.dateID
inner join fw.dimpayPeriod PP on pp.PayCycleID = d.PayCycleID and dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
DT.FiscalMonth != 0
and FACT.FiscalYearID != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or dba.val IS NOT NULL)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored) X'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
insert into #StaffingDaily(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, DateID, TimeClassID, PayPeriodID, UnitTypeID, IsHoursIgnored, IsDollarsIgnored, Value)
select
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored,
sum(FACT.Value) AS Value
from
int.FactStaffingDaily FACT
inner join [fw].[DimPayCode] PC on PC.PayCodeID = FACT.PayCodeID
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join [fw].[DimDate] DT on DT.DateID = FACT.dateID
inner join fw.dimpayPeriod PP on pp.PayCycleID = d.PayCycleID and dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
inner join #inputDepartments ID ON ID.DepartmentID = FACT.DepartmentID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
DT.FiscalMonth != 0
and FACT.FiscalYearID != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or dba.val IS NOT NULL)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
and ID.BatchID = @BatchID
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored
SET @BatchID = @BatchID + 1
END
-------------------------------------------------------------------------------------------------------------------------------------
-- Split by batches
TRUNCATE TABLE #inputDepartments
SET @fromClause = '
(
SELECT
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored
FROM int.FactStaffingByPayPeriod FACT
inner join [fw].[DimPayCode] PC on PC.PayCodeID = FACT.PayCodeID
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join fw.DimPayPeriod pp on pp.PayPeriodID = FACT.PayPeriodID
inner join [fw].[DimDate] DT on dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
left join #StaffingDaily spp on SPP.PayPeriodID = FACT.PayPeriodID and
SPP.DepartmentID = FACT.DepartmentID and
SPP.JobCodeID = FACT.JobCodeID and
SPP.PayCodeID = FACT.PayCodeID and
SPP.TimeClassID = FACT.TimeClassID and
SPP.UnitTypeID = FACT.UnitTypeID
inner join fw.DimPayCycle PCC on PCC.PayCycleID = PP.PayCycleID
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
spp.DepartmentID IS NULL
and DT.FiscalMonth != 0
and FACT.FiscalYearID != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or dba.val IS NOT NULL)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored ) X'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
insert into #StaffingDaily(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, DateID, TimeClassID, PayPeriodID, UnitTypeID, IsHoursIgnored, IsDollarsIgnored, Value)
select
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored,
sum(FACT.Value/PCC.PeriodDays) AS Value
from
int.FactStaffingByPayPeriod FACT
inner join [fw].[DimPayCode] PC on PC.PayCodeID = FACT.PayCodeID
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join fw.DimPayPeriod pp on pp.PayPeriodID = FACT.PayPeriodID
inner join [fw].[DimDate] DT on dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
left join #StaffingDaily spp on SPP.PayPeriodID = FACT.PayPeriodID and
SPP.DepartmentID = FACT.DepartmentID and
SPP.JobCodeID = FACT.JobCodeID and
SPP.PayCodeID = FACT.PayCodeID and
SPP.TimeClassID = FACT.TimeClassID and
SPP.UnitTypeID = FACT.UnitTypeID
inner join fw.DimPayCycle PCC on PCC.PayCycleID = PP.PayCycleID
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
inner join #inputDepartments ID ON ID.DepartmentID = FACT.DepartmentID
where
spp.DepartmentID IS NULL
and DT.FiscalMonth != 0
and FACT.FiscalYearID != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or dba.val IS NOT NULL)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
and ID.BatchID = @BatchID
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored
SET @BatchID = @BatchID + 1
END
--------------------------------------------------------------------------------------------------------------------
TRUNCATE TABLE #inputDepartments
SET @fromClause = '
int.FactStaffing FACT
INNER JOIN fw.DimDepartment d ON d.DepartmentID = FACT.DepartmentID'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'FACT',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
insert into #StaffingDaily(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, DateID, TimeClassID, PayPeriodID, UnitTypeID, IsHoursIgnored, IsDollarsIgnored, Value)
select
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored,
sum(FACT.Value/ dbo.GetDaysInMonth(DT.CalendarDateTime)) as Value
from
[int].[FactStaffing] FACT
inner join [fw].[DimPayCode] PC on PC.PayCodeID = FACT.PayCodeID
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join [fw].[DimDate] DT on DT.CalendarMonth = FACT.FiscalMonthID and DT.FiscalYear = FACT.FiscalYearID
inner join fw.DimPayperiod pp on pp.PayCycleID = d.PayCycleID and dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
left join #StaffingDaily spp on SPP.PayPeriodID = PP.PayPeriodID and
SPP.DepartmentID = FACT.DepartmentID and
SPP.JobCodeID = FACT.JobCodeID and
SPP.PayCodeID = FACT.PayCodeID and
SPP.TimeClassID = FACT.TimeClassID and
SPP.UnitTypeID = FACT.UnitTypeID
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
inner join #inputDepartments ID ON ID.DepartmentID = FACT.DepartmentID
where
spp.DepartmentID is null
and FACT.FiscalMonthID != 0
and FACT.FiscalYearID != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or dba.val IS NOT NULL)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
and ID.BatchID = @BatchID
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
PC.PayCodeGroupID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
FACT.UnitTypeID,
pc.IsHoursIgnored,
pc.IsDollarsIgnored
SET @BatchID = @BatchID + 1
END
TRUNCATE TABLE #inputDepartments
SET @fromClause = '
(SELECT G.DepartmentID, G.JobCodeID, G.PayCodeID, G.PayCodeGroupID, G.PayPeriodID, G.DateID, G.TimeClassID FROM #StaffingDaily G
INNER JOIN fw.DimJobCode jc on G.jobCodeID = jc.JobCodeID
WHERE jc.IsPR = 1 and jc.IsDaily = 1
GROUP BY G.DepartmentID, G.JobCodeID, G.PayCodeID, G.PayCodeGroupID, G.PayPeriodID, G.DateID, G.TimeClassID) X'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
insert into #PayrollSampledDailyDetailedStaging (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, DateID, TimeClassID, Hours, Dollars, FTEs)
select G.DepartmentID, G.JobCodeID, G.PayCodeID, G.PayCodeGroupID, 0 as EmployeeID, G.PayPeriodID, G.DateID, G.TimeClassID,
SUM(case when G.UnitTypeID = 51 and G.IsHoursIgnored = 0 then G.Value else 0 end) as Hours,
SUM(case when G.UnitTypeID = 34 and G.IsDollarsIgnored = 0 then G.Value else 0 end) as Dollars,
0
from #StaffingDaily G
inner join #inputDepartments ID ON ID.DepartmentID = G.DepartmentID
inner join fw.DimJobCode jc on G.jobCodeID = jc.JobCodeID
WHERE jc.IsPR = 1 and jc.IsDaily = 1 and ID.BatchID = @BatchID
GROUP BY G.DepartmentID, G.JobCodeID, G.PayCodeID, G.PayCodeGroupID, G.PayPeriodID, G.DateID, G.TimeClassID
SET @BatchID = @BatchID + 1
END
/*Budget adjustments FTE start*/
--pull new data - adjustments
DECLARE @NonProdGroupID INT = (
SELECT TOP 1 pcg.PayCodeGroupID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Non-Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @ProdGroupID INT = (
SELECT TOP 1 pcg.PayCodeGroupID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @NonProdPayCodeID INT = (
SELECT TOP 1 pcg.DefaultPayCodeID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Non-Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @ProdPayCodeID INT = (
SELECT TOP 1 pcg.DefaultPayCodeID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
insert into #PayrollSampledDailyDetailedStaging (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, DateID, TimeClassID, Hours, Dollars)
SELECT
Adj.DepartmentID,
Adj.JobCodeID,
Adj.PayCodeId,
Adj.PayCodeGroupID,
0 as EmployeeID,
PP.PayPeriodID,
dt.DateID,
2 AS TimeClassID, -- always Budgeted
sum(Adj.Hours / dbo.GetDaysInMonth(DT.CalendarDateTime)) AS Hours,
0 AS Dollars
FROM (
SELECT
b.DepartmentID,
b.JobCodeID,
@ProdPayCodeID as PayCodeID,
@ProdGroupID AS PayCodeGroupID,
b.FiscalYearID,
ba.FiscalMonthID,
ba.ProductiveChange AS Hours
FROM mr.BudgetPayrollReallocationAdjustment ba
INNER JOIN mr.BudgetPayrollReallocation b ON b.BudgetPayrollReallocationGUID = ba.BudgetPayrollReallocationGUID
LEFT JOIN
(select SourceDepartmentID as DepartmentID,
SourceJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
UNION ALL
select TargetDepartmentID as DepartmentID,
TargetJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
) fact on fact.DepartmentID = b.DepartmentID and fact.JobCodeID = b.JobCodeID and fact.FiscalYearID = b.FiscalYearID and fact.FiscalMonthID = ba.FiscalMonthID
WHERE (@yearOfSampling = 0 or b.FiscalYearID = @yearOfSampling) -- if @isCalcDaily = 1 we'll take calndar year, else - @FiscalYearId
and fact.DepartmentID is null and b.Archived = 0
UNION ALL
SELECT b.DepartmentID,
b.JobCodeID,
@NonProdPayCodeID as PayCodeID,
@NonProdGroupID AS PayCodeGroupID,
b.FiscalYearID,
ba.FiscalMonthID,
ba.NonProductiveChange AS Hours
FROM mr.BudgetPayrollReallocationAdjustment ba
INNER JOIN mr.BudgetPayrollReallocation b ON b.BudgetPayrollReallocationGUID = ba.BudgetPayrollReallocationGUID
LEFT JOIN
(select SourceDepartmentID as DepartmentID,
SourceJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
UNION ALL
select TargetDepartmentID as DepartmentID,
TargetJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
) fact on fact.DepartmentID = b.DepartmentID and fact.JobCodeID = b.JobCodeID and fact.FiscalYearID = b.FiscalYearID and fact.FiscalMonthID = ba.FiscalMonthID
WHERE (@yearOfSampling = 0 or b.FiscalYearID = @yearOfSampling) -- if @isCalcDaily = 1 we'll take calndar year, else - @FiscalYearId
and fact.DepartmentID is null and b.Archived = 0
) AS Adj
INNER JOIN fw.DimDepartment dd on adj.DepartmentID = dd.DepartmentID
INNER JOIN (
SELECT
p.[PayPeriodID],
p.PayCycleID,
p.[PeriodNumber],
p.[FiscalMonthIDStart] AS FiscalMonthID,
p.[FiscalYearIDStart] AS FiscalYearID,
p.[PeriodWeightStart] AS PreriodWeight,
p.PeriodStartCalendarDate,
p.PeriodEndCalendarDate
FROM [fw].[DimPayPeriod] p inner join #DailyCalcPeriodsScope cp on cp.PayPeriodID = p.PayPeriodID
UNION ALL
SELECT
p.[PayPeriodID],
p.PayCycleID,
p.[PeriodNumber],
p.FiscalMonthIDSecond AS FiscalMonthID,
p.FiscalYearIDSecond AS FiscalYearID,
p.PeriodWeightSecond AS PreriodWeight,
p.PeriodStartCalendarDate,
p.PeriodEndCalendarDate
FROM [fw].[DimPayPeriod] p inner join #DailyCalcPeriodsScope cp on cp.PayPeriodID = p.PayPeriodID
) PP ON PP.FiscalYearID = Adj.FiscalYearID
AND pp.FiscalMonthID = adj.FiscalMonthID
and pp.PayCycleID = dd.PayCycleID
inner join [fw].[DimDate] DT on DT.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate and dt.FiscalYear = pp.FiscalYearID
inner join #DailyCalcPeriodsScope dpc on dpc.PayPeriodID = pp.PayPeriodID
WHERE PP.PreriodWeight <> 0
GROUP BY Adj.DepartmentID,
Adj.JobCodeID,
dt.dateID,
Adj.PayCodeID,
Adj.PayCodeGroupID,
PP.PayPeriodID
HAVING sum(Adj.Hours * PP.PreriodWeight) <> 0
/*Budget adjustments FTE end*/
-- BudgetAdjustments Start
declare @iteration int = 1
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
DECLARE BRA_cursor CURSOR FOR
SELECT distinct BudgetReallocationGUID,date,BudgetReallocationType from fw.BudgetReallocationWithDefinedType
WHERE (@yearOfSampling = 0 or FiscalYearID = @yearOfSampling) -- if @isCalcDaily = 1 we'll take calndar year, else - @FiscalYearId
and DataType = 1
ORDER BY date;
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
INSERT INTO #PayrollSampledDailyDetailedStaging (DepartmentID, JobCodeID, EmployeeID, PayPeriodID, PayCodeID, PayCodeGroupID, DateID, TimeClassID, Hours, Dollars, FTEs)
SELECT TargetDepartmentID as DepartmentID,TargetJobCodeID as JobCodeID, stt.EmployeeID, PayPeriodID, stt.PayCodeID, stt.PayCodeGroupID, stt.DateID, stt.TimeClassID, stt.Hours, stt.Dollars, stt.FTEs
FROM #PayrollSampledDailyDetailedStaging STT
INNER JOIN fw.DimDate dt on dt.DateID = stt.DateID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.FiscalYearID = dt.FiscalYear
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and dt.CalendarMonth = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and TimeClassID = 2
and DataType = 1
UPDATE STT
SET Dollars = 0,
Hours = 0,
FTEs = 0
FROM #PayrollSampledDailyDetailedStaging STT
INNER JOIN fw.DimDate dt on dt.DateID = stt.DateID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.FiscalYearID = dt.FiscalYear
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and dt.CalendarMonth = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and TimeClassID = 2
and DataType = 1
END
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
-- BudgetAdjustments END
--calculate baseline target
declare @targetType int = (select Value from pi.SystemSetting where Name = 'Target Basis')
if (@targetType = 2) begin
--baseline target is based on budget, pull from monthly data
TRUNCATE TABLE #inputDepartments
SET @fromClause = '
#PayrollSampledDailyDetailedStaging X
WHERE X.TimeClassID = 2'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
insert into #PayrollSampledDailyDetailedStaging (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, DateID, TimeClassID, Hours, Dollars, FTEs)
select PS.DepartmentID, PS.JobCodeID, PS.PayCodeID, PS.PayCodeGroupID, PS.EmployeeID, PS.PayPeriodID, PS.DateID, 20, PS.Hours, PS.Dollars, PS.FTEs
from #PayrollSampledDailyDetailedStaging PS
inner join #inputDepartments ID ON ID.DepartmentID = PS.DepartmentID
where PS.TimeClassID = 2 and ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
end else if(@targetType = 10) begin
--baseline target is based on rolling period average, pull from pay period data
TRUNCATE TABLE #inputDepartments
SET @fromClause = '
(
select
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
FACT.PayCodeGroupID,
FACT.EmployeeID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID,
SUM(FACT.Hours) as Hours,
SUM(FACT.Dollars) as Dollars
from
fw.FactPayrollSampledPayPeriodDetailed FACT
inner join [fw].[DimPayPeriod] PP on PP.PayPeriodID = FACT.PayPeriodID
inner join [fw].[DimDate] DT on DT.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
inner join [fw].[DimDepartment] D on D.DepartmentID = FACT.DepartmentID
inner join #DailyCalcPeriodsScope dpc on FACT.PayPeriodID = dpc.PayPeriodID
where
FACT.PayPeriodID != 0
and FACT.IsDeleted = 0
and (FACT.Hours != 0 or FACT.Dollars != 0)
and D.IsPR = 1
and FACT.TimeClassID = 20
and FACT.DepartmentID <> 0
--and (@fiscalYearID = 0 or DT.FiscalYear = @fiscalYearID)
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
FACT.PayCodeGroupID,
FACT.EmployeeID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID) X'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
;with groupedBaselineTargetPayroll as(
select
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
FACT.PayCodeGroupID,
FACT.EmployeeID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID,
SUM(FACT.Hours) as Hours,
SUM(FACT.Dollars) as Dollars
from
fw.FactPayrollSampledPayPeriodDetailed FACT
inner join [fw].[DimPayPeriod] PP on PP.PayPeriodID = FACT.PayPeriodID
inner join [fw].[DimDate] DT on DT.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
inner join [fw].[DimDepartment] D on D.DepartmentID = FACT.DepartmentID
inner join #DailyCalcPeriodsScope dpc on FACT.PayPeriodID = dpc.PayPeriodID
where
FACT.PayPeriodID != 0
and FACT.IsDeleted = 0
and (FACT.Hours != 0 or FACT.Dollars != 0)
and D.IsPR = 1
and FACT.TimeClassID = 20
and FACT.DepartmentID <> 0
--and (@fiscalYearID = 0 or DT.FiscalYear = @fiscalYearID)
group by
FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeID,
FACT.PayCodeGroupID,
FACT.EmployeeID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID)
insert into #PayrollSampledDailyDetailedStaging (DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, DateID, TimeClassID, Hours, Dollars, FTEs)
select G.DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, EmployeeID, G.PayPeriodID, DateID, TimeClassID, Hours / PP.PeriodDays, Dollars / PP.PeriodDays, 0
from groupedBaselineTargetPayroll G
inner join fw.DimPayPeriod PP on PP.PayPeriodID = G.PayPeriodID
inner join #inputDepartments ID ON ID.DepartmentID = G.DepartmentID
where ID.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
end
--calculate FTEs
IF @fiscalYearID = 0 and @isCalcDaily = 0 and @isFeatureFlagOn = 1
BEGIN
IF OBJECT_ID('tempdb..#PayrollSampledDailyDetailedFTEs') IS NOT NULL DROP TABLE #PayrollSampledDailyDetailedFTEs
create table #PayrollSampledDailyDetailedFTEs (DepartmentID int, JobCodeID int, PayCodeID int, PayCodeGroupID int, EmployeeID int, PayPeriodID int, DateID int, TimeClassID int, FTEs decimal(18,4))
exec client.procFactPayrollSampledDailyDetailedFTEsInsert_Staging @fiscalYearID = @yearOfSampling, @isFeatureFlagOn = @isFeatureFlagOn
END
ELSE
BEGIN
exec client.procFactPayrollSampledDailyDetailedFTEsInsert_Staging @fiscalYearID = @yearOfSampling
END
--!!!Removing all records where Department is not PR
delete fact
from #PayrollSampledDailyDetailedStaging fact
inner join fw.dimDepartment d on d.DepartmentID = fact.DepartmentID and d.isPR = 0
IF @fiscalYearID = 0 and @isCalcDaily = 0 -- if all parameters shows that we are recalculating everything
BEGIN
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'viewFactPayrollSampledDailyDetailedHours', @indexName = 'CU_viewFactPayrollSampledDailyDetailedHours', @isView = 1
truncate table [fw].[FactPayrollSampledDailyDetailed]
DBCC CHECKIDENT('[fw].[FactPayrollSampledDailyDetailed]', RESEED, 0);
CREATE CLUSTERED INDEX CORE_DepartmentID on #PayrollSampledDailyDetailedStaging (DepartmentID) with (data_compression = page)
IF @isFeatureFlagOn = 1
BEGIN
CREATE CLUSTERED INDEX CORE_DepartmentID on #PayrollSampledDailyDetailedFTEs (DepartmentID) with (data_compression = page)
-- Drop Indexes
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'FactPayrollSampledDailyDetailed', @indexName = 'IDX_FactPayrollSampledDailyDetailed'
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'FactPayrollSampledDailyDetailed', @indexName = 'NCNU_IsDeleted'
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 60000000,
@ResultBatchSize = @batchSize OUTPUT
SET @fromClause = '
(
select
f.DepartmentID,
f.JobCodeID,
f.PayCodeID,
f.PayCodeGroupID,
f.EmployeeID,
f.PayPeriodID,
f.DateID,
f.TimeClassID,
SUM(f.Hours) as Hours,
SUM(f.Dollars) as Dollars,
SUM(isnull(fte.FTEs,0)) as FTEs,
0 as isDeleted
from
#PayrollSampledDailyDetailedStaging f
inner join fw.DimJobCode jc on f.JobCodeID = jc.JobCodeID
left join #PayrollSampledDailyDetailedFTEs fte on f.DepartmentID = fte.DepartmentID AND f.JobCodeID = fte.JobCodeID AND f.PayCodeID = fte.PayCodeID AND f.PayCodeGroupID = fte.PayCodeGroupID AND f.EmployeeID = fte.EmployeeID AND f.PayPeriodID = fte.PayPeriodID AND f.DateID = fte.DateID AND f.TimeClassID = fte.TimeClassID
where jc.IsPR = 1 and jc.IsDaily = 1
group by
f.DepartmentID,
f.JobCodeID,
f.PayCodeID,
f.PayCodeGroupID,
f.EmployeeID,
f.PayPeriodID,
f.DateID,
f.TimeClassID) X'
-- Split data into batches
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
CREATE TABLE #inputPayPeriods (PayPeriodID INT, RecordsCount INT, BatchID INT)
INSERT INTO #inputPayPeriods
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'PayPeriodID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO [fw].[FactPayrollSampledDailyDetailed] With (TABLOCKX) (
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
IsDeleted
)
select
f.DepartmentID,
f.JobCodeID,
f.PayCodeID,
f.PayCodeGroupID,
f.EmployeeID,
f.PayPeriodID,
f.DateID,
f.TimeClassID,
SUM(f.Hours) as Hours,
SUM(f.Dollars) as Dollars,
SUM(isnull(fte.FTEs,0)) as FTEs,
0 as isDeleted
from
#PayrollSampledDailyDetailedStaging f
INNER JOIN #inputPayPeriods IPP ON IPP.PayPeriodID = f.PayPeriodID and IPP.BatchID = @BatchID
inner join fw.DimJobCode jc on f.JobCodeID = jc.JobCodeID
left join #PayrollSampledDailyDetailedFTEs fte on f.DepartmentID = fte.DepartmentID AND f.JobCodeID = fte.JobCodeID AND f.PayCodeID = fte.PayCodeID AND f.PayCodeGroupID = fte.PayCodeGroupID AND f.EmployeeID = fte.EmployeeID AND f.PayPeriodID = fte.PayPeriodID AND f.DateID = fte.DateID AND f.TimeClassID = fte.TimeClassID
where jc.IsPR = 1 and jc.IsDaily = 1
group by
f.DepartmentID,
f.JobCodeID,
f.PayCodeID,
f.PayCodeGroupID,
f.EmployeeID,
f.PayPeriodID,
f.DateID,
f.TimeClassID
SET @BatchID = @BatchID + 1
END
CREATE NONCLUSTERED INDEX [IDX_FactPayrollSampledDailyDetailed] ON [fw].[FactPayrollSampledDailyDetailed]
(
[DepartmentID] ASC,
[JobCodeID] ASC,
[PayCodeID] ASC,
[PayCodeGroupID] ASC,
[EmployeeID] ASC,
[DateID] ASC,
[TimeClassID] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledDailyDetailed]
(
[IsDeleted] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
END
ELSE -- IF @isFeatureFlagOn = 0
BEGIN
set @IterationFiscalYearID = (select min(dd.FiscalYear) from #PayrollSampledDailyDetailedStaging f
inner join fw.DimDate dd on dd.DateID = f.DateID)
WHILE @IterationFiscalYearID <= (select max(dd.FiscalYear) from #PayrollSampledDailyDetailedStaging f
inner join fw.DimDate dd on dd.DateID = f.DateID )
BEGIN
INSERT INTO [fw].[FactPayrollSampledDailyDetailed] With (TABLOCKX) (
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
IsDeleted
)
select
f.DepartmentID,
f.JobCodeID,
f.PayCodeID,
f.PayCodeGroupID,
f.EmployeeID,
f.PayPeriodID,
f.DateID,
f.TimeClassID,
SUM(f.Hours) as Hours,
SUM(f.Dollars) as Dollars,
SUM(f.FTEs) as FTEs,
0 as isDeleted
from
#PayrollSampledDailyDetailedStaging f
inner join fw.DimDate dd on dd.DateID = f.DateID
inner join fw.DimJobCode jc on f.JobCodeID = jc.JobCodeID
where dd.FiscalYear = @IterationFiscalYearID and jc.IsPR = 1 and jc.IsDaily = 1
group by
f.DepartmentID,
f.JobCodeID,
f.PayCodeID,
f.PayCodeGroupID,
f.EmployeeID,
f.PayPeriodID,
f.DateID,
f.TimeClassID
set @iterationFiscalYearId = @iterationFiscalYearId + 1
END
END
CREATE UNIQUE CLUSTERED INDEX CU_viewFactPayrollSampledDailyDetailedHours
ON fw.viewFactPayrollSampledDailyDetailedHours (PayPeriodID, DepartmentID, EmployeeID, TimeClassID, RowID)
WITH (DATA_COMPRESSION = PAGE)
END
ELSE
BEGIN
;WITH TGT AS (SELECT t.* FROM
[fw].[FactPayrollSampledDailyDetailed] t With (TABLOCKX)
inner join #DailyCalcPeriodsScope dcps on dcps.PayPeriodID = t.PayPeriodID
--where (@fiscalYearID = 0 or pd.FiscalYear = @fiscalYearID) -- #DailyCalcPeriodsScope already contains all Pay Periods that should be recalculated, so filtering by year could bring destructive effect in case @fisclaYearID <> 'calendar year' (conflict @FiscalYearID and @isCalcDaily)
)
MERGE
TGT AS target
USING (
select DepartmentID,f.JobCodeID,PayCodeID,PayCodeGroupID,EmployeeID,PayPeriodID,DateID,TimeClassID,
SUM(Hours) as Hours,
SUM(Dollars) as Dollars,
SUM(FTEs) as FTEs
from
#PayrollSampledDailyDetailedStaging f
inner join fw.DimJobCode jc on f.JobCodeID = jc.JobCodeID
where jc.isPR = 1 and jc.IsDaily = 1
group by DepartmentID,f.JobCodeID,PayCodeID,PayCodeGroupID,EmployeeID,PayPeriodID,DateID,TimeClassID
) AS source
ON
SOURCE.DepartmentID=TARGET.DepartmentID
AND SOURCE.JobCodeID=TARGET.JobCodeID
AND SOURCE.PayCodeID = TARGET.PayCodeID
AND SOURCE.PayCodeGroupID=TARGET.PayCodeGroupID
AND SOURCE.EmployeeID=TARGET.EmployeeID
AND SOURCE.PayPeriodID=TARGET.PayPeriodID
AND SOURCE.TimeClassID=TARGET.TimeClassID
AND SOURCE.DateID=TARGET.DateID
WHEN MATCHED AND
(target.Hours <> source.Hours
or target.Dollars <> source.Dollars
or target.FTEs <> source.FTEs
)
THEN
UPDATE
SET target.Hours = source.Hours,
target.Dollars = source.Dollars,
target.FTEs = source.FTEs
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
IsDeleted
)
VALUES (
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
0)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
END
IF @isCalcDaily = 1
begin
delete from [fw].[FactPayrollSampledDailyDetailed] where dateID > (select MIN(dateID) from fw.dimDate where CalendarDateTime >= @yesterday_date )and TimeClassID = 1
end
delete from [fw].[FactPayrollSampledDailyDetailed] where Hours = 0 and Dollars = 0 and TimeClassID = 1
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
IF OBJECT_ID('tempdb..#PayrollSampledDailyDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledDailyDetailedStaging
IF OBJECT_ID('tempdb..#departmentsBudgetAllocations') IS NOT NULL DROP TABLE #departmentsBudgetAllocations
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
IF OBJECT_ID('tempdb..#StaffingDaily') IS NOT NULL DROP TABLE #StaffingDaily
IF OBJECT_ID('tempdb..#PayrollSampledDailyDetailedFTEs') IS NOT NULL DROP TABLE #PayrollSampledDailyDetailedFTEs
-- UPDATE STATISTICS
UPDATE STATISTICS fw.FactPayrollSampledDailyDetailed;
GO
---------------------------------------------
-- fw.procPayrollSampledDailyInsert
/***************************************************************
** CID Date Author WI Description
** 1 2016-12-17 mholov B-13509 Pull Budgeted amounts from monthly table
** 2 2017-01-11 akozlov D-05410 Minor fix
** 3 2017-01-31 akozlov B-13926 Added department filter
** 4 2017-02-08 gforeman B-14308 Added year filter
** 5 2017-02-20 gforeman D-05613 Prevent zero rows
** 6 2017-03-06 gforeman B-14693 Cancel sampling if daily disabled
** 7 2017-05-16 ipetriv D-05915 Added statistics recalculating to FactPayrollSampledDailyDetailed
** 8 2017-05-29 ipetriv B-15994 Refactored sampling process and implemented using of staging tables
** 9 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 10 2017-06-20 IP B-15086 fixing issues: FTEs = 0 after recalculation for one year / duplicates appers for one year recalculation
** 11 2018-09-12 ipetriv B-16737 Allow job codes in PR to use 70-hour work weeks - Sampling Updates
** 12 2018-09-11 kzhuk D-07649 PR Daily custom action calls procedures for wrong year
** 13 2019-04-24 OV B-22924 Allow 0 data (except actual) in procPayrollSampledDailyInsert (B-20571)
** 14 2019-05-14 OV B-22955 Filtered by new 'isDaily' column from DimjobCode
** 15 2019-07-23 OV D-08628 Sampled data for first PayPeriod from previous year
** 16 2019-10-31 KF D-08926 PR Payroll Daily sampling: process fails due to full DB Transaction log
** 17 2019-11-25 IH TK-80619 Rollback transaction log changes
** 18 2020-01-08 HV B-25788 procPayrollSampledDailyInsert DBA Enhancements
** 19 2020-01-14 HV D-09150 Inflated 'Target FTE Daily' values caused by duplicates in FactPayrollSampledDaily
** 20 2021-12-21 HV JAZZ-31105 procPayrollSampledDailyInsert Filling Up DB For All Years Run (Rolling Average Target Basis)
** 21 2022-10-28 ishah JAZZ-45100 Reuse split by batches functionality in existing procedure
** 22 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
**************************************************************/
CREATE PROCEDURE [fw].[procPayrollSampledDailyInsert]
@departmentIDs NVARCHAR(max) = NULL,
@fiscalYearID INT = 0,
@isCalcDaily bit = 0,
@isFeatureFlagOn bit = 0
WITH RECOMPILE
AS
IF OBJECT_ID('tempdb..#departments') IS NOT NULL DROP TABLE #departments
SELECT val INTO #departments
FROM ConvertCSValuesToTable(@departmentIDs, ',')
SELECT DepartmentID,
JobCodeID,
WorkingHoursCoef = cast(dww.Hours AS NUMERIC(20, 6)) / 7
INTO #WorkWeekHours
FROM (
SELECT DepartmentID,
JobCodeID,
WorkWeekID = COALESCE(jc.WorkWeekID, de.WorkWeekID, - 1)
FROM (
SELECT dp.DepartmentID,
WorkWeekID = CASE
WHEN e.WorkWeekID > - 1
THEN e.WorkWeekID
ELSE NULL
END
FROM fw.DimEntity e
INNER JOIN fw.DimDepartment dp on e.EntityID = dp.EntityID
) DE
CROSS JOIN (
SELECT djc.JobCodeID,
djcg.JobCodeGroupID,
WorkWeekID = CASE
WHEN djc.WorkWeekOverrideID > - 1
THEN djc.WorkWeekOverrideID
WHEN djc.WorkWeekOverrideID = - 1
AND djcg.WorkWeekOverrideID > - 1
THEN djcg.WorkWeekOverrideID
ELSE NULL
END
FROM fw.DimJobCode djc
INNER JOIN fw.DimJobCodeGroup djcg
ON djc.JobCodeGroupID = djcg.JobCodeGroupID
WHERE djc.IsDaily = 1 and djc.IsPR = 1
) JC
) DeptJobCode
LEFT JOIN fw.DimWorkWeek dww
ON DeptJobCode.WorkWeekID = dww.WorkWeekID
IF OBJECT_ID('tempdb..#dates') IS NOT NULL DROP TABLE #dates
SELECT DISTINCT DateID INTO #dates
FROM fw.DimDate dt
INNER JOIN fw.DimPayPeriod pp on dt.CalendarDateTime BETWEEN pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
where
(@isCalcDaily = 1 and DATEADD(DAY,-1,CAST(GETDATE() as DATE)) BETWEEN pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate) -- if @isCalcDaily = 1 is present we ignore what @yearOfSampling is passed to stored procedure (based on B-18793)
or
(@isCalcDaily = 0 and (@fiscalYearID = pp.FiscalYearIDSecond or @fiscalYearID = 0))
--cancel if not using daily
IF (
NOT EXISTS (
SELECT 1
FROM pi.SystemSetting
WHERE NAME = 'PR Daily Enabled'
AND Value = '1'
)
)
BEGIN
RETURN
END
/*If target basis is rolling average then we can't calculate baseline as simple sum of detailed table.
in his case we should
1)insert summed values for all timeclasses except baseline (TimeClassId = 20)
2)recalculate baseline (including FTE for baseline records)
*/
IF (
SELECT Value
FROM pi.SystemSetting
WHERE NAME = 'Target Basis'
) = 10 -- rolling average
BEGIN
IF @fiscalYearID = 0 AND @isCalcDaily = 0
AND @departmentIDs IS NULL
BEGIN
TRUNCATE TABLE [fw].[FactPayrollSampledDaily]
IF @isFeatureFlagOn = 0
BEGIN
/*recalculate baseline for just inserted values*/
;
WITH groupedBaselineTargetPayroll
AS (
SELECT FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeGroupID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID,
SUM(FACT.Hours) AS Hours,
SUM(FACT.Dollars) AS Dollars
FROM fw.FactPayrollSampledPayPeriod FACT
INNER JOIN [fw].[DimPayPeriod] PP
ON PP.PayPeriodID = FACT.PayPeriodID
INNER JOIN [fw].[DimDate] DT
ON DT.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate AND PP.PeriodEndCalendarDate
INNER JOIN [fw].[DimDepartment] D
ON D.DepartmentID = FACT.DepartmentID
WHERE FACT.PayPeriodID != 0
AND FACT.IsDeleted = 0
AND D.IsPR = 1
AND FACT.TimeClassID = 20
AND FACT.DepartmentID != 0
GROUP BY FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeGroupID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID
)
INSERT INTO fw.FactPayrollSampledDaily (
DepartmentID,
JobCodeID,
PayCodeGroupID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs
)
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID,
SUM(fact.Hours),
SUM(fact.Dollars),
FTEs = SUM(isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0))
FROM (
SELECT DepartmentID,
JobCodeID,
PayCodeGroupID,
G.PayPeriodID,
DateID,
TimeClassID,
Hours / PP.PeriodDays AS Hours,
Dollars / PP.PeriodDays AS Dollars
FROM groupedBaselineTargetPayroll G
INNER JOIN fw.DimPayPeriod PP
ON PP.PayPeriodID = G.PayPeriodID
) fact
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
GROUP BY fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID
UNION ALL
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID,
fact.Hours,
fact.Dollars,
FTEs = isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0)
FROM (
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID],
sum(fact.[Dollars]) AS Dollars,
sum(fact.[Hours]) AS Hours
FROM [fw].[FactPayrollSampledDailyDetailed] fact
INNER JOIN fw.DimDate dt
ON dt.DateID = fact.DateID
WHERE TimeClassID <> 20 -- all timeclasses except baseline (TimeClassId = 20)
GROUP BY fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID]
) FACT
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
END
ELSE --IF @isFeatureFlagOn = 1
BEGIN
IF OBJECT_ID('tempdb..#groupedBaselineTargetPayroll') IS NOT NULL DROP TABLE #groupedBaselineTargetPayroll
CREATE TABLE #groupedBaselineTargetPayroll (DepartmentID int, JobCodeID int, PayCodeGroupID int, PayPeriodID int, DateID int, TimeClassID int, Hours decimal(19,4), Dollars decimal(19,4))
INSERT INTO #groupedBaselineTargetPayroll(
DepartmentID,
JobCodeID,
PayCodeGroupID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars)
SELECT FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeGroupID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID,
SUM(FACT.Hours) AS Hours,
SUM(FACT.Dollars) AS Dollars
FROM fw.FactPayrollSampledPayPeriod FACT
INNER JOIN [fw].[DimPayPeriod] PP
ON PP.PayPeriodID = FACT.PayPeriodID
INNER JOIN [fw].[DimDate] DT
ON DT.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate AND PP.PeriodEndCalendarDate
INNER JOIN [fw].[DimDepartment] D
ON D.DepartmentID = FACT.DepartmentID
WHERE FACT.PayPeriodID != 0
AND FACT.IsDeleted = 0
AND D.IsPR = 1
AND FACT.TimeClassID = 20
AND FACT.DepartmentID != 0
GROUP BY FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeGroupID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID
DECLARE @BatchSize INT = 30000000
print 'By Batch'+convert(varchar(20),GETDATE(),113)
-- Split data into batches
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
CREATE TABLE #inputPayPeriods (PayPeriodID INT, RecordsCount INT, BatchID INT)
INSERT INTO #inputPayPeriods
EXEC dbo.procGetInputDataByBatches
@batchSize = @BatchSize,
@columnName = 'PayPeriodID',
@tableAlias = 'gp',
@fromClause = '#groupedBaselineTargetPayroll gp',
@whereClause = '',
@isDebug = 0
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
-- Drop Indexes
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'FactPayrollSampledDaily', @indexName = 'IDX_FactPayrollSampledDaily'
EXEC dbo.procSysDropIndex @schema = 'fw', @table = 'FactPayrollSampledDaily', @indexName = 'NCNU_IsDeleted'
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO fw.FactPayrollSampledDaily (
DepartmentID,
JobCodeID,
PayCodeGroupID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs
)
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID,
SUM(fact.Hours),
SUM(fact.Dollars),
FTEs = SUM(isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0))
FROM (
SELECT DepartmentID,
JobCodeID,
PayCodeGroupID,
G.PayPeriodID,
DateID,
TimeClassID,
Hours / PP.PeriodDays AS Hours,
Dollars / PP.PeriodDays AS Dollars
FROM #groupedBaselineTargetPayroll G
INNER JOIN #inputPayPeriods IPP ON IPP.PayPeriodID = G.PayPeriodID and IPP.BatchID = @BatchID
INNER JOIN fw.DimPayPeriod PP
ON PP.PayPeriodID = G.PayPeriodID
) fact
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
GROUP BY fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID
SET @BatchID = @BatchID + 1
END
INSERT INTO fw.FactPayrollSampledDaily (
DepartmentID,
JobCodeID,
PayCodeGroupID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs
)
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID,
fact.Hours,
fact.Dollars,
FTEs = isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0)
FROM (
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID],
sum(fact.[Dollars]) AS Dollars,
sum(fact.[Hours]) AS Hours
FROM [fw].[FactPayrollSampledDailyDetailed] fact
INNER JOIN fw.DimDate dt
ON dt.DateID = fact.DateID
WHERE TimeClassID <> 20 -- all timeclasses except baseline (TimeClassId = 20)
GROUP BY fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID]
) FACT
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
CREATE NONCLUSTERED INDEX [IDX_FactPayrollSampledDaily] ON [fw].[FactPayrollSampledDaily]
(
[DepartmentID] ASC,
[JobCodeID] ASC,
[PayCodeGroupID] ASC,
[PayPeriodID] ASC,
[DateID] ASC,
[TimeClassID] ASC
)
INCLUDE ([Dollars], [FTEs], [Hours])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [NCNU_IsDeleted] ON [fw].[FactPayrollSampledDaily]
(
[IsDeleted] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
IF OBJECT_ID('tempdb..#groupedBaselineTargetPayroll') IS NOT NULL DROP TABLE #groupedBaselineTargetPayroll
END
END
ELSE
BEGIN
WITH TGT
AS (
SELECT t.*
FROM [fw].[FactPayrollSampledDaily] t WITH (TABLOCKX)
INNER JOIN #dates pp on t.DateID = pp.DateID
WHERE (
@departmentIDs IS NULL
OR t.DepartmentID IN (
SELECT val
FROM #departments
)
)
),
groupedBaselineTargetPayrollFilteredByDates
AS (
SELECT FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeGroupID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID,
SUM(FACT.Hours) AS Hours,
SUM(FACT.Dollars) AS Dollars
FROM fw.FactPayrollSampledPayPeriod FACT
INNER JOIN [fw].[DimPayPeriod] PP
ON PP.PayPeriodID = FACT.PayPeriodID
INNER JOIN fw.DimDate DT
ON DT.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate AND PP.PeriodEndCalendarDate
INNER JOIN #dates FD
ON FD.DateID = DT.DateID
INNER JOIN [fw].[DimDepartment] D
ON D.DepartmentID = FACT.DepartmentID
WHERE FACT.PayPeriodID != 0
AND FACT.IsDeleted = 0
AND D.IsPR = 1
AND FACT.TimeClassID = 20
AND FACT.DepartmentID != 0
AND (
@departmentIDs IS NULL
OR FACT.DepartmentID IN (
SELECT val
FROM #departments
)
)
GROUP BY FACT.DepartmentID,
FACT.JobCodeID,
FACT.PayCodeGroupID,
FACT.PayPeriodID,
DT.DateID,
FACT.TimeClassID
)
MERGE TGT AS target
USING (
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID,
fact.Hours,
fact.Dollars,
FTEs = isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0)
FROM (
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID],
sum(fact.[Dollars]) AS Dollars,
sum(fact.[Hours]) AS Hours
FROM [fw].[FactPayrollSampledDailyDetailed] fact
INNER JOIN #dates dt
ON dt.DateID = fact.DateID
WHERE (
@departmentIDs IS NULL
OR DepartmentID IN (
SELECT val
FROM #departments
)
)
AND TimeClassID <> 20 -- all timeclasses except baseline (TimeClassId = 20)
GROUP BY fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID]
) FACT
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
UNION ALL
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID,
SUM(fact.Hours),
SUM(fact.Dollars),
FTEs = SUM(isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0))
FROM (
SELECT DepartmentID,
JobCodeID,
PayCodeGroupID,
G.PayPeriodID,
DateID,
TimeClassID,
Hours / PP.PeriodDays AS Hours,
Dollars / PP.PeriodDays AS Dollars
FROM groupedBaselineTargetPayrollFilteredByDates G
INNER JOIN fw.DimPayPeriod PP
ON PP.PayPeriodID = G.PayPeriodID
) fact
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
GROUP BY fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeGroupID,
fact.PayPeriodID,
fact.DateID,
fact.TimeClassID
) AS source
ON SOURCE.DepartmentID = TARGET.DepartmentID
AND SOURCE.JobCodeID = TARGET.JobCodeID
--AND SOURCE.PayCodeID = TARGET.PayCodeID
AND SOURCE.PayCodeGroupID = TARGET.PayCodeGroupID
--AND SOURCE.EmployeeID = TARGET.EmployeeID
AND SOURCE.PayPeriodID = TARGET.PayPeriodID
AND SOURCE.TimeClassID = TARGET.TimeClassID
AND SOURCE.DateID = TARGET.DateID
WHEN MATCHED
AND (
target.Hours <> source.Hours
OR target.Dollars <> source.Dollars
OR target.FTEs <> source.FTEs
)
THEN
UPDATE
SET target.Hours = source.Hours,
target.Dollars = source.Dollars,
target.FTEs = source.FTEs
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
JobCodeID,
-- PayCodeID,
PayCodeGroupID,
-- EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
IsDeleted
)
VALUES (
DepartmentID,
JobCodeID,
--PayCodeID,
PayCodeGroupID,
--EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
0
)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
END
END
ELSE /*Here is inserting aggregated rows in case when "Target Basis" is not rolling average*/
BEGIN
IF @fiscalYearID = 0 AND @departmentIDs IS NULL AND @isCalcDaily = 0
BEGIN
TRUNCATE TABLE [fw].[FactPayrollSampledDaily]
INSERT INTO [fw].[FactPayrollSampledDaily] (
[DepartmentID],
[JobCodeID],
[PayPeriodID],
[TimeClassID],
[DateID],
[PayCodeGroupID],
[Hours],
[Dollars],
[FTEs]
)
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayPeriodID],
fact.[TimeClassID],
fact.[DateID],
fact.[PayCodeGroupID],
fact.Hours,
fact.Dollars,
FTEs = isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0)
FROM (
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID],
sum(fact.[Dollars]) AS Dollars,
sum(fact.[Hours]) AS Hours
FROM [fw].[FactPayrollSampledDailyDetailed] fact
WHERE (
@departmentIDs IS NULL
OR DepartmentID IN (
SELECT val
FROM #departments
)
)
GROUP BY fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID]
) FACT
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
END
ELSE
WITH TGT
AS (
SELECT t.*
FROM [fw].[FactPayrollSampledDaily] t WITH (TABLOCKX)
INNER JOIN #dates pp
ON t.DateId = pp.DateID
WHERE (
@departmentIDs IS NULL
OR t.DepartmentID IN (
SELECT val
FROM #departments
)
)
)
MERGE TGT AS target
USING (
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayPeriodID],
fact.[TimeClassID],
fact.[DateID],
fact.[PayCodeGroupID],
fact.Hours,
fact.Dollars,
FTEs = isnull(CASE WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is null THEN fact.Hours / (WorkingDays * 8.0 / PeriodDays)
WHEN pcg.ProductiveClass IN ('Productive','Non-Productive') AND pp.PeriodNumber != 0 and ww.WorkingHoursCoef is not null THEN (fact.Hours) / WorkingHoursCoef
END, 0)
FROM (
SELECT fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID],
sum(fact.[Dollars]) AS Dollars,
sum(fact.[Hours]) AS Hours
FROM [fw].[FactPayrollSampledDailyDetailed] fact
INNER JOIN #dates dt
ON dt.DateID = fact.DateID
WHERE (
@departmentIDs IS NULL
OR DepartmentID IN (
SELECT val
FROM #departments
)
)
GROUP BY fact.[DepartmentID],
fact.[JobCodeID],
fact.[PayCodeGroupID],
fact.[PayPeriodID],
fact.[DateID],
fact.[TimeClassID]
) FACT
INNER JOIN fw.DimPayPeriod pp
ON pp.PayPeriodID = fact.PayPeriodID
INNER JOIN [fw].[viewDimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
INNER JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID and fact.JobCodeID = ww.JobCodeID
) AS source
ON SOURCE.DepartmentID = TARGET.DepartmentID
AND SOURCE.JobCodeID = TARGET.JobCodeID
--AND SOURCE.PayCodeID = TARGET.PayCodeID
AND SOURCE.PayCodeGroupID = TARGET.PayCodeGroupID
--AND SOURCE.EmployeeID = TARGET.EmployeeID
AND SOURCE.PayPeriodID = TARGET.PayPeriodID
AND SOURCE.TimeClassID = TARGET.TimeClassID
AND SOURCE.DateID = TARGET.DateID
WHEN MATCHED AND
(target.Hours <> source.Hours
or target.Dollars <> source.Dollars
or target.FTEs <> source.FTEs
)
THEN
UPDATE
SET target.Hours = source.Hours,
target.Dollars = source.Dollars,
target.FTEs = source.FTEs
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
JobCodeID,
-- PayCodeID,
PayCodeGroupID,
-- EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
IsDeleted
)
VALUES (
DepartmentID,
JobCodeID,
--PayCodeID,
PayCodeGroupID,
--EmployeeID,
PayPeriodID,
DateID,
TimeClassID,
Hours,
Dollars,
FTEs,
0
)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
DELETE FROM [fw].[FactPayrollSampledDaily] where TimeClassID = 1 and Dollars = 0 and Hours = 0
END
IF OBJECT_ID('tempdb..#departments') IS NOT NULL DROP TABLE #departments
IF OBJECT_ID('tempdb..#dates') IS NOT NULL DROP TABLE #dates;
GO
---------------------------------------------
-- fw.procPayrollSampledMonthlyDetailedInsert
/************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 9.19.14 MJS B-02788 Excluding Budget data from the detailed sample since budgeting at Pay Code level is not supported
** 2 2015-10-28 MJS D-03587 Added logic to exclude ignored hours and dollars
** 3 2016-09-22 AK B-11845 Added procFactPayrollSampledDetailedBaselineTargetUpdate
** 4 2016-12-13 NL B-13759 Added fiscalYearID param and filtering
** 5 2017-02-22 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 6 2017-02-22 IP B-14098 MR - Adjust Budgeted FTEs (Sampling). Added part that adds adjusted values to temp table #TEMPPAYROLL
** 7 2017-03-06 GF B-14693 Added baseline target year filter
** 8 2017-03-08 GF B-14693 Fix adjustment records year filter handling
** 9 2017-04-11 IP B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactPayrollSampledMonthlyDetailed.
** 10 2017-06-12 IP Changed type of hours/dollars fields to numeric instead of "money"
** 11 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 12 2017-07-11 IP D-06150 Fixed conditions of merge statement (update part)
** 13 2017-07-13 IP TK-45395 Fixed conditions of merge statement (include isSystemGenerated column)
** 14 2017-08-29 ip B-16798 Add using of Budget Adjustment.
** 15 2018-01-17 IP B-16703 Omit archived budget adjustments
** 16 2018-02-07 IP B-18725 MR - Provider sampling from payroll
** 17 2018-02-09 IP B-18724 Omit archived Budgeted FTE Adjustments
** 18 2019-06-26 OV D-08576 FTEs are not calculated for first FY, deleted transaction
** 19 2023-09-13 KF JAZZ-55750 Remove filter to allow other time classes in MR reporting
*************************************************************/
CREATE proc [fw].[procPayrollSampledMonthlyDetailedInsert]
@fiscalYearID smallint = 0
as
print 'Starting calculating staging table --- '+convert(varchar(20),GETDATE(),113)
IF OBJECT_ID('tempdb..#PayrollSampledMonthlyDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledMonthlyDetailedStaging
IF OBJECT_ID('fw.PayrollSampledMonthlyDetailedStagingWithCalcs') IS NOT NULL DROP TABLE fw.PayrollSampledMonthlyDetailedStagingWithCalcs
DECLARE
@fromClause nvarchar(max),
@whereClause nvarchar(max),
@MaxBatchID INT,
@BatchID INT,
@batchSize INT
--pull new data - data integration
CREATE TABLE #PayrollSampledMonthlyDetailedStaging (RowID bigint identity(1,1), DepartmentID int, JobCodeID int, EmployeeID int, PayCodeID int, PayCodeGroupID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Hours decimal(18,6), Dollars decimal(18,6), FTEs decimal(18,6),isDeleted bit, isSystemGenerated bit)
INSERT INTO #PayrollSampledMonthlyDetailedStaging(DepartmentID, JobCodeID, EmployeeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs)
SELECT
pr.DepartmentID,
pr.JobCodeID,
pr.EmployeeID,
pr.PayCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID,
SUM(CASE WHEN pr.unittypeID=51 and pc.IsHoursIgnored=0 then value ELSE 0 END) AS Hours,
SUM(CASE WHEN pr.unittypeID=34 and pc.IsDollarsIgnored=0 then value ELSE 0 END) AS Dollars,
0 as FTEs
FROM
int.FactStaffing pr
INNER JOIN fw.DimPayCode pc on pc.PayCodeID = PR.PayCodeID
left join mr.viewFactProviderBasedOnPayroll vw on vw.RowID = pr.RowID
WHERE
pr.FiscalMonthCode not in('', '0')
and pr.IsDeleted = 0
and pr.Value != 0
AND (pr.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and isnull(IsProvider,0) = 0
GROUP BY
pr.DepartmentID,
pr.JobCodeID,
pr.EmployeeID,
pr.PayCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID,
pr.PayCodeID
-- BudgetAdjustments Start
declare @iteration int = 1
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
DECLARE BRA_cursor CURSOR FOR
SELECT distinct BudgetReallocationGUID,date,BudgetReallocationType from fw.BudgetReallocationWithDefinedType
WHERE (FiscalYearID = @FiscalYearID or @FiscalYearID = 0) and DataType = 1
ORDER BY date;
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #PayrollSampledMonthlyDetailedStaging(DepartmentID, JobCodeID, EmployeeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs)
SELECT TargetDepartmentID as DepartmentID,TargetJobCodeID as JobCodeID, stt.EmployeeID, stt.PayCodeID, stt.PayCodeGroupID, stt.FiscalYearID, stt.FiscalMonthID, stt.TimeClassID, stt.Hours, stt.Dollars, stt.FTEs
FROM #PayrollSampledMonthlyDetailedStaging STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.FiscalYearID = stt.FiscalYearID
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and TimeClassID = 2
and DataType = 1
and Archived = 0
UPDATE STT
SET Dollars = 0,
Hours = 0,
FTEs = 0
FROM #PayrollSampledMonthlyDetailedStaging STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.FiscalYearID = stt.FiscalYearID
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and TimeClassID = 2
and DataType = 1
and Archived = 0
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
-- BudgetAdjustments END
--pull new data - adjustments
DECLARE @NonProdGroupID INT = (
SELECT TOP 1 pcg.PayCodeGroupID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Non-Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @ProdGroupID INT = (
SELECT TOP 1 pcg.PayCodeGroupID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @NonProdPayCodeID INT = (
SELECT TOP 1 pcg.DefaultPayCodeID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Non-Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @ProdPayCodeID INT = (
SELECT TOP 1 pcg.DefaultPayCodeID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
INSERT INTO #PayrollSampledMonthlyDetailedStaging(DepartmentID, JobCodeID, EmployeeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs)
SELECT b.DepartmentID,
b.JobCodeID,
0 as EmployeeID,
@NonProdPayCodeID AS PayCodeID,
@NonProdGroupID AS PayCodeGroupID,
b.FiscalYearID,
ba.FiscalMonthID,
2 AS TimeClassID, -- always Budgeted
ba.NonProductiveChange AS Hours,
0 AS Dollars,
0 AS FTEs
FROM mr.BudgetPayrollReallocationAdjustment ba
INNER JOIN mr.BudgetPayrollReallocation b ON b.BudgetPayrollReallocationGUID = ba.BudgetPayrollReallocationGUID
LEFT JOIN
(select SourceDepartmentID as DepartmentID,
SourceJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
UNION ALL
select TargetDepartmentID as DepartmentID,
TargetJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
) fact on fact.DepartmentID = b.DepartmentID and fact.JobCodeID = b.JobCodeID and fact.FiscalYearID = b.FiscalYearID and fact.FiscalMonthID = ba.FiscalMonthID
WHERE (@fiscalYearID = 0 or b.FiscalYearID = @fiscalYearID) and fact.DepartmentID is null and b.Archived = 0
UNION ALL
SELECT b.DepartmentID,
b.JobCodeID,
0 as EmployeeID,
@ProdPayCodeID AS PayCodeID,
@ProdGroupID AS PayCodeGroupID,
b.FiscalYearID,
ba.FiscalMonthID,
2 AS TimeClassID, -- always Budgeted
ba.ProductiveChange AS Hours,
0 AS Dollars,
0 AS FTEs
FROM mr.BudgetPayrollReallocationAdjustment ba
INNER JOIN mr.BudgetPayrollReallocation b ON b.BudgetPayrollReallocationGUID = ba.BudgetPayrollReallocationGUID
LEFT JOIN
(select SourceDepartmentID as DepartmentID,
SourceJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
UNION ALL
select TargetDepartmentID as DepartmentID,
TargetJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
) fact on fact.DepartmentID = b.DepartmentID and fact.JobCodeID = b.JobCodeID and fact.FiscalYearID = b.FiscalYearID and fact.FiscalMonthID = ba.FiscalMonthID
WHERE (@fiscalYearID = 0 or b.FiscalYearID = @fiscalYearID) and fact.DepartmentID is null and b.Archived = 0
--run calculations
exec fw.procFactMonthlyMergeDuplicates '#PayrollSampledMonthlyDetailedStaging', 'JobCodeID,EmployeeID,PayCodeGroupID,PayCodeID', 'Dollars,Hours', @fiscalYearID, 0, 0
--exec client.procPayrollMonthlyPostSampleAccrual --custom accrual process: customize it for different accruals, by default does nothing
exec fw.procFactPayrollSampledDetailedBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactMonthlyYTDPriorYearUpdateStaging 'fw.FactPayrollSampledMonthlyDetailed','#PayrollSampledMonthlyDetailedStaging','JobCodeID,EmployeeID,PayCodeGroupID,PayCodeID', 'Dollars,Hours', @fiscalYearID, 0, 0
exec client.procFactPayrollSampledMonthlyDetailedFTEsInsertStaging
print 'finish staging calculations --- '+convert(varchar(20),GETDATE(),113)
-- insert result
IF @fiscalYearID = 0
BEGIN
truncate table fw.FactPayrollSampledMonthlyDetailed
-- split by batches
IF OBJECT_ID('tempdb..#inputDetails') IS NOT NULL DROP TABLE #inputDetails
SELECT
@fromClause = 'fw.PayrollSampledMonthlyDetailedStagingWithCalcs s',
@whereClause = ''
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 60000000,
@ResultBatchSize = @batchSize OUTPUT
CREATE TABLE #inputDetails (DepartmentID INT, RecordsCount INT, BatchID INT)
INSERT INTO #inputDetails
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 's',
@fromClause = @fromClause,
@whereClause = @whereClause,
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDetails
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO fw.FactPayrollSampledMonthlyDetailed With (TABLOCKX) (
DepartmentID,
FiscalMonthID,
FiscalYearID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
SELECT
S.DepartmentID,
S.FiscalMonthID,
S.FiscalYearID,
S.JobCodeID,
S.PayCodeID,
S.PayCodeGroupID,
S.EmployeeID,
S.TimeClassID,
S.Dollars,
S.DollarsYTD,
COALESCE(S.DollarsPriorYear,0),
S.DollarsPriorYTD,
S.Hours,
S.HoursYTD,
COALESCE(S.HoursPriorYear,0),
S.HoursPriorYTD,
S.FTEs,
S.FTEsYTD,
COALESCE(S.FTEsPriorYear,0),
COALESCE(S.FTEsPriorYTD,0),
0 as IsDeleted,
isnull(S.IsSystemGenerated,0) as IsSystemGenerated
FROM fw.PayrollSampledMonthlyDetailedStagingWithCalcs S
INNER JOIN #inputDetails ISD ON ISD.DepartmentID = S.DepartmentID
WHERE ISD.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.PayrollSampledMonthlyDetailedStagingWithCalcs (DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID,FiscalYearID,FiscalMonthID,TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
MERGE fw.FactPayrollSampledMonthlyDetailed With (TABLOCKX) AS target
USING fw.PayrollSampledMonthlyDetailedStagingWithCalcs AS source
ON source.DepartmentID = target.DepartmentID
AND source.JobCodeID = target.JobCodeID
AND source.EmployeeID = target.EmployeeID
AND source.PayCodeID = target.PayCodeID
AND source.PayCodeGroupID = target.PayCodeGroupID
AND source.FiscalYearID = target.FiscalYearID
AND source.FiscalMonthID = target.FiscalMonthID
AND source.TimeClassID = target.TimeClassID
AND source.PayCodeID = target.PayCodeID
WHEN MATCHED AND
(target.Dollars <> source.Dollars
or target.DollarsYTD <> source.DollarsYTD
or target.DollarsPriorYear <> COALESCE(source.DollarsPriorYear,0)
or target.DollarsPriorYTD <> COALESCE(source.DollarsPriorYTD,0)
or target.Hours <> source.Hours
or target.HoursYTD <> source.HoursYTD
or target.HoursPriorYear <> COALESCE(source.HoursPriorYear,0)
or target.HoursPriorYTD <> COALESCE(source.HoursPriorYTD,0)
or target.FTEs <> source.FTEs
or target.FTEsYTD <> source.FTEsYTD
or target.FTEsPriorYear <> COALESCE(source.FTEsPriorYear,0)
or target.FTEsPriorYTD <> COALESCE(source.FTEsPriorYTD,0)
or target.isSystemGenerated <> source.isSystemGenerated)
THEN
UPDATE
SET target.Dollars = source.Dollars,
target.DollarsYTD = source.DollarsYTD,
target.DollarsPriorYear = COALESCE(source.DollarsPriorYear,0),
target.DollarsPriorYTD = COALESCE(source.DollarsPriorYTD,0),
target.Hours = source.Hours,
target.HoursYTD = source.HoursYTD,
target.HoursPriorYear = COALESCE(source.HoursPriorYear,0),
target.HoursPriorYTD = COALESCE(source.HoursPriorYTD,0),
target.FTEs = source.FTEs,
target.FTEsYTD = source.FTEsYTD,
target.FTEsPriorYear = COALESCE(source.FTEsPriorYear,0),
target.FTEsPriorYTD = COALESCE(source.FTEsPriorYTD,0),
target.isSystemGenerated = source.isSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
FiscalMonthID,
FiscalYearID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.FiscalMonthID,
source.FiscalYearID,
source.JobCodeID,
source.PayCodeID,
source.PayCodeGroupID,
source.EmployeeID,
source.TimeClassID,
source.Dollars,
source.DollarsYTD,
COALESCE(source.DollarsPriorYear,0),
COALESCE(source.DollarsPriorYTD,0),
source.Hours,
source.HoursYTD,
COALESCE(source.HoursPriorYear,0),
COALESCE(source.HoursPriorYTD,0),
source.FTEs,
source.FTEsYTD,
COALESCE(source.FTEsPriorYear,0),
COALESCE(source.FTEsPriorYTD,0),
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
AND Target.FiscalYearID = @fiscalYearID
THEN
DELETE;
END
IF OBJECT_ID('tempdb..#PayrollSampledMonthlyDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledMonthlyDetailedStaging
IF OBJECT_ID('fw.PayrollSampledMonthlyDetailedStagingWithCalcs') IS NOT NULL DROP TABLE fw.PayrollSampledMonthlyDetailedStagingWithCalcs
IF OBJECT_ID('tempdb..#PayrollSampledMonthlyDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledMonthlyDetailedStaging
GO
---------------------------------------------
-- fw.procPayrollSampledMonthlyFlexInsert
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 5/10/16 NL B-11692 Including FiscalYearID in delete
** 2 02/20/2017 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
*************************************************************/
CREATE proc [fw].[procPayrollSampledMonthlyFlexInsert]
@fiscalyearid smallint
with recompile
AS
--delete existing data
WHILE EXISTS(SELECT NULL FROM fw.FactPayrollSampledMonthly (nolock) WHERE FiscalYearID = @fiscalYearID and TimeClassID = 4) BEGIN
DELETE TOP (10000) fw.FactPayrollSampledMonthly WHERE FiscalYearID = @fiscalYearID and TimeClassID = 4
END
--pull new data
CREATE TABLE #TEMPPAYROLL (DepartmentID int, JobCodeID int, PayCodeID int, PayCodeGroupID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Hours money, Dollars money, FTEs decimal(18,6));
INSERT INTO #TEMPPAYROLL(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs)
SELECT
pr.DepartmentID,
pr.JobCodeID,
'0' as PayCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID,
SUM(CASE WHEN pr.unittypeID = 51 and pc.IsHoursIgnored=0 then value ELSE 0 END) AS Hours,
SUM(CASE WHEN pr.unittypeID = 34 and pc.IsDollarsIgnored=0 then value ELSE 0 END) AS Dollars,
0 as FTEs
FROM
int.FactStaffing pr
INNER JOIN fw.DimPayCode pc on pc.PayCodeID = PR.PayCodeID
WHERE
PR.FiscalMonthCode not in('', '0')
and pr.IsDeleted = 0
and pr.Value != 0
AND TimeClassID = 2
AND FiscalYearID = @fiscalyearid
GROUP BY
pr.DepartmentID,
pr.JobCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID
--push to fact table
INSERT INTO fw.FactPayrollSampledMonthly(DepartmentID, JobCodeID, PayCodeID, PayCodeGroupID, FiscalYearID, FiscalMonthID, TimeClassID, Hours, Dollars, FTEs)
SELECT
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
FiscalMonthID,
4,
SUM(Hours),
SUM(Dollars),
0 as FTEs
FROM #TEMPPAYROLL
GROUP BY
DepartmentID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
FiscalMonthID,
TimeClassID
HAVING
SUM(Hours) != 0
or SUM(Dollars) != 0
--run calculations
exec fw.procFactMonthlyMergeDuplicates 'fw.FactPayrollSampledMonthly', 'JobCodeID,PayCodeID,PayCodeGroupID', 'Dollars,Hours', @fiscalYearID, 4, 0
exec fw.procFactMonthlyYTDPriorYearUpdate 'fw.FactPayrollSampledMonthly', 'JobCodeID,PayCodeID,PayCodeGroupID', 'Dollars,Hours', @fiscalYearID, 4, 0
GO
---------------------------------------------
-- fw.procPayrollSampledMonthlyInsert
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2014-03-03 akk D-01526 Removing payroll import from sampling proc because it's redundant
** 2 2014-08-05 MJS B-02684 Updating sampling to include PayCodeGroupID
** 3 2014-09-03 MJS B-02863 Removing the parameter from the YTD proc call
** 4 2014-09-19 MJS B-02788 Setting PayCodeID to 0; Pay Code level data to be sourced from the PayrollSampledMonthlyDetailed data table
** 5 2015-10-28 MJS D-03587 Added logic to exclude ignored hours and dollars
** 6 2016-09-22 AK B-11845 Added procFactPayrollSampledBaselineTargetUpdate
** 7 2016-12-13 NL B-13759 Added fiscalYearID param and filtering
** 8 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 9 2017-02-22 IP B-14098 MR - Adjust Budgeted FTEs (Sampling). Added part that adds adjusted values to temp table #TEMPPAYROLL
** 10 2017-03-06 GF B-14693 Added baseline target year filter
** 11 2017-03-08 GF B-14693 Fix adjustment records year filter handling
** 12 2017-03-30 IP B-15085 Performace optimization by aggregating "detailed" data
** 13 2017-07-11 IP D-06150 Fixed conditions of merge statement (update part)
** 14 2017-07-25 IP B-17618 Applied logic for TimeClassID=20 when Target basis = "Prior Year" for FTE. Now it is equal to Prior Year hours divided by Prior Year FTE denominator.
** 15 2019-06-13 OV D-08158 Added join to jobcodegroup for Override
** 16 2019-06-19 OV TK-75157 FTEsPriorYear, FTEsPriorYTD are calculated incorrectly
** 17 2019-10-21 KF D-08819 FTE Baseline Calculation Issue
** 18 2023-09-14 KF JAZZ-55750 Remove filter to allow other time classes in MR reporting
*************************************************************/
CREATE PROCEDURE [fw].[procPayrollSampledMonthlyInsert] @fiscalYearID SMALLINT = 0
AS
--run custom scripts
exec [client].[procPayrollSampledInsertPreprocess]
--delete existing data
IF(@fiscalYearID = 0) BEGIN
TRUNCATE TABLE fw.FactPayrollSampledMonthly
END ELSE BEGIN
DECLARE @batchSize INT
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 10000000,
@ResultBatchSize = @batchSize OUTPUT
WHILE EXISTS(SELECT NULL FROM fw.FactPayrollSampledMonthly (nolock) WHERE FiscalYearID = @fiscalYearID) BEGIN
DELETE TOP (@batchSize) fw.FactPayrollSampledMonthly WHERE FiscalYearID = @fiscalYearID
END
END
/*If Target basis is rolling average then we can't calculate baseline as simple sum of detailed table.
in his case we should
1)insert summed values for all timeclasses except baseline (TimeClassId = 20)
2)recalculate baseline
3)run stored procedure to update columns YTD, priorYear etc.
*/
declare @TargetBasis int = (select Value from mr.SystemSetting where Name = 'Target Basis')
IF @TargetBasis = 10 -- rolling average
BEGIN
insert into fw.FactPayrollSampledMonthly (
DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
PayCodeGroupID,
IsSystemGenerated,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD
)
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeID,
fact.FiscalYearID,
fact.FiscalMonthID,
fact.TimeClassID,
fact.PayCodeGroupID,
IsSystemGenerated = case when fact.Hours = 0 and fact.Dollars = 0 then 1 else 0 end,
fact.Hours,
fact.HoursYTD,
fact.HoursPriorYear,
fact.HoursPriorYTD,
fact.Dollars,
fact.DollarsYTD,
fact.DollarsPriorYear,
fact.DollarsPriorYTD,
FTEs = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.Hours /wpmCY.Hours end,0),
FTEsYTD = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursYTD /wpmCY.YTDHours end,0),
FTEsPriorYear = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYear / wpmPY.Hours end,0),
FTEsPriorYTD = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYTD / wpmPY.YTDHours end,0)
FROM (
SELECT DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
sum(Hours) AS Hours,
sum(HoursYTD) AS HoursYTD,
sum(HoursPriorYear) AS HoursPriorYear,
sum(HoursPriorYTD) AS HoursPriorYTD,
sum(Dollars) AS Dollars,
sum(DollarsYTD) AS DollarsYTD,
sum(DollarsPriorYear) AS DollarsPriorYear,
sum(DollarsPriorYTD) AS DollarsPriorYTD,
PayCodeGroupID,
IsSystemGenerated = min(cast(IsSystemGenerated as tinyint))
FROM fw.FactPayrollSampledMonthlyDetailed
WHERE ( FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
and TimeClassID <> 20 -- all timeclasses except baseline (TimeClassId = 20)
GROUP BY DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
PayCodeGroupID
) fact
LEFT JOIN [fw].[DimDepartment] D
ON fact.DepartmentID = D.DepartmentID
LEFT JOIN [fw].[DimJobCode] JC
ON fact.JobCodeID = JC.JobCodeID
LEFT JOIN fw.DimJobCodeGroup JCG
ON JCG.JobCodeGroupID = JC.JobCodeGroupID
LEFT JOIN [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY
ON fact.FiscalMonthID = wpmCY.FiscalMonthID
AND fact.FiscalYearID = wpmCY.FiscalYearID
AND wpmCY.WorkWeekID = CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID = - 1 THEN D.WorkWeekID ELSE
CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID <> - 1 THEN jcg.WorkWeekOverrideID
ELSE jc.WorkWeekOverrideID END END
LEFT JOIN [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmPY
ON fact.FiscalMonthID = wpmPY.FiscalMonthID
AND (fact.FiscalYearID - 1) = wpmPY.FiscalYearID
AND wpmPY.WorkWeekID = CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID = - 1 THEN D.WorkWeekID ELSE
CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID <> - 1 THEN jcg.WorkWeekOverrideID
ELSE jc.WorkWeekOverrideID END END
LEFT JOIN fw.DimFiscalMonth fm
ON fact.FiscalMonthID = fm.FiscalMonthID
LEFT JOIN [fw].[DimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
WHERE fact.Hours <> 0
or fact.HoursYTD <> 0
or fact.HoursPriorYear <> 0
or fact.HoursPriorYTD <> 0
or fact.Dollars <> 0
or fact.DollarsYTD <> 0
or fact.DollarsPriorYear <> 0
or fact.DollarsPriorYTD <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.Hours /wpmCY.Hours end,0) <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursYTD /wpmCY.YTDHours end,0) <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYear / wpmPY.Hours end,0) <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYTD / wpmPY.YTDHours end,0) <> 0
exec fw.procFactPayrollSampledBaselineTargetUpdate @fiscalYearID = @fiscalYearID -- recalculate baseline for just inserted values
exec fw.procFactMonthlyYTDPriorYearUpdate 'fw.FactPayrollSampledMonthly', 'JobCodeID,PayCodeGroupID,PayCodeID', 'Dollars,Hours', @fiscalYearID, 20, 0 -- update baseline records columns
exec fw.procFactPayrollSampledMonthlyUpdateFTEs @fiscalYearID = @fiscalYearID, @timeClassID = 20
END
ELSE /*Here is inserting aggregated rows in case when "Target Basis" is not rolling average*/
BEGIN
insert into fw.FactPayrollSampledMonthly (
DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
PayCodeGroupID,
IsSystemGenerated,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD
)
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayCodeID,
fact.FiscalYearID,
fact.FiscalMonthID,
fact.TimeClassID,
fact.PayCodeGroupID,
IsSystemGenerated = case when fact.Hours = 0 and fact.Dollars = 0 then 1 else 0 end,
fact.Hours,
fact.HoursYTD,
fact.HoursPriorYear,
fact.HoursPriorYTD,
fact.Dollars,
fact.DollarsYTD,
fact.DollarsPriorYear,
fact.DollarsPriorYTD,
FTEs = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.Hours /wpmCY.Hours end,0),
FTEsYTD = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursYTD /wpmCY.YTDHours end,0),
FTEsPriorYear = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYear / wpmPY.Hours end,0),
FTEsPriorYTD = isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYTD / wpmPY.YTDHours end,0)
FROM (
SELECT DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
sum(Hours) AS Hours,
sum(HoursYTD) AS HoursYTD,
sum(HoursPriorYear) AS HoursPriorYear,
sum(HoursPriorYTD) AS HoursPriorYTD,
sum(Dollars) AS Dollars,
sum(DollarsYTD) AS DollarsYTD,
sum(DollarsPriorYear) AS DollarsPriorYear,
sum(DollarsPriorYTD) AS DollarsPriorYTD,
PayCodeGroupID,
IsSystemGenerated = min(cast(IsSystemGenerated as tinyint))
FROM fw.FactPayrollSampledMonthlyDetailed
WHERE ( FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
GROUP BY DepartmentID,
JobCodeID,
PayCodeID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
PayCodeGroupID
) fact
LEFT JOIN [fw].[DimDepartment] D
ON fact.DepartmentID = D.DepartmentID
LEFT JOIN [fw].[DimJobCode] JC
ON fact.JobCodeID = JC.JobCodeID
LEFT JOIN fw.DimJobCodeGroup JCG
ON JCG.JobCodeGroupID = JC.JobCodeGroupID
LEFT JOIN [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY
ON fact.FiscalMonthID = wpmCY.FiscalMonthID
AND (
(@TargetBasis = 1 AND
(
(fact.FiscalYearID-1 =wpmCY.FiscalYearID and TimeClassID = 20)
OR
(fact.FiscalYearID =wpmCY.FiscalYearID and TimeClassID <> 20)
)
)
OR
(@TargetBasis !=1 AND fact.FiscalYearID=wpmCY.FiscalYearID)
)
AND wpmCY.WorkWeekID = CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID = - 1 THEN D.WorkWeekID ELSE
CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID <> - 1 THEN jcg.WorkWeekOverrideID
ELSE jc.WorkWeekOverrideID END END
LEFT JOIN [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmPY
ON fact.FiscalMonthID = wpmPY.FiscalMonthID
AND (
(@TargetBasis = 1 AND
(
(fact.FiscalYearID-2 =wpmPY.FiscalYearID and TimeClassID = 20)
OR
(fact.FiscalYearID-1 =wpmPY.FiscalYearID and TimeClassID <> 20)
)
)
OR
(@TargetBasis !=1 AND fact.FiscalYearID-1 = wpmPY.FiscalYearID)
)
AND wpmPY.WorkWeekID = CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID = - 1 THEN D.WorkWeekID ELSE
CASE WHEN jc.WorkWeekOverrideID = - 1 and jcg.WorkWeekOverrideID <> - 1 THEN jcg.WorkWeekOverrideID
ELSE jc.WorkWeekOverrideID END END
LEFT JOIN fw.DimFiscalMonth fm
ON fact.FiscalMonthID = fm.FiscalMonthID
LEFT JOIN [fw].[DimPayCodeGroup] pcg
ON fact.PayCodeGroupID = pcg.PayCodeGroupID
WHERE fact.Hours <> 0
or fact.HoursYTD <> 0
or fact.HoursPriorYear <> 0
or fact.HoursPriorYTD <> 0
or fact.Dollars <> 0
or fact.DollarsYTD <> 0
or fact.DollarsPriorYear <> 0
or fact.DollarsPriorYTD <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.Hours /wpmCY.Hours end,0) <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursYTD /wpmCY.YTDHours end,0) <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYear / wpmPY.Hours end,0) <> 0
or isnull(case when pcg.ProductiveClassID in ('3','2') then fact.HoursPriorYTD / wpmPY.YTDHours end,0) <> 0
END
GO
---------------------------------------------
-- fw.procPayrollSampledMonthlyPerformFlexing
/*************************************************************************************************************************
** Change History
**************************************************************************************************************************
** CID Date Author WI Description
** 1 5/10/2016 NL B-11692 Changed flexing to work like new ABB flexing procs
** 2 5/20/2016 NL B-12055 Removed call to insert flexed data (handled in engine now)
** 3 2/20/2017 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 4 10/4/2017 NL D-06487 Fix some stuff that got lost including ABB dept join
** 5 10/22/2019 KF D-08819 FTE Baseline Calculation Issue
*************************************************************************************************************************/
CREATE proc [fw].[procPayrollSampledMonthlyPerformFlexing]
@CostingResultID int,
@CostingTimeClassID tinyint,
@FiscalYearID int
with recompile
AS
--reset all of the flex data to budget (only data that should be flexed like ABB)
SELECT DISTINCT DepartmentID
INTO #ABBDepts
from (
SELECT DepartmentID FROM [dss].[FactCostingOutDetailGL] WHERE CostingResultID = @CostingResultID
UNION ALL
SELECT DepartmentID FROM [dss].[FactCostingOutDetailPayroll] WHERE CostingResultID = @CostingResultID) depts;
INSERT INTO [fw].[FactPayrollSampledMonthly]([DepartmentID], [JobCodeID], [PayCodeID], [FiscalYearID], [FiscalMonthID], [TimeClassID], [Hours], [HoursYTD], [HoursPriorYear], [HoursPriorYTD], [Dollars], [DollarsYTD], [DollarsPriorYear], [DollarsPriorYTD], [FTEs], [FTEsYTD], [FTEsPriorYear], [FTEsPriorYTD], [IsDeleted], [TransactionID], [PayCodeGroupID], [IsSystemGenerated])
SELECT [DepartmentID], [JobCodeID], [PayCodeID], [FiscalYearID], [FiscalMonthID], 4, [Hours], [HoursYTD], [HoursPriorYear], [HoursPriorYTD], [Dollars], [DollarsYTD], [DollarsPriorYear], [DollarsPriorYTD], [FTEs], [FTEsYTD], [FTEsPriorYear], [FTEsPriorYTD], [IsDeleted], 12345, [PayCodeGroupID], [IsSystemGenerated]
FROM [fw].[FactPayrollSampledMonthly]
WHERE TimeClassID = 2 and FiscalYearID = @FiscalYearID and DepartmentID in ( select DepartmentID from #ABBDepts );
-- BEGIN CID 4 -- (this used to be right after the "run calculations" comment, before the other procs were called
exec [fw].[procFactMonthlyMergeDuplicates] 'fw.FactPayrollSampledMonthly', 'JobCodeID,PayCodeGroupID', 'Dollars,Hours', @fiscalYearID, 4, 0
-- END CID 4 --
--perform flexing
UPDATE
pay
SET
pay.Dollars = CASE WHEN ISNULL(pay.Variability, 0) = 0
THEN pay.Dollars
ELSE ISNULL(((pay.Dollars * (1 - (TotalVariableDirectCost / NULLIF(TotalCost, 0.0)))) + TotalExtendedVariableDirectCost), 0)
END
FROM
(SELECT pr.DepartmentID, pr.JobCodeID, pr.PayCodeGroupID, pr.FiscalYearID, pr.FiscalMonthID, pr.TimeClassID, pr.Dollars, ISNULL(jco.Variability, jc.Variability) as Variability
FROM [fw].[FactPayrollSampledMonthly] pr
LEFT JOIN (SELECT JobCodeID, Variability FROM [dss].[JobCodeVariability] WHERE CostingConfigGuid = (SELECT CostingConfigGuid FROM [dss].[CostingResult] WHERE CostingResultID = @CostingResultID)) jc ON pr.JobCodeID = jc.JobCodeID
LEFT JOIN (SELECT DepartmentID, JobCodeID, Variability FROM [dss].[PayCodeJobCodeVariabilityOverride] WHERE CostingConfigGuid = (SELECT CostingConfigGuid FROM [dss].[CostingResult] WHERE CostingResultID = @CostingResultID)) jco ON pr.DepartmentID = jco.DepartmentID AND pr.JobCodeID = jco.JobCodeID
WHERE TimeClassID = 4 AND FiscalYearID = @FiscalYearID) pay
INNER JOIN #ABBDepts abd on pay.DepartmentID = abd.DepartmentID
LEFT JOIN
(SELECT
DepartmentID,
JobCodeID,
PayCodeGroupID,
FiscalMonthID,
FiscalYearID,
SUM(cost.ExtendedVariableDirectCost) as TotalExtendedVariableDirectCost,
SUM(cost.TotalVariableDirectCost) as TotalVariableDirectCost,
SUM(cost.TotalCost) as TotalCost
FROM
[fw].[viewMRPayrollBudgetCostPerRVUbyMonth] cost
WHERE
cost.CostingResultID = @CostingResultID
AND
cost.TimeClassID = @CostingTimeClassID
GROUP BY
DepartmentID, JobCodeID, PayCodeGroupID, FiscalMonthID, FiscalYearID
) cost
ON pay.DepartmentID = cost.DepartmentID
AND pay.JobCodeID = cost.JobCodeID
AND pay.PayCodeGroupID = cost.PayCodeGroupID
AND cost.FiscalMonthID = pay.FiscalMonthID
AND cost.FiscalYearID = pay.FiscalYearID
DROP TABLE #ABBDepts;
--run calculations
exec [fw].[procPayrollSampledMonthlyRecalcFlexedHours] @FiscalYearID = @FiscalYearID
exec [fw].[procFactMonthlyYTDPriorYearUpdate] 'fw.FactPayrollSampledMonthly', 'JobCodeID,PayCodeID,PayCodeGroupID', 'Dollars,Hours', @fiscalYearID, 4, 0
exec [fw].[procFactPayrollSampledMonthlyUpdateFTEs] @fiscalYearID = @FiscalYearID, @timeClassID = 4
--delete blank rows
DELETE FROM [fw].[FactPayrollSampledMonthly]
WHERE
Hours = 0
and HoursPriorYear = 0
and HoursPriorYTD = 0
and HoursYTD = 0
and Dollars = 0
and DollarsPriorYear = 0
and DollarsPriorYTD = 0
and DollarsYTD = 0
GO
---------------------------------------------
-- fw.procPayrollSampledMonthlyRecalcFlexedHours
CREATE PROC [fw].[procPayrollSampledMonthlyRecalcFlexedHours]
@FiscalYearID smallint
AS
/* ************************************************************************************************************************
** Author: Nathan LeRoy
** Create Date: 2016-05-11
** Description: Recalc payroll hours based on dollars flexing for MR
** Last Modified: 2016-05-11
**************************************************************************************************************************
** Change History
**************************************************************************************************************************
** CID Date Author WI Description
**
*************************************************************************************************************************/
UPDATE
flex
SET
flex.Hours = COALESCE(flex.Dollars / NULLIF((orig.Dollars / NULLIF(orig.Hours, 0)), 0), 0)
FROM
[fw].[FactPayrollSampledMonthly] flex
LEFT JOIN
[fw].[FactPayrollSampledMonthly] orig
ON flex.DepartmentID = orig.DepartmentID
AND flex.JobCodeID = orig.JobCodeID
AND flex.PayCodeGroupID = orig.PayCodeGroupID
AND flex.PayCodeID = orig.PayCodeID
AND flex.FiscalYearID = orig.FiscalYearID
AND flex.FiscalMonthID = orig.FiscalMonthID
WHERE
orig.TimeClassID = 2 --budget
AND
flex.TimeClassID = 4 --flex
AND
orig.FiscalYearID = @FiscalYearID
AND
flex.FiscalYearID = @FiscalYearID
GO
---------------------------------------------
-- fw.procPayrollSampledPayPeriodDetailedInsert
/************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 9.19.14 MJS B-02788 Excluding Budget data from the detailed sample since budgeting at Pay Code level is not supported
** 2 2015-10-28 MJS D-03587 Added logic to exclude ignored hours and dollars
** 3 2016-09-22 AK B-11845 Added procFactPayrollSampledDetailedBaselineTargetUpdate
** 4 2016-12-13 NL B-13759 Added fiscalYearID param and filtering
** 5 2017-02-22 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 6 2017-02-22 IP B-14098 MR - Adjust Budgeted FTEs (Sampling). Added part that adds adjusted values to temp table #TEMPPAYROLL
** 7 2017-03-06 GF B-14693 Added baseline target year filter
** 8 2017-03-08 GF B-14693 Fix adjustment records year filter handling
** 9 2017-04-11 IP B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactPayrollSampledMonthlyDetailed.
** 10 2017-06-12 IP Changed type of hours/dollars fields to numeric instead of "money"
** 11 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 12 2017-07-11 IP D-06150 Fixed conditions of merge statement (update part)
** 13 2017-07-13 IP TK-45395 Fixed conditions of merge statement (include isSystemGenerated column)
** 14 2017-08-29 ip B-16798 Add using of Budget Adjustment.
** 15 2017-09-26 GF TK-48298 Fixed adjustments for all years case
** 16 2017-11-26 IP D-06490 Fixed splitting for first-last periods
** 17 2018-01-17 IP B-16703 Omit archived budget adjustments
** 18 2018-02-09 IP B-18724 Omit archived Budgeted FTE Adjustments
** 19 2018-02-22 IP D-06786 add department calculation for TC = 2 if dept is not in PR , Dept is in Budget Allocation
** 20 2018-05-17 IP D-07329 Returning fuctionality to include stats for departments using non-PR driver departments
** 21 2018-08-09 OV B-19715 added condition where IsPR = 1 for jobcode
** 22 2018-11-16 OV D-07714 fix: deleted rows where IsPR = 0 for department
** 23 2019-08-19 vfay D-08311 PR Sampling Proc : removed filtering out 0 Value Rows
** 24 2020-12-07 HV JAZZ-11135 Remove table variable in procPayrollSampledPayPeriodDetailedInsert
** 25 2020-12-15 HV JAZZ-11506 Bug - PR Sampling: data for beginning of future year is deleted when running Payroll Pay Period Detailed one year sampling
** 26 2020-12-21 HV JAZZ-10222 Proc procPayrollSampledPayPeriodDetailedInsert is timing out
** 27 2022-03-11 HV JAZZ-27781 Run PR Process Task can fail silently during Payroll Sampling
** 28 2022-10-25 HV JAZZ-45100 Reuse split by batches functionality in existing procedure
** 29 2023-12-04 ishah JAZZ-62485 Remove @departmentIDs param in procFactPayPeriodYTDPriorYearUpdate_Staging
*************************************************************/
CREATE PROC [fw].[procPayrollSampledPayPeriodDetailedInsert]
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0
as
print 'Starting calculating staging table --- '+convert(varchar(20),GETDATE(),113)
IF OBJECT_ID('tempdb..#PayrollSampledPayPeriodDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledPayPeriodDetailedStaging
IF OBJECT_ID('tempdb..#PayrollSampledPayPeriodDetailedPreStaging') IS NOT NULL DROP TABLE #PayrollSampledPayPeriodDetailedPreStaging
IF OBJECT_ID('fw.PayrollSampledPayPeriodDetailedStagingWithCalcs') IS NOT NULL DROP TABLE fw.PayrollSampledPayPeriodDetailedStagingWithCalcs
IF OBJECT_ID('tempdb..#DepartmentsBudgetAllocations') IS NOT NULL DROP TABLE #DepartmentsBudgetAllocations
CREATE table #DepartmentsBudgetAllocations (DepartmentID int)
insert into #DepartmentsBudgetAllocations
select
SourceDepartmentID as DepartmentID
from mr.BudgetReallocationAdjustment a
inner join mr.BudgetReallocation r on r.BudgetReallocationGUID=a.BudgetReallocationGUID
inner join FW.DimDepartment d on d.DepartmentID = r.TargetDepartmentID and d.IsPR = 1
where SourceDepartmentID <> 0
union -- unique
select
TargetDepartmentID as DepartmentID
from mr.BudgetReallocationAdjustment a
inner join mr.BudgetReallocation r on r.BudgetReallocationGUID=a.BudgetReallocationGUID
inner join FW.DimDepartment d on d.DepartmentID = r.SourceDepartmentID and d.IsPR = 1 -- Filtering all departments that move data FROM selected
where TargetDepartmentID <> 0
IF OBJECT_ID('tempdb..#PayPeriodIDs') IS NOT NULL DROP TABLE #PayPeriodIDs
CREATE TABLE #PayPeriodIDs (PayPeriodID smallint primary key)
insert into #PayPeriodIDs
select PayPeriodID from fw.DimPayPeriod where @fiscalYearID = 0 or FiscalYearIDSecond = @fiscalYearID
IF OBJECT_ID('tempdb..#PayPeriodsToMonths') IS NOT NULL DROP TABLE #PayPeriodsToMonths
CREATE TABLE #PayPeriodsToMonths (
PayPeriodID INT,
PayCycleID INT,
[PeriodNumber] INT,
[FiscalMonthID] INT,
[FiscalYearID] INT,
[PeriodWeight] NUMERIC(25, 10),
DaysinPeriodWeight NUMERIC(25, 10)
)
INSERT INTO #PayPeriodsToMonths
SELECT [PayPeriodID],
PayCycleID,
[PeriodNumber],
[FiscalMonthIDStart] AS FiscalMonthID,
[FiscalYearIDStart] AS FiscalYearID,
[PeriodWeightStart] AS PreriodWeight,
DaysinPeriodWeightStart as DaysinPeriodWeight
FROM [fw].[DimPayPeriod]
WHERE [PeriodWeightStart] <> 0.0
UNION ALL
SELECT [PayPeriodID],
PayCycleID,
[PeriodNumber],
FiscalMonthIDSecond AS FiscalMonthID,
FiscalYearIDSecond AS FiscalYearID,
PeriodWeightSecond AS PreriodWeight,
DaysinPeriodWeightSecond as DaysinPeriodWeight
FROM [fw].[DimPayPeriod]
WHERE PeriodWeightSecond <> 0.0
IF OBJECT_ID('tempdb..#PayrollPayPeriodTempTable') IS NOT NULL DROP TABLE #PayrollPayPeriodTempTable
CREATE TABLE #PayrollPayPeriodTempTable (
DepartmentID INT,
JobCodeID INT,
PayCodeID INT,
PayCodeGroupID INT,
EmployeeID INT,
PayPeriodID int,
TimeClassID INT,
Hours NUMERIC(25, 10),
Dollars NUMERIC(25, 10),
ApplyDate DATETIME,
Src VARCHAR(max)
)
--pull new data - data integration
create table #PayrollSampledPayPeriodDetailedStaging (DepartmentID int, JobCodeID int, PayCodeID int, PayCodeGroupID int, EmployeeID int, PayPeriodID int, TimeClassID int, Hours decimal(18, 6), Dollars decimal(18, 6), isDeleted bit default (0), isSystemGenerated bit default(0))
create table #PayrollSampledPayPeriodDetailedPreStaging (DepartmentID int, JobCodeID int, PayCodeID int, PayCodeGroupID int, EmployeeID int, PayPeriodID int, TimeClassID int, Hours decimal(18, 6), Dollars decimal(18, 6), isDeleted bit default (0), isSystemGenerated bit default(0))
insert into #PayrollSampledPayPeriodDetailedPreStaging (DepartmentID, JobCodeID,PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, TimeClassID, Hours, Dollars)
select
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
data.PayPeriodID,
data.TimeClassID,
sum(case when data.UnitTypeID = 51 then data.Value else 0 end) as Hours,
sum(case when data.UnitTypeID = 34 then data.Value else 0 end) as Dollars
from
int.FactStaffingByPayPeriod data
inner join [fw].[DimJobCode] jc on data.JobCodeID = jc.JobCodeID and IsPR = 1
inner join [fw].[DimPayCode] pc on data.PayCodeID=pc.PayCodeID
inner join [fw].[DimPayPeriod] pp on data.PayPeriodID = pp.PayPeriodID
inner join [fw].[DimDepartment] d on d.DepartmentID = data.DepartmentID
where
data.PayPeriodID != 0
and data.IsDeleted = 0
and (d.IsPR = 1 or exists (select 1 from #DepartmentsBudgetAllocations dba where dba.DepartmentID = d.DepartmentID))
and TimeClassID = 2
and TimeClassID <> 20
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
and ((data.UnitTypeID = 51 and pc.IsHoursIgnored = 0) or (data.UnitTypeID = 34 and pc.IsDollarsIgnored = 0))
group by
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
data.PayPeriodID,
data.TimeClassID
IF OBJECT_ID('tempdb..#DepartmentsBudgetAllocations') IS NOT NULL DROP TABLE #DepartmentsBudgetAllocations
-- BudgetAdjustments Start
declare @iteration int = 1
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
DECLARE BRA_cursor CURSOR FOR
SELECT distinct BudgetReallocationGUID,date,BudgetReallocationType from fw.BudgetReallocationWithDefinedType
WHERE (FiscalYearID = @FiscalYearID or @FiscalYearID = 0) and DataType = 1
ORDER BY date;
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
INSERT INTO #PayrollPayPeriodTempTable(DepartmentID, JobCodeID, EmployeeID, PayCodeID, PayCodeGroupID, PayPeriodID, TimeClassID, Hours, Dollars)
SELECT TargetDepartmentID as DepartmentID,TargetJobCodeID as JobCodeID, stt.EmployeeID, stt.PayCodeID, stt.PayCodeGroupID, stt.PayPeriodID, stt.TimeClassID,
HOURS = STT.Hours*pptm.DaysinPeriodWeight,
Dollars = STT.Dollars*pptm.DaysinPeriodWeight
FROM #PayrollSampledPayPeriodDetailedPreStaging STT
inner join #PayPeriodsToMonths pptm on pptm.PayPeriodID = stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.FiscalYearID = pptm.FiscalYearID
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and pptm.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and TimeClassID = 2
and DataType = 1
and Archived = 0
UNION
SELECT SourceDepartmentID as DepartmentID,SourceJobCodeID as JobCodeID, stt.EmployeeID, stt.PayCodeID, stt.PayCodeGroupID, stt.PayPeriodID, stt.TimeClassID,
HOURS = -STT.Hours*pptm.DaysinPeriodWeight,
Dollars = -STT.Dollars*pptm.DaysinPeriodWeight
FROM #PayrollSampledPayPeriodDetailedPreStaging STT
inner join #PayPeriodsToMonths pptm on pptm.PayPeriodID = stt.PayPeriodID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.FiscalYearID = pptm.FiscalYearID
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and pptm.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and TimeClassID = 2
and DataType = 1
and Archived = 0
END
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
-- BudgetAdjustments END
--SplittingMonthsToPayPeriod
--insert into #PayrollSampledPayPeriodDetailedStaging (DepartmentID, JobCodeID,PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, TimeClassID, Hours, Dollars)
--SELECT fact.DepartmentID, JobCodeID,PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, TimeClassID, Hours*PeriodWeight, Dollars*PeriodWeight FROM #PayrollSampledMonthlyDetailedStaging fact
--INNER JOIN fw.DimDepartment dd on fact.DepartmentID = dd.DepartmentID
--INNER JOIN #PayPeriodsToMonths PP ON PP.FiscalYearID = fact.FiscalYearID
-- AND pp.FiscalMonthID = fact.FiscalMonthID
-- and pp.PayCycleID = dd.PayCycleID
IF OBJECT_ID('tempdb..#PayPeriodsToMonths') IS NOT NULL DROP TABLE #PayPeriodsToMonths
INSERT INTO #PayrollSampledPayPeriodDetailedStaging (DepartmentID, JobCodeID,PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, TimeClassID,Hours,Dollars)
SELECT DepartmentID,JobCodeID,PayCodeID,PayCodeGroupID,EmployeeID,PayPeriodID,TimeClassID,Hours,Dollars
FROM #PayrollPayPeriodTempTable
IF OBJECT_ID('tempdb..#PayrollPayPeriodTempTable') IS NOT NULL DROP TABLE #PayrollPayPeriodTempTable
insert into #PayrollSampledPayPeriodDetailedStaging (DepartmentID, JobCodeID,PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, TimeClassID, Hours, Dollars)
select
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
data.PayPeriodID,
data.TimeClassID,
sum(case when data.UnitTypeID = 51 then data.Value else 0 end) as Hours,
sum(case when data.UnitTypeID = 34 then data.Value else 0 end) as Dollars
from
int.FactStaffingByPayPeriod data
inner join [fw].[DimJobCode] jc on data.JobCodeID = jc.JobCodeID and IsPR = 1
inner join [fw].[DimPayCode] pc on data.PayCodeID=pc.PayCodeID
inner join [fw].[DimPayPeriod] pp on data.PayPeriodID = pp.PayPeriodID
inner join [fw].[DimDepartment] d on d.DepartmentID = data.DepartmentID
where
data.PayPeriodID != 0
and data.IsDeleted = 0
and d.IsPR = 1
and TimeClassID <> 20
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
and ((data.UnitTypeID = 51 and pc.IsHoursIgnored = 0) or (data.UnitTypeID = 34 and pc.IsDollarsIgnored = 0))
group by
data.DepartmentID,
data.JobCodeID,
data.PayCodeID,
pc.PayCodeGroupID,
data.EmployeeID,
data.PayPeriodID,
data.TimeClassID
--pull new data - adjustments
DECLARE @NonProdGroupID INT = (
SELECT TOP 1 pcg.PayCodeGroupID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Non-Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @ProdGroupID INT = (
SELECT TOP 1 pcg.PayCodeGroupID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @NonProdPayCodeID INT = (
SELECT TOP 1 pcg.DefaultPayCodeID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Non-Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
DECLARE @ProdPayCodeID INT = (
SELECT TOP 1 pcg.DefaultPayCodeID
FROM fw.DimProductiveClass pc
INNER JOIN fw.DimPayCodeGroup pcg ON pcg.ProductiveClassID = pc.ProductiveClassID
WHERE pc.Name = 'Productive' AND pcg.PayCodeGroupID != 0
ORDER BY pcg.SortOrder)
INSERT INTO #PayrollSampledPayPeriodDetailedStaging (DepartmentID, JobCodeID,PayCodeID, PayCodeGroupID, EmployeeID, PayPeriodID, TimeClassID, Hours, Dollars)
SELECT
Adj.DepartmentID,
Adj.JobCodeID,
Adj.PayCodeId,
Adj.PayCodeGroupID,
0 as EmployeeID,
PP.PayPeriodID,
2 AS TimeClassID, -- always Budgeted
sum(Adj.Hours * PP.PreriodWeight) AS Hours,
0 AS Dollars
FROM (
SELECT
b.DepartmentID,
b.JobCodeID,
@ProdPayCodeID as PayCodeID,
@ProdGroupID AS PayCodeGroupID,
b.FiscalYearID,
ba.FiscalMonthID,
ba.ProductiveChange AS Hours
FROM mr.BudgetPayrollReallocationAdjustment ba
INNER JOIN mr.BudgetPayrollReallocation b ON b.BudgetPayrollReallocationGUID = ba.BudgetPayrollReallocationGUID
LEFT JOIN
(select SourceDepartmentID as DepartmentID,
SourceJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
UNION ALL
select TargetDepartmentID as DepartmentID,
TargetJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
) fact on fact.DepartmentID = b.DepartmentID and fact.JobCodeID = b.JobCodeID and fact.FiscalYearID = b.FiscalYearID and fact.FiscalMonthID = ba.FiscalMonthID
WHERE (@fiscalYearID = 0 or b.FiscalYearID = @fiscalYearID) and fact.DepartmentID is null and b.Archived = 0
UNION ALL
SELECT b.DepartmentID,
b.JobCodeID,
@NonProdPayCodeID as PayCodeID,
@NonProdGroupID AS PayCodeGroupID,
b.FiscalYearID,
ba.FiscalMonthID,
ba.NonProductiveChange AS Hours
FROM mr.BudgetPayrollReallocationAdjustment ba
INNER JOIN mr.BudgetPayrollReallocation b ON b.BudgetPayrollReallocationGUID = ba.BudgetPayrollReallocationGUID
LEFT JOIN
(select SourceDepartmentID as DepartmentID,
SourceJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
UNION ALL
select TargetDepartmentID as DepartmentID,
TargetJobCodeID as JobCodeID,
FiscalYearID,
FiscalMonthID
FROM [mr].[BudgetReallocation] b
INNER JOIN (select distinct FiscalMonthID,BudgetReallocationGUID from [mr].[BudgetReallocationAdjustment] where change <> 0) ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
WHERE DataType = 1
) fact on fact.DepartmentID = b.DepartmentID and fact.JobCodeID = b.JobCodeID and fact.FiscalYearID = b.FiscalYearID and fact.FiscalMonthID = ba.FiscalMonthID
WHERE (@fiscalYearID = 0 or b.FiscalYearID = @fiscalYearID) and fact.DepartmentID is null and b.Archived = 0
) AS Adj
INNER JOIN fw.DimJobCode jc ON jc.JobCodeID = Adj.JobCodeID and jc.IsPR = 1
INNER JOIN fw.DimDepartment dd on adj.DepartmentID = dd.DepartmentID and dd.IsPR = 1
INNER JOIN (
SELECT
[PayPeriodID],
PayCycleID,
[PeriodNumber],
[FiscalMonthIDStart] AS FiscalMonthID,
[FiscalYearIDStart] AS FiscalYearID,
[PeriodWeightStart] AS PreriodWeight
FROM [fw].[DimPayPeriod]
WHERE (@fiscalYearID = 0 or [FiscalYearIDSecond] = @fiscalYearID)
UNION ALL
SELECT
[PayPeriodID],
PayCycleID,
[PeriodNumber],
FiscalMonthIDSecond AS FiscalMonthID,
FiscalYearIDSecond AS FiscalYearID,
PeriodWeightSecond AS PreriodWeight
FROM [fw].[DimPayPeriod]
WHERE (@fiscalYearID = 0 or [FiscalYearIDSecond] = @fiscalYearID)
) PP ON PP.FiscalYearID = Adj.FiscalYearID
AND pp.FiscalMonthID = adj.FiscalMonthID
and pp.PayCycleID = dd.PayCycleID
GROUP BY Adj.DepartmentID,
Adj.JobCodeID,
Adj.PayCodeID,
Adj.PayCodeGroupID,
PP.PayPeriodID
--run calculations on staging table
exec fw.procFactPayPeriodMergeDuplicates '#PayrollSampledPayPeriodDetailedStaging', 'JobCodeID,PayCodeID,PayCodeGroupID, EmployeeID', 'Dollars,Hours', @fiscalYearID, 0, 0, @departmentIDs
exec fw.procFactPayrollSampledPayPeriodDetailedBaselineTargetUpdate @departmentIDs = @departmentIDs, @fiscalYearID = @fiscalYearID
exec fw.procFactPayPeriodYTDPriorYearUpdate_Staging 'fw.FactPayrollSampledPayPeriodDetailed','#PayrollSampledPayPeriodDetailedStaging', 'JobCodeID,PayCodeID,PayCodeGroupID, EmployeeID', 'Dollars,Hours', @fiscalYearID, 0, 0
IF OBJECT_ID('tempdb..#PayrollSampledPayPeriodDetailedFTEs') IS NOT NULL DROP TABLE #PayrollSampledPayPeriodDetailedFTEs
CREATE TABLE #PayrollSampledPayPeriodDetailedFTEs (DepartmentID int,JobCodeID int,PayCodeID int,PayCodeGroupID int,EmployeeID int,PayPeriodID int,TimeClassID int, FTEs decimal(18, 6), FTEsYTD decimal(18, 6), FTEsPriorYear decimal(18, 6), FTEsPriorYTD decimal(18, 6))
exec client.procFactPayrollSampledPayPeriodDetailedFTEsInsert_Staging @departmentIDs = @departmentIDs, @fiscalYearID = @fiscalYearID
--!!!Removing all records where Department is not PR
delete fact
from fw.PayrollSampledPayPeriodDetailedStagingWithCalcs fact
inner join fw.dimDepartment d on d.DepartmentID = fact.DepartmentID and d.isPR = 0
IF @fiscalYearID = 0 and @departmentIDs is null
BEGIN
DECLARE @BatchSize INT = 50000000
-- Split data into batches
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
CREATE TABLE #inputPayPeriods (PayPeriodID INT, RecordsCount INT, BatchID INT)
INSERT INTO #inputPayPeriods
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'PayPeriodID',
@tableAlias = 'ps',
@fromClause = 'fw.PayrollSampledPayPeriodDetailedStagingWithCalcs ps',
@whereClause = '',
@isDebug = 0
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
truncate table fw.FactPayrollSampledPayPeriodDetailed
IF @MaxBatchID >= 2
BEGIN
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.PayrollSampledPayPeriodDetailedStagingWithCalcs (PayPeriodID,DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID,TimeClassID)
END
-- Loop thru batches and update data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO fw.FactPayrollSampledPayPeriodDetailed With (TABLOCKX) (
DepartmentID,
PayPeriodID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated)
SELECT fw.DepartmentID,
fw.PayPeriodID,
fw.JobCodeID,
fw.PayCodeID,
fw.PayCodeGroupID,
fw.EmployeeID,
fw.TimeClassID,
fw.Dollars,
fw.DollarsYTD,
fw.DollarsPriorYear,
fw.DollarsPriorYTD,
fw.Hours,
fw.HoursYTD,
fw.HoursPriorYear,
fw.HoursPriorYTD,
isnull(fte.FTEs,0) as FTEs,
isnull(fte.FTEsYTD,0) as FTEsYTD,
isnull(fte.FTEsPriorYear,0) as FTEsPriorYear,
isnull(fte.FTEsPriorYTD,0) as FTEsPriorYTD,
0 as IsDeleted,
isnull(fw.IsSystemGenerated,0) as IsSystemGenerated
FROM fw.PayrollSampledPayPeriodDetailedStagingWithCalcs fw
inner join [fw].[DimJobCode] jc on fw.JobCodeID = jc.JobCodeID and IsPR = 1
left join #PayrollSampledPayPeriodDetailedFTEs fte on fw.DepartmentID = fte.DepartmentID AND fw.JobCodeID = fte.JobCodeID AND fw.PayCodeID = fte.PayCodeID AND fw.PayCodeGroupID = fte.PayCodeGroupID AND fw.EmployeeID = fte.EmployeeID AND fw.PayPeriodID = fte.PayPeriodID AND fw.TimeClassID = fte.TimeClassID
INNER JOIN #inputPayPeriods IPP ON IPP.PayPeriodID = fw.PayPeriodID
WHERE IPP.BatchID = @BatchID
SET @BatchID = @BatchID + 1
END
END
ELSE
BEGIN
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.PayrollSampledPayPeriodDetailedStagingWithCalcs (DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID,PayPeriodID,TimeClassID)
BEGIN TRANSACTION Sampling
BEGIN TRY
WITH TGT AS (SELECT t.* FROM
fw.FactPayrollSampledPayPeriodDetailed t With (TABLOCKX)
inner join #PayPeriodIDs ppt on t.PayPeriodID = ppt.PayPeriodID
)
MERGE
TGT AS target
USING
(select
fw.DepartmentID,
fw.PayPeriodID,
fw.JobCodeID,
fw.PayCodeID,
fw.PayCodeGroupID,
fw.EmployeeID,
fw.TimeClassID,
fw.Dollars,
fw.DollarsYTD,
fw.DollarsPriorYear,
fw.DollarsPriorYTD,
fw.Hours,
fw.HoursYTD,
fw.HoursPriorYear,
fw.HoursPriorYTD,
isnull(fte.FTEs,0) as FTEs,
isnull(fte.FTEsYTD,0) as FTEsYTD,
isnull(fte.FTEsPriorYear,0) as FTEsPriorYear,
isnull(fte.FTEsPriorYTD,0) as FTEsPriorYTD,
0 as IsDeleted,
isnull(fw.IsSystemGenerated,0) as IsSystemGenerated
from fw.PayrollSampledPayPeriodDetailedStagingWithCalcs fw
left join #PayrollSampledPayPeriodDetailedFTEs fte on fw.DepartmentID = fte.DepartmentID AND fw.JobCodeID = fte.JobCodeID AND fw.PayCodeID = fte.PayCodeID AND fw.PayCodeGroupID = fte.PayCodeGroupID AND fw.EmployeeID = fte.EmployeeID AND fw.PayPeriodID = fte.PayPeriodID AND fw.TimeClassID = fte.TimeClassID
) AS source
ON source.DepartmentID = target.DepartmentID
AND source.JobCodeID = target.JobCodeID
AND source.EmployeeID = target.EmployeeID
AND source.PayCodeID = target.PayCodeID
AND source.PayCodeGroupID = target.PayCodeGroupID
AND source.PayPeriodID = target.PayPeriodID
AND source.TimeClassID = target.TimeClassID
AND source.PayCodeID = target.PayCodeID
WHEN MATCHED AND
(target.Dollars <> source.Dollars
or target.DollarsYTD <> source.DollarsYTD
or target.DollarsPriorYear <> source.DollarsPriorYear
or target.DollarsPriorYTD <> source.DollarsPriorYTD
or target.Hours <> source.Hours
or target.HoursYTD <> source.HoursYTD
or target.HoursPriorYear <> source.HoursPriorYear
or target.HoursPriorYTD <> source.HoursPriorYTD
or target.FTEs <> source.FTEs
or target.FTEsYTD <> source.FTEsYTD
or target.FTEsPriorYear <> source.FTEsPriorYear
or target.FTEsPriorYTD <> source.FTEsPriorYTD
or target.isSystemGenerated <> source.isSystemGenerated)
THEN
UPDATE
SET target.Dollars = source.Dollars,
target.DollarsYTD = source.DollarsYTD,
target.DollarsPriorYear = source.DollarsPriorYear,
target.DollarsPriorYTD = source.DollarsPriorYTD,
target.Hours = source.Hours,
target.HoursYTD = source.HoursYTD,
target.HoursPriorYear = source.HoursPriorYear,
target.HoursPriorYTD = source.HoursPriorYTD,
target.FTEs = source.FTEs,
target.FTEsYTD = source.FTEsYTD,
target.FTEsPriorYear = source.FTEsPriorYear,
target.FTEsPriorYTD = source.FTEsPriorYTD,
target.isSystemGenerated = source.isSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
PayPeriodID,
JobCodeID,
PayCodeID,
PayCodeGroupID,
EmployeeID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.PayPeriodID,
source.JobCodeID,
source.PayCodeID,
source.PayCodeGroupID,
source.EmployeeID,
source.TimeClassID,
source.Dollars,
source.DollarsYTD,
source.DollarsPriorYear,
source.DollarsPriorYTD,
source.Hours,
source.HoursYTD,
source.HoursPriorYear,
source.HoursPriorYTD,
source.FTEs,
source.FTEsYTD,
source.FTEsPriorYear,
source.FTEsPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
COMMIT TRANSACTION Sampling
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION Sampling;
THROW
END CATCH
END
IF OBJECT_ID('tempdb..#PayrollSampledPayPeriodDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledPayPeriodDetailedStaging
IF OBJECT_ID('fw.PayrollSampledPayPeriodDetailedStagingWithCalcs') IS NOT NULL DROP TABLE fw.PayrollSampledPayPeriodDetailedStagingWithCalcs
IF OBJECT_ID('tempdb..#PayrollSampledMonthlyDetailedStaging') IS NOT NULL DROP TABLE #PayrollSampledMonthlyDetailedStaging
IF OBJECT_ID('tempdb..#PayrollSampledMonthlyDetailedPreStaging') IS NOT NULL DROP TABLE #PayrollSampledMonthlyDetailedPreStaging
IF OBJECT_ID('tempdb..#PayPeriodIDs') IS NOT NULL DROP TABLE #PayPeriodIDs
GO
---------------------------------------------
-- fw.procPayrollSampledPayPeriodInsert
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2013-09-19 AKK 64193 Changing source table to be int.FactStaffingByPayPeriod
** 2 2013-10-03 RA Updating proc to include db setting options
** 3 2014-06-24 JG B-02536 Updating Pay Code to be Pay Code Group
** 4 2014-09-03 MS B-02863 Removing the parameter from the YTD proc call
** 5 2014-11-23 JG Removing Flexing Piece
** 6 2015-02-19 JG Removing differential and non-fte pay code hours from the data
** 7 2015-04-20 MS Adding differential and non-fte pay code hours back. These hours are excluded from standard in pi.procCalculateProductivityMetrics and should be handled in report mappings.
** 8 2015-10-28 MJS D-03587 Added logic to exclude ignored hours and dollars
** 9 2016-02-29 MJS D-04023 Removed update of default payperiod
** 10 2016-04-28 AK B-11864 Added IsPR check
** 11 2016-10-04 MH B-13126 Added procFactPayrollSampledPayPeriodBaselineTargetUpdate
** 12 2017-01-31 AK B-13926 Added department filter
** 13 2017-02-08 GF B-14308 Added year filter
** 14 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling
** 15 2017-02-20 GF D-05613 Prevent zero rows
** 16 2017-02-23 IP B-14063 Added functionality of adding rows with adjustment values to fw.FactPayrollSampledPayPeriod
** 17 2017-02-23 IP TK-39445 Fixed bug with incorrect accounting payperiod which belongs to 2 fiscal years
** 18 2017-03-08 GF B-14693 Fix adjustment records year filter handling
** 19 2017-03-30 IP B-15085 Performace optimization by aggregating "detailed" data
** 20 2017-04-11 IP D-05763 Replaced hardcoded value hours in pay period from 80.00 to (DimPayPeriod.WorkingDays * 8.0)
** 21 2017-05-29 ipetriv B-15994 Refactored sampling process and implemented using of staging tables
** 22 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 23 2017-07-11 IP D-06152 Fixed conditions of merge statement (update part)
** 24 2017-10-04 GF D-06489 Fix pay period select when running all years
** 25 2018-02-02 GF TK-53716 Re-enable calculation of FTEs for non-standart work Weeks
** 26 2019-08-19 vfay D-08311 PR Sampling Proc : removed filtering out 0 Value Rows
** 27 2021-02-18 KF JAZZ-15158 Variable Productive Hours - Detailed Target Spread
** 28 2022-03-11 HV JAZZ-27781 Run PR Process Task can fail silently during Payroll Sampling
** 29 2023-12-04 ishah JAZZ-62485 Remove @departmentIDs param for procFactPayPeriodYTDPriorYearUpdate_AG
*************************************************************/
CREATE proc [fw].[procPayrollSampledPayPeriodInsert]
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0,
@useTargetOverrides bit = 0
as
IF OBJECT_ID('tempdb..#PayrollSampledPayPeriodStaging') IS NOT NULL DROP TABLE #PayrollSampledPayPeriodStaging
IF OBJECT_ID('fw.PayrollSampledPayPeriodStagingWithCalcs') IS NOT NULL DROP TABLE fw.PayrollSampledPayPeriodStagingWithCalcs
declare @departments table(val int primary key)
insert into @departments select val from ConvertCSValuesToTable(@departmentIDs, ',')
declare @payperiods table(val smallint primary key)
insert into @payperiods select PayPeriodID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID or @fiscalYearID = 0
--run custom scripts
exec [client].[procPayrollSampledInsertPreprocess]
/*If Target basis is rolling average then we can't calculate baseline as simple sum of detailed table.
in his case we should
1)insert summed values for all timeclasses except baseline (TimeClassId = 20)
2)recalculate baseline
3)run stored procedure to update columns YTD, priorYear etc.
*/
SELECT DepartmentID,
JobCodeID,
WorkingHoursCoef = cast(dww.Hours AS NUMERIC(20, 6)) / 7
INTO #WorkWeekHours
FROM (
SELECT DepartmentID,
JobCodeID,
WorkWeekID = COALESCE(jc.WorkWeekID, de.WorkWeekID, - 1)
FROM (
SELECT dp.DepartmentID,
WorkWeekID = CASE
WHEN e.WorkWeekID > - 1
THEN e.WorkWeekID
ELSE NULL
END
FROM fw.DimEntity e
INNER JOIN fw.DimDepartment dp on e.EntityID = dp.EntityID
) DE
CROSS JOIN (
SELECT djc.JobCodeID,
djcg.JobCodeGroupID,
WorkWeekID = CASE
WHEN djc.WorkWeekOverrideID > - 1
THEN djc.WorkWeekOverrideID
WHEN djc.WorkWeekOverrideID = - 1
AND djcg.WorkWeekOverrideID > - 1
THEN djcg.WorkWeekOverrideID
ELSE NULL
END
FROM fw.DimJobCode djc
INNER JOIN fw.DimJobCodeGroup djcg
ON djc.JobCodeGroupID = djcg.JobCodeGroupID
) JC
) DeptJobCode
LEFT JOIN fw.DimWorkWeek dww
ON DeptJobCode.WorkWeekID = dww.WorkWeekID
DECLARE @IsRollingAverage BIT
SELECT @IsRollingAverage = CASE WHEN Value = 10 THEN 1 ELSE 0 END from pi.SystemSetting where Name = 'Target Basis'
IF (@IsRollingAverage = 1 OR @useTargetOverrides = 1)
BEGIN
CREATE TABLE #TimeClasses (TimeClassID tinyint Primary Key)
INSERT INTO #TimeClasses (TimeClassID) VALUES (1), (2)
IF(@IsRollingAverage = 0)
BEGIN
INSERT INTO #TimeClasses (TimeClassID) VALUES (20)
END
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayPeriodID,
fact.TimeClassID,
fact.PayCodeGroupID,
fact.IsSystemGenerated,
fact.Hours,
fact.HoursYTD,
fact.HoursPriorYear,
fact.HoursPriorYTD,
fact.Dollars,
fact.DollarsYTD,
fact.DollarsPriorYear,
fact.DollarsPriorYTD,
FTEs = isnull(CASE
WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.Hours AS NUMERIC(20, 6)) / cast(PeriodDays AS NUMERIC(20, 6))) -- fact hours per calendar day
/ WorkingHoursCoef
ELSE fact.Hours / (WorkingDays * 8.0)
END
END, 0),
FTEsYTD = isnull(CASE
WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursYTD AS NUMERIC(20, 6)) / (cast(PeriodDays AS NUMERIC(20, 6)) * cast(pp.PeriodNumber AS NUMERIC(20, 6)))) -- YTD hours / YTD days
/ WorkingHoursCoef
ELSE fact.HoursYTD / (WorkingDays * 8.0 * pp.PeriodNumber)
END
END, 0),
FTEsPriorYear = isnull(CASE
WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursPriorYear AS NUMERIC(20, 6)) / cast(PeriodDays AS NUMERIC(20, 6))) -- fact hours for Prior Year per calendar day
/ WorkingHoursCoef
ELSE fact.HoursPriorYear / (WorkingDays * 8.0)
END
END, 0),
FTEsPriorYTD = isnull(CASE
WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursPriorYTD AS NUMERIC(20, 6)) / (cast(PeriodDays AS NUMERIC(20, 6)) * cast(pp.PeriodNumber AS NUMERIC(20, 6)))) -- YTD for PY hours / YTD days
/ WorkingHoursCoef
ELSE fact.HoursPriorYTD / (WorkingDays * 8.0 * pp.PeriodNumber)
END
END, 0)
INTO #PayrollSampledPayPeriodStaging
FROM (
SELECT d.DepartmentID,
d.JobCodeID,
d.PayCodeGroupID,
d.PayPeriodID,
d.TimeClassID,
sum(d.Hours) AS Hours,
sum(d.HoursYTD) AS HoursYTD,
sum(d.HoursPriorYear) AS HoursPriorYear,
sum(d.HoursPriorYTD) AS HoursPriorYTD,
sum(d.Dollars) AS Dollars,
sum(d.DollarsYTD) AS DollarsYTD,
sum(d.DollarsPriorYear) AS DollarsPriorYear,
sum(d.DollarsPriorYTD) AS DollarsPriorYTD,
IsSystemGenerated = min(cast(IsSystemGenerated AS TINYINT))
FROM fw.FactPayrollSampledPayPeriodDetailed d
INNER JOIN [fw].[DimPayPeriod] pp ON d.PayPeriodID = pp.PayPeriodID
INNER JOIN #TimeClasses TC ON TC.TimeClassID = d.TimeClassID
WHERE (@departmentIDs IS NULL OR d.DepartmentID IN (SELECT val FROM @departments))
AND (@fiscalYearID = 0 OR pp.FiscalYearIDSecond = @fiscalYearID)
GROUP BY d.DepartmentID,
d.JobCodeID,
d.PayCodeGroupID,
d.PayPeriodID,
d.TimeClassID
) fact
LEFT JOIN [fw].[DimPayPeriod] pp ON pp.PayPeriodID = fact.PayPeriodID
LEFT JOIN [fw].[DimPayCodeGroup] pcg ON fact.PayCodeGroupID = pcg.PayCodeGroupID
LEFT JOIN #WorkWeekHours ww ON ww.DepartmentID = fact.DepartmentID AND ww.JobCodeID = fact.JobCodeID
IF(@IsRollingAverage = 1) exec fw.procFactPayrollSampledPayPeriodBaselineTargetUpdate @departmentIDs = @departmentIDs, @fiscalYearID = @fiscalYearID -- recalculate baseline
IF(@useTargetOverrides = 1) exec fw.procFactPayrollSampledPayPeriodBaselineTargetOverridesUpdate
exec fw.procFactPayPeriodYTDPriorYearUpdate_AG 'fw.FactPayrollSampledPayPeriod','#PayrollSampledPayPeriodStaging','JobCodeID,PayCodeGroupID', 'Dollars,Hours,FTEs', @fiscalYearID, 20, 0 -- recalculate for baseline rows
exec client.procFactPayrollSampledPayPeriodFTEsInsert_Staging @departmentIDs = @departmentIDs, @fiscalYearID = @fiscalYearID
IF @fiscalYearID = 0 and @departmentIDs is null
BEGIN
truncate table fw.FactPayrollSampledPayPeriod
INSERT INTO fw.FactPayrollSampledPayPeriod With (TABLOCKX) (
DepartmentID,
PayPeriodID,
JobCodeID,
PayCodeGroupID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated)
SELECT DepartmentID,
PayPeriodID,
JobCodeID,
PayCodeGroupID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
0 as IsDeleted,
isnull(IsSystemGenerated,0) as IsSystemGenerated
FROM fw.PayrollSampledPayPeriodStagingWithCalcs
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.PayrollSampledPayPeriodStagingWithCalcs (DepartmentID,JobCodeID,PayCodeGroupID,PayPeriodID,TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
BEGIN TRANSACTION Sampling
BEGIN TRY
WITH TGT AS (SELECT t.* FROM
fw.FactPayrollSampledPayPeriod t With (TABLOCKX)
inner join fw.DimPayPeriod pp on t.PayPeriodId = pp.PayPeriodID
where (@fiscalYearID = 0 or t.PayPeriodID in(select val from @payperiods))
and (@departmentIDs is null or DepartmentID in(select val from @departments))
)
MERGE
TGT AS target
USING fw.PayrollSampledPayPeriodStagingWithCalcs AS source
ON source.DepartmentID = target.DepartmentID
AND source.JobCodeID = target.JobCodeID
AND source.PayCodeGroupID = target.PayCodeGroupID
AND source.PayPeriodID = target.PayPeriodID
AND source.TimeClassID = target.TimeClassID
WHEN MATCHED AND (
target.Dollars <> source.Dollars
or target.DollarsYTD <> source.DollarsYTD
or target.DollarsPriorYear <> source.DollarsPriorYear
or target.DollarsPriorYTD <> source.DollarsPriorYTD
or target.Hours <> source.Hours
or target.HoursYTD <> source.HoursYTD
or target.HoursPriorYear <> source.HoursPriorYear
or target.HoursPriorYTD <> source.HoursPriorYTD
or target.FTEs <> source.FTEs
or target.FTEsYTD <> source.FTEsYTD
or target.FTEsPriorYear <> source.FTEsPriorYear
or target.FTEsPriorYTD <> source.FTEsPriorYTD
or target.isSystemGenerated <> source.isSystemGenerated)
THEN
UPDATE
SET target.Dollars = source.Dollars,
target.DollarsYTD = source.DollarsYTD,
target.DollarsPriorYear = source.DollarsPriorYear,
target.DollarsPriorYTD = source.DollarsPriorYTD,
target.Hours = source.Hours,
target.HoursYTD = source.HoursYTD,
target.HoursPriorYear = source.HoursPriorYear,
target.HoursPriorYTD = source.HoursPriorYTD,
target.FTEs = source.FTEs,
target.FTEsYTD = source.FTEsYTD,
target.FTEsPriorYear = source.FTEsPriorYear,
target.FTEsPriorYTD = source.FTEsPriorYTD,
target.isSystemGenerated = source.isSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
PayPeriodID,
JobCodeID,
PayCodeGroupID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.PayPeriodID,
source.JobCodeID,
source.PayCodeGroupID,
source.TimeClassID,
source.Dollars,
source.DollarsYTD,
source.DollarsPriorYear,
source.DollarsPriorYTD,
source.Hours,
source.HoursYTD,
source.HoursPriorYear,
source.HoursPriorYTD,
source.FTEs,
source.FTEsYTD,
source.FTEsPriorYear,
source.FTEsPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
COMMIT TRANSACTION Sampling
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION Sampling;
THROW
END CATCH
END
END
ELSE /*Here is inserting aggregated rows in case when "Target Basis" is not rolling average and @useTargetOverrides = 0*/
BEGIN
IF @fiscalYearID = 0 and @departmentIDs is null
BEGIN
truncate table fw.FactPayrollSampledPayPeriod
insert into fw.FactPayrollSampledPayPeriod (
DepartmentID,
JobCodeID,
PayPeriodID,
TimeClassID,
PayCodeGroupID,
IsSystemGenerated,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD
)
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayPeriodID,
fact.TimeClassID,
fact.PayCodeGroupID,
fact.IsSystemGenerated,
fact.Hours,
fact.HoursYTD,
fact.HoursPriorYear,
fact.HoursPriorYTD,
fact.Dollars,
fact.DollarsYTD,
fact.DollarsPriorYear,
fact.DollarsPriorYTD,
FTEs = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.Hours AS NUMERIC(20, 6)) / cast(PeriodDays AS NUMERIC(20, 6))) -- fact hours per calendar day
/ WorkingHoursCoef
ELSE fact.Hours / (WorkingDays * 8.0)
END
END, 0),
FTEsYTD = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursYTD AS NUMERIC(20, 6)) / (cast(PeriodDays AS NUMERIC(20, 6)) * cast(pp.PeriodNumber AS NUMERIC(20, 6)))) -- YTD hours / YTD days
/ WorkingHoursCoef
ELSE fact.HoursYTD / (WorkingDays * 8.0 * pp.PeriodNumber)
END
END, 0),
FTEsPriorYear = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursPriorYear AS NUMERIC(20, 6)) / cast(PeriodDays AS NUMERIC(20, 6))) -- fact hours for Prior Year per calendar day
/ WorkingHoursCoef
ELSE fact.HoursPriorYear / (WorkingDays * 8.0)
END
END, 0),
FTEsPriorYTD = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursPriorYTD AS NUMERIC(20, 6)) / (cast(PeriodDays AS NUMERIC(20, 6)) * cast(pp.PeriodNumber AS NUMERIC(20, 6)))) -- YTD for PY hours / YTD days
/ WorkingHoursCoef
ELSE fact.HoursPriorYTD / (WorkingDays * 8.0 * pp.PeriodNumber)
END
END, 0)
FROM (
SELECT
d.DepartmentID,
d.JobCodeID,
d.PayCodeGroupID,
d.PayPeriodID,
d.TimeClassID,
sum(d.Hours) AS Hours,
sum(d.HoursYTD) AS HoursYTD,
sum(d.HoursPriorYear) AS HoursPriorYear,
sum(d.HoursPriorYTD) AS HoursPriorYTD,
sum(d.Dollars) AS Dollars,
sum(d.DollarsYTD) AS DollarsYTD,
sum(d.DollarsPriorYear) AS DollarsPriorYear,
sum(d.DollarsPriorYTD) AS DollarsPriorYTD,
IsSystemGenerated = min(cast(IsSystemGenerated as tinyint))
FROM fw.FactPayrollSampledPayPeriodDetailed d
INNER JOIN [fw].[DimPayPeriod] pp on d.PayPeriodID = pp.PayPeriodID
WHERE (@departmentIDs is null or d.DepartmentID in(select val from @departments))
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
GROUP BY
d.DepartmentID,
d.JobCodeID,
d.PayCodeGroupID,
d.PayPeriodID,
d.TimeClassID
) fact
left join [fw].[DimPayPeriod] pp on pp.PayPeriodID=fact.PayPeriodID
left join [fw].[DimPayCodeGroup] pcg on fact.PayCodeGroupID = pcg.PayCodeGroupID
left join #WorkWeekHours ww on ww.DepartmentID = fact.DepartmentID and ww.JobCodeID = fact.JobCodeID
END
ELSE
WITH TGT AS (SELECT t.* FROM
fw.FactPayrollSampledPayPeriod t With (TABLOCKX)
inner join fw.DimPayPeriod pp on t.PayPeriodId = pp.PayPeriodID
where (@fiscalYearID = 0 or t.PayPeriodID in(select val from @payperiods))
and (@departmentIDs is null or DepartmentID in(select val from @departments))
)
MERGE
TGT AS target
USING (
SELECT fact.DepartmentID,
fact.JobCodeID,
fact.PayPeriodID,
fact.TimeClassID,
fact.PayCodeGroupID,
fact.IsSystemGenerated,
fact.Hours,
fact.HoursYTD,
fact.HoursPriorYear,
fact.HoursPriorYTD,
fact.Dollars,
fact.DollarsYTD,
fact.DollarsPriorYear,
fact.DollarsPriorYTD,
FTEs = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.Hours AS NUMERIC(20, 6)) / cast(PeriodDays AS NUMERIC(20, 6))) -- fact hours per calendar day
/ WorkingHoursCoef
ELSE fact.Hours / (WorkingDays * 8.0)
END
END, 0),
FTEsYTD = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursYTD AS NUMERIC(20, 6)) / (cast(PeriodDays AS NUMERIC(20, 6)) * cast(pp.PeriodNumber AS NUMERIC(20, 6)))) -- YTD hours / YTD days
/ WorkingHoursCoef
ELSE fact.HoursYTD / (WorkingDays * 8.0 * pp.PeriodNumber)
END
END, 0),
FTEsPriorYear = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursPriorYear AS NUMERIC(20, 6)) / cast(PeriodDays AS NUMERIC(20, 6))) -- fact hours for Prior Year per calendar day
/ WorkingHoursCoef
ELSE fact.HoursPriorYear / (WorkingDays * 8.0)
END
END, 0),
FTEsPriorYTD = isnull(CASE WHEN pcg.ProductiveClassID IN ('3','2') AND pp.PeriodNumber != 0
THEN CASE
WHEN WorkingHoursCoef IS NOT NULL
THEN (cast(fact.HoursPriorYTD AS NUMERIC(20, 6)) / (cast(PeriodDays AS NUMERIC(20, 6)) * cast(pp.PeriodNumber AS NUMERIC(20, 6)))) -- YTD for PY hours / YTD days
/ WorkingHoursCoef
ELSE fact.HoursPriorYTD / (WorkingDays * 8.0 * pp.PeriodNumber)
END
END, 0)
FROM (
SELECT
d.DepartmentID,
d.JobCodeID,
d.PayCodeGroupID,
d.PayPeriodID,
d.TimeClassID,
sum(d.Hours) AS Hours,
sum(d.HoursYTD) AS HoursYTD,
sum(d.HoursPriorYear) AS HoursPriorYear,
sum(d.HoursPriorYTD) AS HoursPriorYTD,
sum(d.Dollars) AS Dollars,
sum(d.DollarsYTD) AS DollarsYTD,
sum(d.DollarsPriorYear) AS DollarsPriorYear,
sum(d.DollarsPriorYTD) AS DollarsPriorYTD,
IsSystemGenerated = min(cast(IsSystemGenerated as tinyint))
FROM fw.FactPayrollSampledPayPeriodDetailed d
INNER JOIN [fw].[DimPayPeriod] pp on d.PayPeriodID = pp.PayPeriodID
WHERE (@departmentIDs is null or d.DepartmentID in(select val from @departments))
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
GROUP BY
d.DepartmentID,
d.JobCodeID,
d.PayCodeGroupID,
d.PayPeriodID,
d.TimeClassID
) fact
left join [fw].[DimPayPeriod] pp on pp.PayPeriodID=fact.PayPeriodID
left join [fw].[DimPayCodeGroup] pcg on fact.PayCodeGroupID = pcg.PayCodeGroupID
left join #WorkWeekHours ww on ww.DepartmentID = fact.DepartmentID and ww.JobCodeID = fact.JobCodeID
) AS source
ON source.DepartmentID = target.DepartmentID
AND source.JobCodeID = target.JobCodeID
AND source.PayCodeGroupID = target.PayCodeGroupID
AND source.PayPeriodID = target.PayPeriodID
AND source.TimeClassID = target.TimeClassID
WHEN MATCHED AND (
target.Dollars <> source.Dollars
or target.DollarsYTD <> source.DollarsYTD
or target.DollarsPriorYear <> source.DollarsPriorYear
or target.DollarsPriorYTD <> source.DollarsPriorYTD
or target.Hours <> source.Hours
or target.HoursYTD <> source.HoursYTD
or target.HoursPriorYear <> source.HoursPriorYear
or target.HoursPriorYTD <> source.HoursPriorYTD
or target.FTEs <> source.FTEs
or target.FTEsYTD <> source.FTEsYTD
or target.FTEsPriorYear <> source.FTEsPriorYear
or target.FTEsPriorYTD <> source.FTEsPriorYTD
or target.isSystemGenerated <> source.isSystemGenerated)
THEN
UPDATE
SET target.Dollars = source.Dollars,
target.DollarsYTD = source.DollarsYTD,
target.DollarsPriorYear = source.DollarsPriorYear,
target.DollarsPriorYTD = source.DollarsPriorYTD,
target.Hours = source.Hours,
target.HoursYTD = source.HoursYTD,
target.HoursPriorYear = source.HoursPriorYear,
target.HoursPriorYTD = source.HoursPriorYTD,
target.FTEs = source.FTEs,
target.FTEsYTD = source.FTEsYTD,
target.FTEsPriorYear = source.FTEsPriorYear,
target.FTEsPriorYTD = source.FTEsPriorYTD,
target.isSystemGenerated = source.isSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
PayPeriodID,
JobCodeID,
PayCodeGroupID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.PayPeriodID,
source.JobCodeID,
source.PayCodeGroupID,
source.TimeClassID,
source.Dollars,
source.DollarsYTD,
source.DollarsPriorYear,
source.DollarsPriorYTD,
source.Hours,
source.HoursYTD,
source.HoursPriorYear,
source.HoursPriorYTD,
source.FTEs,
source.FTEsYTD,
source.FTEsPriorYear,
source.FTEsPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
END
GO
---------------------------------------------
-- fw.procPlanTypeCreateMaintenanceCustomScriptStub
CREATE proc [fw].[procPlanTypeCreateMaintenanceCustomScriptStub]
@schema sysname,
@plantypename nvarchar(100)
as
declare @ptguid uniqueidentifier
select @ptguid = plantypeguid from PlanType where Name = @plantypename
if @ptguid is null begin
print 'invalid plantype name'
return
end
declare @cs1guid uniqueidentifier
declare @cs2guid uniqueidentifier
declare @cnt int
select
@cs1guid = cs.CustomScriptGUID,
@cs2guid = cs2.CustomScriptGUID,
@cnt = case when coalesce(cs.name,cs2.name) = @plantypename + ' Maintenance' then 1 else 0 end
from
PlanType pt
left join CustomScript cs on pt.OnSaveCustomScriptGUID = cs.CustomScriptGUID
left join CustomScript cs2 on pt.OnSaveCustomScript2GUID = cs2.CustomScriptGUID
where
pt.PlanTypeGUID = @ptguid
if @cnt > 0 begin
print 'maintenance script already exists'
return
end
if not @cs1guid is null and not @cs2guid is null begin
print 'no onsave slots left'
return
end
declare @sql nvarchar(max)
set @sql = '
create proc [' + @schema + '].[proc' + replace(@plantypename, ' ','') + 'Maintenance]
@planguid uniqueidentifier
as
--do plan maintenance here
'
exec (@sql)
declare @scriptguid uniqueidentifier
set @scriptguid = NEWID()
insert into CustomScript ( CustomScriptGUID,Name, ScriptText, IsSynchronous)
values (@scriptguid,@plantypename + ' Maintenance', 'exec [' + @schema + '].[proc' + replace(@plantypename, ' ','') + 'Maintenance] @planGuidList',1)
if @cs1guid is null begin
update PlanType set OnSaveCustomScriptGUID = @scriptguid where plantypeguid = @ptguid
end else begin
update PlanType set OnSaveCustomScript2GUID = @scriptguid where plantypeguid = @ptguid
end
set @sql = '
alter proc [' + @schema + '].[proc' + replace(@plantypename, ' ','') + 'Maintenance]
@planguid uniqueidentifier
as
--do plan maintenance here
go
'
print @sql
GO
---------------------------------------------
-- fw.procPostDiMergeEncounterBasedStatistics
CREATE PROC fw.procPostDiMergeEncounterBasedStatistics
@statisticId int,
@year int,
@months SqlInt32ListTableType READONLY
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #detailsToMerge
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToMerge(RowId)
INSERT #detailsToMerge (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, SUM(ebs.Value)
FROM fw.FactEncounterBasedStatistics ebs
JOIN fw.DimDate d ON ebs.DateID = d.DateID
JOIN @months m ON d.CalendarMonth = m.value
WHERE ebs.StatisticID = @statisticId
AND d.FiscalYear = @year
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
CREATE TABLE #batch
(
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToMerge
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToMerge
WHERE RowId >= @startRowId
ORDER BY RowID) as d
TRUNCATE TABLE #batch
INSERT #batch (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #detailsToMerge ebs
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
UPDATE fw.FactChargeBasedStatistics
SET Value = ebs.Value
FROM fw.FactChargeBasedStatistics cbs
JOIN #batch ebs
ON cbs.DepartmentID = ebs.DepartmentID
AND cbs.AccountID = ebs.AccountID
AND cbs.DateID = ebs.DateID
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #batch ebs
WHERE NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatistics cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.DateID = cbs.DateID
)
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToMerge d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToMerge
DROP TABLE IF EXISTS #batch
END
GO
---------------------------------------------
-- fw.procPostDiMergeEncounterBasedStatisticsMonthly
CREATE PROC fw.procPostDiMergeEncounterBasedStatisticsMonthly
@statisticId int,
@year int,
@months SqlInt32ListTableType READONLY
AS
BEGIN
SET NOCOUNT ON
DROP TABLE IF EXISTS #detailsToMerge
CREATE TABLE #detailsToMerge
(
FiscalYearID smallint,
FiscalMonthID tinyint,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
INSERT #detailsToMerge (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN @months s ON ebs.FiscalMonthID = s.value
WHERE ebs.FiscalYearID = @year
AND ebs.StatisticID = @statisticId
UPDATE #detailsToMerge
SET Value = aggr.AggregatedValue
FROM
(
SELECT ebs.FiscalYearID, ebs.FiscalMonthID, ebs.DepartmentID, ebs.AccountID, SUM(ebs.Value) AS AggregatedValue
FROM #detailsToMerge d
JOIN fw.FactEncounterBasedStatisticsMonthly ebs
ON ebs.DepartmentID = d.DepartmentID
AND ebs.AccountID = d.AccountID
AND ebs.FiscalYearID = d.FiscalYearID
AND ebs.FiscalMonthID = d.FiscalMonthID
GROUP BY ebs.FiscalYearID, ebs.FiscalMonthID, ebs.DepartmentID, ebs.AccountID
) aggr
JOIN #detailsToMerge det
ON aggr.DepartmentID = det.DepartmentID
AND aggr.AccountID = det.AccountID
AND aggr.FiscalYearID = det.FiscalYearID
AND aggr.FiscalMonthID = det.FiscalMonthID
UPDATE fw.FactChargeBasedStatisticsMonthly
SET Value = ebs.Value
FROM #detailsToMerge ebs
JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM #detailsToMerge ebs
WHERE NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatisticsMonthly cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
)
END
GO
---------------------------------------------
-- fw.procPostDiMergeEncounterBasedStatisticsMonthlyOpt
CREATE PROC fw.procPostDiMergeEncounterBasedStatisticsMonthlyOpt
AS
BEGIN
SET NOCOUNT ON
DROP TABLE IF EXISTS #detailsToMerge
CREATE TABLE #detailsToMerge
(
FiscalYearID smallint,
FiscalMonthID tinyint,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
INSERT #detailsToMerge (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN data.EbsPostDiCacheMonthly c
ON ebs.StatisticID = c.StatisticID
AND ebs.FiscalYearID = c.Year
AND ebs.FiscalMonthID = c.Month
UPDATE #detailsToMerge
SET Value = aggr.AggregatedValue
FROM
(
SELECT ebs.FiscalYearID, ebs.FiscalMonthID, ebs.DepartmentID, ebs.AccountID, SUM(ebs.Value) AS AggregatedValue
FROM #detailsToMerge d
JOIN fw.FactEncounterBasedStatisticsMonthly ebs
ON ebs.DepartmentID = d.DepartmentID
AND ebs.AccountID = d.AccountID
AND ebs.FiscalYearID = d.FiscalYearID
AND ebs.FiscalMonthID = d.FiscalMonthID
GROUP BY ebs.FiscalYearID, ebs.FiscalMonthID, ebs.DepartmentID, ebs.AccountID
) aggr
JOIN #detailsToMerge det
ON aggr.DepartmentID = det.DepartmentID
AND aggr.AccountID = det.AccountID
AND aggr.FiscalYearID = det.FiscalYearID
AND aggr.FiscalMonthID = det.FiscalMonthID
UPDATE fw.FactChargeBasedStatisticsMonthly
SET Value = ebs.Value
FROM #detailsToMerge ebs
JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM #detailsToMerge ebs
WHERE NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatisticsMonthly cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
)
END
GO
---------------------------------------------
-- fw.procPostDiMergeEncounterBasedStatisticsOpt
CREATE PROC fw.procPostDiMergeEncounterBasedStatisticsOpt
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #detailsToMerge
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToMerge(RowId)
INSERT #detailsToMerge (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, SUM(ebs.Value)
FROM fw.FactEncounterBasedStatistics ebs
JOIN fw.DimDate d ON ebs.DateID = d.DateID
JOIN data.EbsPostDiCache c
ON ebs.StatisticID = c.StatisticID
AND d.FiscalYear = c.Year
AND d.CalendarMonth = c.Month
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
CREATE TABLE #batch
(
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToMerge
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToMerge
WHERE RowId >= @startRowId
ORDER BY RowID) as d
TRUNCATE TABLE #batch
INSERT #batch (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #detailsToMerge ebs
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
UPDATE fw.FactChargeBasedStatistics
SET Value = ebs.Value
FROM fw.FactChargeBasedStatistics cbs
JOIN #batch ebs
ON cbs.DepartmentID = ebs.DepartmentID
AND cbs.AccountID = ebs.AccountID
AND cbs.DateID = ebs.DateID
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #batch ebs
WHERE NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatistics cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.DateID = cbs.DateID
)
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToMerge d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToMerge
DROP TABLE IF EXISTS #batch
END
GO
---------------------------------------------
-- fw.procPostDiRestoreChargeBasedStatistics
CREATE PROC fw.procPostDiRestoreChargeBasedStatistics
@statisticId int,
@year int,
@months SqlInt32ListTableType READONLY
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #detailsToRestore
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToRestore(RowId)
INSERT #detailsToRestore (DepartmentID, AccountID, DateID)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID
FROM fw.FactEncounterBasedStatistics ebs
JOIN fw.DimDate d ON ebs.DateID = d.DateID
JOIN @months m ON d.CalendarMonth = m.value
WHERE ebs.StatisticID = @statisticId
AND d.FiscalYear = @year
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToRestore
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToRestore
WHERE RowId >= @startRowId
ORDER BY RowID) as d
DELETE cbs
FROM fw.FactChargeBasedStatistics cbs
JOIN #detailsToRestore ebs
ON cbs.DepartmentID = ebs.DepartmentID
AND cbs.AccountID = ebs.AccountID
AND cbs.DateID = ebs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT sgs.DepartmentID, sgs.AccountID, sgs.DateID, AVG(sgs.Value)
FROM fw.FactSystemGeneratedStatistics sgs
JOIN #detailsToRestore ebs
ON sgs.DepartmentID = ebs.DepartmentID
AND sgs.AccountID = ebs.AccountID
AND sgs.DateID = ebs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
GROUP BY sgs.DepartmentID, sgs.AccountID, sgs.DateID
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToRestore d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToRestore
END
GO
---------------------------------------------
-- fw.procPostDiRestoreChargeBasedStatisticsMonthly
CREATE PROC fw.procPostDiRestoreChargeBasedStatisticsMonthly
@statisticId int,
@year int,
@months SqlInt32ListTableType READONLY
AS
BEGIN
SET NOCOUNT ON
DELETE cbs
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN @months m ON ebs.FiscalMonthID = m.value
JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
WHERE ebs.FiscalYearID = @year
AND ebs.StatisticID = @statisticId
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT sgs.DepartmentID, sgs.AccountID, sgs.FiscalYearID, sgs.FiscalMonthID, AVG(sgs.Value)
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN @months m ON ebs.FiscalMonthID = m.value
JOIN fw.FactSystemGeneratedStatisticsMonthly sgs
ON ebs.DepartmentID = sgs.DepartmentID
AND ebs.AccountID = sgs.AccountID
AND ebs.FiscalYearID = sgs.FiscalYearID
AND ebs.FiscalMonthID = sgs.FiscalMonthID
WHERE ebs.FiscalYearID = @year
AND ebs.StatisticID = @statisticId
GROUP BY sgs.DepartmentID, sgs.AccountID, sgs.FiscalYearID, sgs.FiscalMonthID
END
GO
---------------------------------------------
-- fw.procPostDiRestoreChargeBasedStatisticsMonthlyOpt
CREATE PROC fw.procPostDiRestoreChargeBasedStatisticsMonthlyOpt
AS
BEGIN
SET NOCOUNT ON
DELETE cbs
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN data.EbsPostDiCacheMonthly c
ON ebs.StatisticID = c.StatisticID
AND ebs.FiscalYearID = c.Year
AND ebs.FiscalMonthID = c.Month
JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT sgs.DepartmentID, sgs.AccountID, sgs.FiscalYearID, sgs.FiscalMonthID, AVG(sgs.Value)
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN data.EbsPostDiCacheMonthly c
ON ebs.StatisticID = c.StatisticID
AND ebs.FiscalYearID = c.Year
AND ebs.FiscalMonthID = c.Month
JOIN fw.FactSystemGeneratedStatisticsMonthly sgs
ON ebs.DepartmentID = sgs.DepartmentID
AND ebs.AccountID = sgs.AccountID
AND ebs.FiscalYearID = sgs.FiscalYearID
AND ebs.FiscalMonthID = sgs.FiscalMonthID
GROUP BY sgs.DepartmentID, sgs.AccountID, sgs.FiscalYearID, sgs.FiscalMonthID
END
GO
---------------------------------------------
-- fw.procPostDiRestoreChargeBasedStatisticsOpt
CREATE PROC fw.procPostDiRestoreChargeBasedStatisticsOpt
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #detailsToRestore
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToRestore(RowId)
INSERT #detailsToRestore (DepartmentID, AccountID, DateID)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID
FROM fw.FactEncounterBasedStatistics ebs
JOIN fw.DimDate d ON ebs.DateID = d.DateID
JOIN data.EbsPostDiCache c
ON ebs.StatisticID = c.StatisticID
AND d.FiscalYear = c.Year
AND d.CalendarMonth = c.Month
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToRestore
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToRestore
WHERE RowId >= @startRowId
ORDER BY RowID) as d
DELETE cbs
FROM fw.FactChargeBasedStatistics cbs
JOIN #detailsToRestore ebs
ON cbs.DepartmentID = ebs.DepartmentID
AND cbs.AccountID = ebs.AccountID
AND cbs.DateID = ebs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT sgs.DepartmentID, sgs.AccountID, sgs.DateID, AVG(sgs.Value)
FROM fw.FactSystemGeneratedStatistics sgs
JOIN #detailsToRestore ebs
ON sgs.DepartmentID = ebs.DepartmentID
AND sgs.AccountID = ebs.AccountID
AND sgs.DateID = ebs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
GROUP BY sgs.DepartmentID, sgs.AccountID, sgs.DateID
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToRestore d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToRestore
END
GO
---------------------------------------------
-- fw.procPrepareGL
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-03-19 IP D-06997 Replaced table variable by temp tables
** 2 2018-05-15 KF D-07006 Rolling Average method for metric target calculation doesn't include months with 0 values
** 3 2018-05-31 IP TK-58509 reverting part of migrations for D-07006
** 4 2018-06-04 IP TK-58587 re-applying changes (2018-05-16 D-07187 Budget adjustment effecting historical budget fiscal years)
** 5 2019-09-03 vfay D-08704 Fix incorrectly adding previous year's data into the current year
** 6 2024-06-04 ishah JAZZ-61244 [TrLog][High] Bug - Run Management Reporting Monthly Process (MR Sampling, all years run): Task failed on Inserting GL Sampled.
***************************************************************/
----- #FactGLStagingValue with specified columns(DepartmentID int, AccountID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Amount decimal(21,6), ApplyDate datetime, Src varchar(max)) should be created before calling the proc
CREATE PROCEDURE [fw].[procPrepareGL]
@FiscalYearID int = 0
AS
BEGIN
DECLARE
@iteration INT = 1,
@batchSize INT,
@applyDateString nvarchar(100) = '''' + '1900-01-01' + ''''
-- Split by batches
EXEC mr.procGetIntBatchSize
@DefaultBatchSize = 30000000,
@ResultBatchSize = @batchSize OUTPUT
IF OBJECT_ID('tempdb..#inputDepartments') IS NOT NULL DROP TABLE #inputDepartments
CREATE TABLE #inputDepartments (DepartmentID INT, RecordsCount INT, BatchID INT)
DECLARE @fromClause nvarchar(max) = '
(
SELECT
stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID
FROM
int.FactGL stat
inner join fw.DimDepartment D on D.Departmentid = STAT.Departmentid
WHERE
stat.IsDeleted = 0
and stat.Value != 0
and (stat.FiscalYearID = ' + cast(@FiscalYearID as nvarchar(100)) + ' or ' + cast(@FiscalYearID as nvarchar(100)) + ' = 0)
GROUP BY stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID ) X
'
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #FactGLStagingValue (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID,
sum(stat.Value) as Amount,
cast('1900-01-01' as datetime) as ApplyDate,
cast('int_1' as varchar(max))+'V' as src
from
int.FactGL stat
inner join fw.DimDepartment D on D.Departmentid = stat.Departmentid
inner join #inputDepartments ID ON ID.DepartmentID = D.DepartmentID
where
stat.IsDeleted = 0
and stat.Value != 0
and ID.BatchID = @BatchID
and (stat.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
Group by stat.DepartmentID,
stat.AccountID,
stat.FiscalYearID,
stat.FiscalMonthID,
stat.TimeClassID
SET @BatchID = @BatchID + 1
END
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
PRINT '-------- Vendor Products Report --------';
DECLARE BRA_cursor CURSOR FOR
SELECT distinct BudgetReallocationGUID,date,BudgetReallocationType from fw.BudgetReallocationWithDefinedType
WHERE (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
ORDER BY date;
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
IF @BudgetReallocationType = 'ReallocateSingle'
BEGIN -- Insert rows with "correcting" values
UPDATE STT
SET Amount = Amount + Change,
stt.ApplyDate = b.Date,
src = SRC + '[Added_'+cast(Change as varchar(50))+'_from_'+cast(SourceDepartmentID as varchar(10))+']'
FROM #FactGLStagingValue STT
INNER JOIN [mr].[BudgetReallocation] b ON b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
WHERE Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and UnitTypeID = 34
and TimeClassID = 2
and b.Archived = 0
UPDATE STT
SET Amount = Amount - Change,
stt.ApplyDate = b.Date,
src = SRC + '[Removed_'+cast(Change as varchar(50))+'_to_'+cast(TargetDepartmentID as varchar(10))+']'
FROM #FactGLStagingValue STT
INNER JOIN [mr].[BudgetReallocation] b ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
WHERE Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and UnitTypeID = 34
and TimeClassID = 2
and b.Archived = 0
INSERT INTO #FactGLStagingValue (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
Change * -1 as Value,
b.Date as ApplyDate,
'ra_1_m' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN (select DepartmentID,AccountID,FiscalYearID,FiscalMonthID,max(ApplyDate) as ApplyDate from #FactGLStagingValue where TimeClassID = 2 group by DepartmentID,AccountID,FiscalYearID,FiscalMonthID) STT ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID
where Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and stt.DepartmentID is null
and UnitTypeID = 34
and b.Archived = 0
UNION All
SELECT
b.TargetDepartmentID as DepartmentID,
b.TargetAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
Change as Value,
b.Date as ApplyDate,
'ra_1_p' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN (select DepartmentID,AccountID,FiscalYearID,FiscalMonthID,max(ApplyDate) as ApplyDate from #FactGLStagingValue where TimeClassID = 2 group by DepartmentID,AccountID,FiscalYearID,FiscalMonthID) STT ON b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID
where Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and stt.DepartmentID is null
and UnitTypeID = 34
and b.Archived = 0
END
ELSE
----------------------
IF @BudgetReallocationType = 'ReallocateMulti'
BEGIN
UPDATE STT
set
STT.Amount = STT.Amount + STT_SRC.Amount,
STT.ApplyDate = b.[Date],
STT.Src = stt.Src + '[RealMulti_'+cast(stt_src.Amount as varchar(50))+'_from_'+cast(stt_src.DepartmentID as varchar(10))+']'
FROM #FactGLStagingValue STT
INNER JOIN [mr].[BudgetReallocation] b on
b.TargetDepartmentID = STT.DepartmentID and
b.TargetAccountID = STT.AccountID and
b.FiscalYearID = STT.FiscalYearID and
b.[Date] >= STT.ApplyDate
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on
ba.BudgetReallocationGUID = b.BudgetReallocationGUID and
ba.FiscalMonthID = STT.FiscalMonthID
INNER JOIN #FactGLStagingValue STT_SRC on
STT_SRC.DepartmentID = b.SourceDepartmentID and
STT_SRC.AccountID = b.SourceAccountID and
STT_SRC.FiscalYearID = b.FiscalYearID and
STT_SRC.FiscalMonthID = ba.FiscalMonthID and
STT_SRC.TimeClassID = STT.TimeClassID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID and
ba.UnitTypeID = 34 and
ba.Change <> 0 and
STT.TimeClassID = 2 and
b.Archived = 0
INSERT INTO #FactGLStagingValue (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount, ApplyDate, Src)
SELECT
b.TargetDepartmentID as DepartmentID,
b.TargetAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
STT_SRC.Amount as Value,
b.[Date] as ApplyDate,
'ReallocateMulti' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on
b.BudgetReallocationGUID = ba.BudgetReallocationGUID
INNER JOIN #FactGLStagingValue STT_SRC on
STT_SRC.DepartmentID = b.SourceDepartmentID and
STT_SRC.AccountID = b.SourceAccountID and
STT_SRC.FiscalYearID = b.FiscalYearID and
STT_SRC.FiscalMonthID = ba.FiscalMonthID and
STT_SRC.TimeClassID = 2
LEFT JOIN #FactGLStagingValue STT on
STT.DepartmentID = b.TargetDepartmentID and
STT.AccountID = b.TargetAccountID and
STT.FiscalYearID = b.FiscalYearID and
STT.FiscalMonthID = ba.FiscalMonthID and
STT.TimeClassID = 2
where
stt.DepartmentID is null and
ba.Change <> 0 and
ba.UnitTypeID = 34 and
b.[Date] >= isnull(stt.ApplyDate,'1900-01-01') and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
b.Archived = 0
UPDATE STT_SRC
SET
STT_SRC.Amount = 0,
STT_SRC.ApplyDate = b.[Date],
STT_SRC.Src = stt_src.Src + '[RealMulti_'+cast(stt_src.Amount as varchar(50))+'_to_'+cast(stt.DepartmentID as varchar(10))+']'
FROM #FactGLStagingValue STT
INNER JOIN [mr].[BudgetReallocation] b on
b.TargetDepartmentID = STT.DepartmentID and
b.TargetAccountID = STT.AccountID and
b.FiscalYearID = STT.FiscalYearID and
b.[Date] >= STT.ApplyDate
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on
b.BudgetReallocationGUID = ba.BudgetReallocationGUID and
ba.FiscalMonthID = STT.FiscalMonthID
INNER JOIN #FactGLStagingValue STT_SRC on
b.SourceDepartmentID = STT_SRC.DepartmentID and
b.SourceAccountID = STT_SRC.AccountID and
b.FiscalYearID = STT_SRC.FiscalYearID and
ba.FiscalMonthID = STT_SRC.FiscalMonthID and
STT_SRC.TimeClassID = 2
where
ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
ba.UnitTypeID = 34 and
b.Archived = 0
END
ELSE
IF @BudgetReallocationType = 'AdjustMontly'
BEGIN
UPDATE STT
SET
stt.Amount = stt.Amount+Change,
stt.ApplyDate = b.Date,
stt.Src = stt.Src + '[AdjustMontly_'+cast(Change as varchar(50))+']'
FROM #FactGLStagingValue STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and b.Date >= stt.ApplyDate and b.FiscalYearID = stt.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 34
and Change <> 0
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and TimeClassID = 2
and b.Archived = 0
INSERT INTO #FactGLStagingValue (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
Change as Value,
b.date as ApplyDate,
'ra_3' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN #FactGLStagingValue STT ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID and TimeClassID = 2
where Change <> 0
and stt.DepartmentID is null
and ba.UnitTypeID =34
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and b.Archived = 0
END
ELSE
IF @BudgetReallocationType = 'ManualFile'
BEGIN
UPDATE STT
SET
stt.Amount = ba.NewSourceValue,
stt.ApplyDate = b.Date,
stt.Src = stt.Src + '[ManualFile_'+cast(NewSourceValue as varchar(50))+']'
FROM #FactGLStagingValue STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and b.Date >= stt.ApplyDate and b.FiscalYearID = stt.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 34
and TimeClassID = 2
and Change <> 0
and b.Archived = 0
INSERT INTO #FactGLStagingValue (DepartmentID,AccountID,FiscalYearID,FiscalMonthID,TimeClassID,Amount,ApplyDate,Src)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
b.FiscalYearID,
ba.FiscalMonthID,
2 as TimeclassID,
NewSourceValue as Value,
b.date as ApplyDate,
'ManualFile' as src
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
LEFT JOIN #FactGLStagingValue STT ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and stt.FiscalYearID = b.FiscalYearID and stt.FiscalMonthID = ba.FiscalMonthID and TimeClassID = 2
where Change <> 0
and stt.DepartmentID is null
and ba.UnitTypeID =34
and b.Date >= isnull(stt.ApplyDate,'1900-01-01')
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and b.Archived = 0
END
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
SET @fromClause = '
(
SELECT
STT.DepartmentID,
STT.AccountID,
STT.FiscalYearID,
STT.FiscalMonthID,
STT.TimeclassID,
0 as Amount,
' + '''' + 'none' + '''' + ' as src
FROM int.FactGL STT
INNER JOIN fw.DimDepartment D ON D.DepartmentID = STT.DepartmentID
LEFT JOIN #FactGLStagingValue fgs
ON fgs.DepartmentID = STT.DepartmentID
AND fgs.AccountID = STT.AccountID
AND fgs.FiscalYearID = STT.FiscalYearID
AND fgs.FiscalMonthID = STT.FiscalMonthID
AND fgs.TimeClassID = STT.TimeClassID
WHERE fgs.DepartmentID IS NULL AND STT.IsDeleted = 0 AND STT.Value != 0 AND (STT.FiscalYearID = ' + cast(@FiscalYearID as nvarchar(100)) + ' or ' + cast(@FiscalYearID as nvarchar(100)) + ' = 0)
) X
'
TRUNCATE TABLE #inputDepartments
INSERT INTO #inputDepartments
EXEC dbo.procGetInputDataByBatches
@batchSize = @batchSize,
@columnName = 'DepartmentID',
@tableAlias = 'X',
@fromClause = @fromClause,
@whereClause = '',
@isDebug = 0
SELECT @MaxBatchID = MAX(BatchID) FROM #inputDepartments
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
INSERT INTO #FactGLStagingValue (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount, Src)
SELECT stat.DepartmentID, stat.AccountID, stat.FiscalYearID, stat.FiscalMonthID, stat.TimeClassID, 0 as Amount, 'none' as src
FROM int.FactGL stat
INNER JOIN fw.DimDepartment D ON D.Departmentid = stat.Departmentid
LEFT JOIN #FactGLStagingValue fgs
ON fgs.DepartmentID = stat.DepartmentID
AND fgs.AccountID = stat.AccountID
AND fgs.FiscalYearID = stat.FiscalYearID
AND fgs.FiscalMonthID = stat.FiscalMonthID
AND fgs.TimeClassID = stat.TimeClassID
INNER JOIN #inputDepartments ID ON ID.DepartmentID = D.Departmentid
WHERE stat.IsDeleted = 0
AND stat.Value != 0
AND (stat.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
AND ID.BatchID = @BatchID
AND fgs.DepartmentID IS NULL
SET @BatchID = @BatchID + 1
END
END
GO
---------------------------------------------
-- fw.procPreparePayrollByMonth
CREATE PROC [fw].[procPreparePayrollByMonth] (@FiscalYearID int =0)
as
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-03-19 IP D-06997 Replaced table variable by temp tables
***************************************************************/
IF OBJECT_ID('tempdb.dbo.#StatisticTempTable', 'U') IS NOT NULL DROP TABLE #StatisticTempTable;
declare @iteration int = 1
create table #StatisticTempTable (
DepartmentID int,
JobCodeID int,
EmployeeID int,
PayCodeID int,
PayCodeGroupID int,
FiscalYearID smallint,
FiscalMonthID tinyint,
TimeClassID tinyint,
Hours decimal(18,6),
Dollars decimal(18,6),
ApplyDate datetime,
Src varchar(max)
)
INSERT INTO #StatisticTempTable (DepartmentID,JobCodeID,EmployeeID,PayCodeID,PayCodeGroupID,FiscalYearID,FiscalMonthID,TimeClassID,Hours,Dollars,ApplyDate,Src)
SELECT
pr.DepartmentID,
pr.JobCodeID,
pr.EmployeeID,
pr.PayCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID,
SUM(CASE WHEN pr.unittypeID=51 and pc.IsHoursIgnored=0 then value ELSE 0 END) AS Hours,
SUM(CASE WHEN pr.unittypeID=34 and pc.IsDollarsIgnored=0 then value ELSE 0 END) AS Dollars,
cast('1900-01-01' as date) as ApplyDate,
'int' as Src
FROM
int.FactStaffing pr
INNER JOIN fw.DimPayCode pc on pc.PayCodeID = PR.PayCodeID
WHERE
pr.FiscalMonthCode not in('', '0')
and pr.IsDeleted = 0
and pr.Value != 0
AND (pr.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
GROUP BY
pr.DepartmentID,
pr.JobCodeID,
pr.EmployeeID,
pr.PayCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID,
pr.PayCodeID
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
PRINT '-------- Vendor Products Report --------';
DECLARE BRA_cursor CURSOR FOR
SELECT distinct BudgetReallocationGUID,date,BudgetReallocationType from fw.BudgetReallocationWithDefinedType
WHERE (FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
ORDER BY date;
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
print @iteration
IF @BudgetReallocationType = 'ReallocateMulti'
BEGIN
UPDATE STT
SET
stt.DepartmentID = b.TargetDepartmentID,
stt.JobCodeID = b.TargetJobCodeID,
stt.Src = stt.Src + ';RealMulti'
FROM #StatisticTempTable STT
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceJobCodeID = stt.JobCodeID and b.Date >= stt.ApplyDate
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and stt.FiscalMonthID = ba.FiscalMonthID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 34
and change <> 0
and TimeClassID = 2
and DataType = 1
END
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
SELECT DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
sum(Hours) as Hours,
sum(Dollars) as Dollars
FROM (
SELECT
DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Hours,
Dollars
from #StatisticTempTable stt
UNION ALL
SELECT
pr.DepartmentID,
pr.JobCodeID,
pr.EmployeeID,
pr.PayCodeID,
pc.PayCodeGroupID,
PR.FiscalYearID,
pr.FiscalMonthID,
pr.TimeClassID,
0 AS Hours,
0 AS Dollars
FROM
int.FactStaffing pr
INNER JOIN fw.DimPayCode pc on pc.PayCodeID = PR.PayCodeID
WHERE
pr.FiscalMonthCode not in('', '0')
and pr.IsDeleted = 0
and pr.Value != 0
AND (pr.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
) SubSelect
GROUP BY DepartmentID,
JobCodeID,
EmployeeID,
PayCodeID,
PayCodeGroupID,
FiscalYearID,
FiscalMonthID,
TimeClassID
GO
---------------------------------------------
-- fw.procProviderSampledAdjustedTargetMonthlyInsert
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-10-30 KZ B-20910 Provider - Create adjusted target
*************************************************************/
CREATE proc [fw].[procProviderSampledAdjustedTargetMonthlyInsert] (@FiscalYearID int = 0)
AS
BEGIN
DECLARE @IsFlexingEnabled INT = (
SELECT VALUE
FROM [mr].[SystemSetting]
WHERE NAME = 'Is Target Flexed'
)
DECLARE @IsEfficiencyFactorPresent INT = (
SELECT count(*)
FROM mr.EfficiencyFactor
)
IF @IsEfficiencyFactorPresent > 0 BEGIN
DELETE FROM fw.FactProviderSampledMonthly_Pivoted WHERE (@FiscalYearID = FiscalYearID OR @FiscalYearID = 0) and TimeClassID = 22
INSERT INTO fw.FactProviderSampledMonthly_Pivoted (DepartmentID,
ProviderID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
OBForecastDetailID,
Volume,
Dollars,
Hours,
FTEs)
SELECT DepartmentID,
ProviderID,
FiscalYearID,
FiscalMonthID,
22,
OBForecastDetailID,
SUM(Volume),
SUM(Dollars),
SUM(Hours),
SUM(FTEs)
FROM fw.FactProviderSampledMonthly_Pivoted fact
WHERE (
(
ISNULL(fact.TimeClassID,0) = 4 AND @IsFlexingEnabled = 1
)
OR (
(
ISNULL(fact.TimeClassID,0) = 20) AND @IsFlexingEnabled = 0
)
)
AND (fact.FiscalYearID = @FiscalYearID OR @FiscalYearID = 0)
GROUP BY DepartmentID,
ProviderID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
OBForecastDetailID
EXEC [fw].[procFactMonthlyYTDPriorYearUpdate] @factTableName = 'fw.FactProviderSampledMonthly_Pivoted', @keyNameCSV = 'OBForecastDetailID,ProviderID',
@measureNameCSV = 'Volume,Dollars,Hours,FTEs',@fiscalYearID = @FiscalYearID, @timeClassID = 22, @isDebugOnly = 0
END
END
GO
---------------------------------------------
-- fw.procProviderSampledInsertMonthly
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2016-12-13 NL B-13759 Adding fiscalYearID param and filtering on it
** 2 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 3 2017-04-11 IP B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactProviderSampledMonthly.
** 4 2017-06-15 IP B-15086 odify SP to use unique temp table
** 5 2018-02-07 IP B-18725 MR - Provider sampling from payroll
** 6 2018-02-08 IP TK-53982 Fixed amount calculated as sum of Hours and Dollars
** 7 2018-02-28 IP B-18946 Update provider payroll sampling to be consistent with OB when there is duplicate data
** 8 2018-06-27 KF B-20195 MR - Provider calculate baseline target
** 9 2018-07-25 KF B-20342 MR - Update provider sampling to be in the appropriate format
**10 2018-08-22 KF D-07561 MR Sampling: Provider FTEsYTD values are calculated incorrectly
**11 2018-10-30 KF D-07727 MR Provider Sampling: FTEs and FTEsYTD are calculated based on different Work Week overrides
**12 2022-03-15 KF JAZZ-27781 Run PR Process Task can fail silently during Payroll Sampling
**13 2023-09-12 BS JAZZ-55750 Remove filter to allow other time classes in MR reporting
*************************************************************/
CREATE proc [fw].[procProviderSampledInsertMonthly]
@fiscalYearID smallint = 0
as
IF OBJECT_ID('tempdb..#ProviderSampledStaging') IS NOT NULL DROP TABLE #ProviderSampledStaging
IF OBJECT_ID('fw.ProviderSampledStagingWithCalcs') IS NOT NULL DROP TABLE fw.ProviderSampledStagingWithCalcs
CREATE TABLE #ProviderSampledStaging (RowID bigint identity(1,1), DepartmentID int, ProviderID int, FiscalYearID int, FiscalMonthID int, OBForecastDetailID int, TimeClassID int,
Dollars decimal(18,6), Hours decimal(18,6), Volume decimal(18,6), FTEs decimal(18,6), isDeleted bit, isSystemGenerated bit)
--push new data to fact table
insert into #ProviderSampledStaging (DepartmentID, ProviderID, FiscalYearID, FiscalMonthID, OBForecastDetailID, TimeClassID, Dollars, Hours, Volume, FTEs)
select
p.DepartmentID,
p.ProviderID,
p.FiscalYearID,
p.FiscalMonthID,
p.OBForecastDetailID,
p.TimeClassID,
SUM(CASE WHEN fd.UnitTypeID=34 then value ELSE 0 END) AS Dollars,
SUM(CASE WHEN fd.UnitTypeID=51 then value ELSE 0 END) AS Hours,
SUM(CASE WHEN fd.UnitTypeID=140 then value ELSE 0 END) AS Volume,
SUM(CASE WHEN fd.UnitTypeID=144 then value ELSE 0 END) AS FTEs
from
int.FactImportProvider p
INNER JOIN ob.DimOBForecastDetail fd on fd.OBForecastDetailID = p.OBForecastDetailID
where
p.IsDeleted = 0
and p.Value != 0
AND (p.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
group by
p.DepartmentID,
p.ProviderID,
p.FiscalYearID,
p.FiscalMonthID,
p.OBForecastDetailID,
p.TimeClassID
;with ProviderHours as (
SELECT data.DepartmentID, data.ProviderID, data.FiscalYearID, data.FiscalMonthID, data.TimeClassID, SUM(data.Amount) as Hours
FROM mr.viewFactProviderBasedOnPayroll data
LEFT JOIN #ProviderSampledStaging pss on pss.DepartmentID = data.DepartmentID and pss.ProviderID = data.ProviderID and pss.FiscalYearID = data.FiscalYearID and pss.FiscalMonthID = data.FiscalMonthID and pss.OBForecastDetailID = 1000 and pss.TimeClassID = data.TimeClassID
where data.UnitTypeID=51 --Hours
and data.IsProvider = 1
and pss.DepartmentID is null --use the provider import data and ignore the payroll data
and data.ProductiveClass in
(
'Productive',
'Productive Non-FTE',
'Non-Productive'
)
AND (data.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
group by
data.DepartmentID, data.ProviderID, data.FiscalYearID, data.FiscalMonthID,data.TimeClassID
)
INSERT INTO #ProviderSampledStaging
(DepartmentID, ProviderID, FiscalYearID, FiscalMonthID, OBForecastDetailID, TimeClassID, Dollars, Hours, Volume, FTEs)
SELECT
vw.DepartmentID, vw.ProviderID, vw.FiscalYearID, vw.FiscalMonthID, vw.OBForecastDetailID, vw.TimeClassID, SUM(vw.Amount) AS Dollars, 0 AS Hours, 0 AS Volume, 0 AS FTEs
FROM mr.viewFactProviderBasedOnPayroll vw
LEFT JOIN #ProviderSampledStaging pss on pss.DepartmentID = vw.DepartmentID and pss.ProviderID = vw.ProviderID and pss.FiscalYearID = vw.FiscalYearID and pss.FiscalMonthID = vw.FiscalMonthID and pss.OBForecastDetailID = vw.OBForecastDetailID and pss.TimeClassID = vw.TimeClassID
--If there is overlap for the same month, year, time class, provider, and forecastdetail between the provider import data and the payroll data, then the system should use the provider import data and ignore the payroll data
WHERE IsProvider = 1
and pss.DepartmentID is null --use the provider import data and ignore the payroll data
and vw.UnitTypeID=34 --Dollars
and vw.Amount != 0
AND (vw.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)
GROUP BY
vw.DepartmentID,
vw.ProviderID,
vw.FiscalYearID,
vw.FiscalMonthID,
vw.OBForecastDetailID,
vw.TimeClassID
UNION ALL
SELECT
DepartmentID, ProviderID, FiscalYearID, FiscalMonthID,1000 as OBForecastDetailID, TimeClassID, 0 AS Dollars, Hours, 0 AS Volume, 0 AS FTEs
FROM ProviderHours
UNION ALL
SELECT fact.DepartmentID, fact.ProviderID, fact.FiscalYearID, fact.FiscalMonthID,1001 as OBForecastDetailID, TimeClassID, 0 AS Dollars, 0 AS Hours, 0 AS Volume, fact.Value / (wpmCY.Hours) AS FTEs
from int.FactImportProvider fact
inner join fw.dimProvider pr on pr.ProviderID = fact.ProviderID
inner join fw.DimDepartment D on fact.DepartmentID=D.DepartmentID
inner join fw.DimEntity de on de.EntityID = D.EntityID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID and fact.FiscalYearID = wpmCY.FiscalYearID
and wpmCY.WorkWeekID = case when pr.WorkWeekOverrideID != -1 then pr.WorkWeekOverrideID when pr.WorkWeekOverrideID = -1 AND D.WorkWeekID >= 0 then D.WorkWeekID else de.WorkWeekID end
where fact.IsDeleted = 0 and fact.Value != 0 AND (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0) and 1000 = fact.OBForecastDetailID
UNION ALL
--Provider
SELECT fact.DepartmentID, fact.ProviderID, fact.FiscalYearID, fact.FiscalMonthID,1001 as OBForecastDetailID, TimeClassID, 0 AS Dollars, 0 AS Hours, 0 AS Volume, fact.Hours / (wpmCY.Hours) AS FTEs
from ProviderHours fact
inner join fw.dimProvider pr on pr.ProviderID = fact.ProviderID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID AND fact.FiscalYearID = wpmCY.FiscalYearID and wpmCY.WorkWeekID=pr.WorkWeekOverrideID
where pr.WorkWeekOverrideID!=-1
UNION ALL
--Department
SELECT fact.DepartmentID, fact.ProviderID, fact.FiscalYearID, fact.FiscalMonthID,1001 as OBForecastDetailID, TimeClassID, 0 AS Dollars, 0 AS Hours, 0 AS Volume, fact.Hours / (wpmCY.Hours) AS FTEs
from ProviderHours fact
inner join fw.dimProvider pr on pr.ProviderID = fact.ProviderID
inner join fw.DimDepartment D on fact.DepartmentID=D.DepartmentID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID and fact.FiscalYearID = wpmCY.FiscalYearID and wpmCY.WorkWeekID=D.WorkWeekID
where pr.WorkWeekOverrideID=-1 AND D.WorkWeekID >= 0
UNION ALL
--Entity
SELECT fact.DepartmentID, fact.ProviderID, fact.FiscalYearID, fact.FiscalMonthID,1001 as OBForecastDetailID, TimeClassID, 0 AS Dollars, 0 AS Hours, 0 AS Volume, fact.Hours / (wpmCY.Hours) AS FTEs
from ProviderHours fact
inner join fw.dimProvider pr on pr.ProviderID = fact.ProviderID
inner join fw.DimDepartment D on fact.DepartmentID=D.DepartmentID
inner join fw.DimEntity de on de.EntityID = D.EntityID
inner join [client].[viewFactWorkingHoursPerMonthWithYTDHoursPerMonth] wpmCY on fact.FiscalMonthID=wpmCY.FiscalMonthID and fact.FiscalYearID = wpmCY.FiscalYearID and wpmCY.WorkWeekID=de.WorkWeekID
where pr.WorkWeekOverrideID=-1 AND D.WorkWeekID < 0
--run calculations
exec fw.procFactMonthlyMergeDuplicates '#ProviderSampledStaging', 'ProviderID,OBForecastDetailID', 'Dollars,Hours,Volume,FTEs', @fiscalYearID, 0, 0
exec fw.procFactProviderSampledBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactMonthlyYTDPriorYearUpdateStaging 'fw.FactProviderSampledMonthly_Pivoted','#ProviderSampledStaging','ProviderID,OBForecastDetailID', 'Dollars,Hours,Volume,FTEs', @fiscalYearID, 0, 0
exec client.procFactProviderSampledMonthlyDetailedFTEsInsertStaging @fiscalYearID = @fiscalYearID
print 'finish staging calculations --- '+convert(varchar(20),GETDATE(),113)
IF @fiscalYearID = 0
BEGIN
truncate table fw.FactProviderSampledMonthly_Pivoted
INSERT INTO fw.FactProviderSampledMonthly_Pivoted With (TABLOCKX) (
DepartmentID,
FiscalMonthID,
FiscalYearID,
ProviderID,
OBForecastDetailID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
Volume,
VolumeYTD,
VolumePriorYear,
VolumePriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
SELECT
DepartmentID,
FiscalMonthID,
FiscalYearID,
ProviderID,
OBForecastDetailID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
Volume,
VolumeYTD,
VolumePriorYear,
VolumePriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
0 as IsDeleted,
isnull(IsSystemGenerated,0) as IsSystemGenerated
FROM fw.ProviderSampledStagingWithCalcs
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.ProviderSampledStagingWithCalcs (DepartmentID,FiscalMonthID,FiscalYearID,ProviderID,OBForecastDetailID,TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
BEGIN TRANSACTION Sampling
BEGIN TRY
MERGE fw.FactProviderSampledMonthly_Pivoted With (TABLOCKX) AS target
USING fw.ProviderSampledStagingWithCalcs AS source
ON source.DepartmentID = target.DepartmentID
AND source.ProviderID = target.ProviderID
AND source.FiscalYearID = target.FiscalYearID
AND source.FiscalMonthID = target.FiscalMonthID
AND source.TimeClassID = target.TimeClassID
AND source.OBForecastDetailID = target.OBForecastDetailID
WHEN MATCHED AND NOT
(target.Dollars = source.Dollars
and target.DollarsYTD = source.DollarsYTD
and target.DollarsPriorYear = source.DollarsPriorYear
and target.DollarsPriorYTD = source.DollarsPriorYTD
and target.Hours = source.Hours
and target.HoursYTD = source.HoursYTD
and target.HoursPriorYear = source.HoursPriorYear
and target.HoursPriorYTD = source.HoursPriorYTD
and target.Volume = source.Volume
and target.VolumeYTD = source.VolumeYTD
and target.VolumePriorYear = source.VolumePriorYear
and target.VolumePriorYTD = source.VolumePriorYTD
and target.FTEs = source.FTEs
and target.FTEsYTD = source.FTEsYTD
and target.FTEsPriorYear = source.FTEsPriorYear
and target.FTEsPriorYTD = source.FTEsPriorYTD)
THEN
UPDATE
SET target.Dollars = source.Dollars,
target.DollarsYTD = source.DollarsYTD,
target.DollarsPriorYear = source.DollarsPriorYear,
target.DollarsPriorYTD = source.DollarsPriorYTD,
target.Hours = source.Hours,
target.HoursYTD = source.HoursYTD,
target.HoursPriorYear = source.HoursPriorYear,
target.HoursPriorYTD = source.HoursPriorYTD,
target.Volume = source.Volume,
target.VolumeYTD = source.VolumeYTD,
target.VolumePriorYear = source.VolumePriorYear,
target.VolumePriorYTD = source.VolumePriorYTD,
target.FTEs = source.FTEs,
target.FTEsYTD = source.FTEsYTD,
target.FTEsPriorYear = source.FTEsPriorYear,
target.FTEsPriorYTD = source.FTEsPriorYTD
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID,
ProviderID,
FiscalMonthID,
FiscalYearID,
OBForecastDetailID,
TimeClassID,
Dollars,
DollarsYTD,
DollarsPriorYear,
DollarsPriorYTD,
Hours,
HoursYTD,
HoursPriorYear,
HoursPriorYTD,
Volume,
VolumeYTD,
VolumePriorYear,
VolumePriorYTD,
FTEs,
FTEsYTD,
FTEsPriorYear,
FTEsPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.ProviderID,
source.FiscalMonthID,
source.FiscalYearID,
source.OBForecastDetailID,
source.TimeClassID,
source.Dollars,
source.DollarsYTD,
source.DollarsPriorYear,
source.DollarsPriorYTD,
source.Hours,
source.HoursYTD,
source.HoursPriorYear,
source.HoursPriorYTD,
source.Volume,
source.VolumeYTD,
source.VolumePriorYear,
source.VolumePriorYTD,
source.FTEs,
source.FTEsYTD,
source.FTEsPriorYear,
source.FTEsPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
AND Target.FiscalYearID = @fiscalYearID
THEN
DELETE;
COMMIT TRANSACTION Sampling
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION Sampling;
THROW
END CATCH
END
IF OBJECT_ID('tempdb..#ProviderSampledStaging') IS NOT NULL DROP TABLE #ProviderSampledStaging
IF OBJECT_ID('fw.ProviderSampledStagingWithCalcs') IS NOT NULL DROP TABLE fw.ProviderSampledStagingWithCalcs
GO
---------------------------------------------
-- fw.procRefreshEncounterBasedStatistics
CREATE PROC fw.procRefreshEncounterBasedStatistics
@departmentIds nvarchar(MAX) = NULL
AS
BEGIN
SET NOCOUNT ON
DROP TABLE IF EXISTS #departments
SELECT val AS DepartmentId
INTO #departments
FROM ConvertCSValuesToTable(@departmentIds, ',')
DROP TABLE IF EXISTS #detailsToMerge
CREATE TABLE #detailsToMerge
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToMerge(RowId)
IF (@departmentIds IS NULL)
BEGIN
INSERT #detailsToMerge (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, SUM(ebs.Value)
FROM fw.FactEncounterBasedStatistics ebs
INNER JOIN fw.DimAccount a
ON a.AccountID = ebs.AccountID
INNER JOIN fw.DimDepartment dep
ON dep.DepartmentID = ebs.DepartmentID
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
END
ELSE
BEGIN
INSERT #detailsToMerge (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, SUM(ebs.Value)
FROM fw.FactEncounterBasedStatistics ebs
INNER JOIN fw.DimAccount a
ON a.AccountID = ebs.AccountID
INNER JOIN fw.DimDepartment dep
ON dep.DepartmentID = ebs.DepartmentID
INNER JOIN #departments d
ON ebs.DepartmentID = d.DepartmentId
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
END
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToMerge
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToMerge
WHERE RowId >= @startRowId
ORDER BY RowID) AS d
UPDATE fw.FactChargeBasedStatistics
SET Value = ebs.Value
FROM #detailsToMerge ebs
INNER JOIN fw.FactChargeBasedStatistics cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.DateID = cbs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID, ebs.Value
FROM #detailsToMerge ebs
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
AND NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatistics cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.DateID = cbs.DateID
)
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToMerge d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #departments
DROP TABLE IF EXISTS #detailsToMerge
END
GO
---------------------------------------------
-- fw.procRefreshEncounterBasedStatisticsMonthly
CREATE PROC fw.procRefreshEncounterBasedStatisticsMonthly
@fiscalYearId smallint = 0
AS
BEGIN
SET NOCOUNT ON
DROP TABLE IF EXISTS #detailsToMerge
CREATE TABLE #detailsToMerge
(
RowID bigint identity(1,1),
FiscalYearID smallint,
FiscalMonthID tinyint,
DepartmentID int,
AccountID int,
Value decimal(19, 4)
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToMerge(RowId)
INSERT #detailsToMerge (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, SUM(ebs.Value)
FROM fw.FactEncounterBasedStatisticsMonthly ebs
INNER JOIN fw.DimAccount a
ON a.AccountID = ebs.AccountID
INNER JOIN fw.DimDepartment dep
ON dep.DepartmentID = ebs.DepartmentID
WHERE ebs.FiscalYearID = @fiscalYearId OR @fiscalYearId = 0
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToMerge
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToMerge
WHERE RowId >= @startRowId
ORDER BY RowID) AS d
UPDATE fw.FactChargeBasedStatisticsMonthly
SET Value = ebs.Value
FROM #detailsToMerge ebs
INNER JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.FiscalYearID, ebs.FiscalMonthID, ebs.Value
FROM #detailsToMerge ebs
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
AND NOT EXISTS
(
SELECT cbs.RowID
FROM fw.FactChargeBasedStatisticsMonthly cbs
WHERE ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
)
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToMerge d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToMerge
END
GO
---------------------------------------------
-- fw.procRestoreChargeBasedStatistics
CREATE PROC fw.procRestoreChargeBasedStatistics
@statisticID int
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #detailsToRestore
(
RowID bigint identity(1,1),
DateID int,
DepartmentID int,
AccountID int
)
CREATE CLUSTERED INDEX CNU_RowId ON #detailsToRestore(RowId)
INSERT #detailsToRestore (DepartmentID, AccountID, DateID)
SELECT ebs.DepartmentID, ebs.AccountID, ebs.DateID
FROM fw.FactEncounterBasedStatistics ebs
WHERE ebs.StatisticID = @statisticID
GROUP BY ebs.DepartmentID, ebs.AccountID, ebs.DateID
DECLARE
@startRowId bigint,
@maxRowId bigint,
@endRowId bigint
SELECT @startRowId = MIN(RowId), @maxRowId = MAX(RowId)
FROM #detailsToRestore
WHILE (@startRowId <= @maxRowId)
BEGIN
SELECT @endRowId = MAX(d.RowId)
FROM (SELECT TOP 1000000 RowId
FROM #detailsToRestore
WHERE RowId >= @startRowId
ORDER BY RowID) as d
DELETE cbs
FROM fw.FactChargeBasedStatistics cbs
JOIN #detailsToRestore ebs
ON cbs.DepartmentID = ebs.DepartmentID
AND cbs.AccountID = ebs.AccountID
AND cbs.DateID = ebs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
INSERT fw.FactChargeBasedStatistics (DepartmentID, AccountID, DateID, Value)
SELECT sgs.DepartmentID, sgs.AccountID, sgs.DateID, AVG(sgs.Value)
FROM fw.FactSystemGeneratedStatistics sgs
JOIN #detailsToRestore ebs
ON sgs.DepartmentID = ebs.DepartmentID
AND sgs.AccountID = ebs.AccountID
AND sgs.DateID = ebs.DateID
WHERE ebs.RowId >= @startRowId
AND ebs.RowId <= @endRowId
GROUP BY sgs.DepartmentID, sgs.AccountID, sgs.DateID
SELECT @startRowId = MIN(d.RowId)
FROM #detailsToRestore d
WHERE RowId > @endRowId
END
DROP TABLE IF EXISTS #detailsToRestore
END
GO
---------------------------------------------
-- fw.procRestoreChargeBasedStatisticsMonthly
CREATE PROC fw.procRestoreChargeBasedStatisticsMonthly
@statisticID int
AS
BEGIN
SET NOCOUNT ON
DELETE cbs
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN fw.FactChargeBasedStatisticsMonthly cbs
ON ebs.DepartmentID = cbs.DepartmentID
AND ebs.AccountID = cbs.AccountID
AND ebs.FiscalYearID = cbs.FiscalYearID
AND ebs.FiscalMonthID = cbs.FiscalMonthID
WHERE ebs.StatisticID = @statisticID
INSERT fw.FactChargeBasedStatisticsMonthly (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value)
SELECT sgs.DepartmentID, sgs.AccountID, sgs.FiscalYearID, sgs.FiscalMonthID, AVG(sgs.Value)
FROM fw.FactEncounterBasedStatisticsMonthly ebs
JOIN fw.FactSystemGeneratedStatisticsMonthly sgs
ON ebs.DepartmentID = sgs.DepartmentID
AND ebs.AccountID = sgs.AccountID
AND ebs.FiscalYearID = sgs.FiscalYearID
AND ebs.FiscalMonthID = sgs.FiscalMonthID
WHERE ebs.StatisticID = @statisticID
GROUP BY sgs.DepartmentID, sgs.AccountID, sgs.FiscalYearID, sgs.FiscalMonthID
END
GO
---------------------------------------------
-- fw.procSampleChargeBasedStatistics
/************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2016-04-12 GF B-11831 Add fiscalyear to mapping join
** 2 2017-01-31 AK B-13926 Added department filter
** 3 2018-05-04 IPetriv B-17037 PR - Set Global Weights for Charge Codes - PR Stats
** 4 2019-05-08 OV B-22974 Performance improvements for fw.procSampleChargeBasedStatistics
** 5 2024-01-08 OK JAZZ-63102 Add EBS statistic support
** 6 2024-05-17 OK JAZZ-71350 Always fill out fw.SystemGeneratedStatistics
*************************************************************/
CREATE PROCEDURE [fw].[procSampleChargeBasedStatistics] @departmentIDs NVARCHAR(max) = NULL
AS
BEGIN
IF OBJECT_ID('tempdb..#SampleChargeBasedStatisticsDepts') IS NOT NULL
DROP TABLE #SampleChargeBasedStatisticsDepts
SET NOCOUNT ON
CREATE TABLE #SampleChargeBasedStatisticsDepts (val INT PRIMARY KEY)
INSERT INTO #SampleChargeBasedStatisticsDepts
SELECT val
FROM ConvertCSValuesToTable(@departmentIDs, ',')
CREATE TABLE #DepartmentChargeCodeStatisticMapping (
[FiscalYearID] SMALLINT
,[DepartmentID] INT
,[ChargeCodeID] INT
,[PatientTypeRollupID] INT
,[AccountID] INT
,[Weight] DECIMAL(19, 8)
,[IsReviewed] BIT
,[PriorityOrder] BIGINT
)
CREATE CLUSTERED INDEX BASE ON #DepartmentChargeCodeStatisticMapping (
DepartmentID
,ChargeCodeID
,FiscalYearID
,PatientTypeRollupID
)
INSERT INTO #DepartmentChargeCodeStatisticMapping
SELECT [FiscalYearID]
,[DepartmentID]
,[ChargeCodeID]
,[PatientTypeRollupID]
,[AccountID]
,[Weight]
,[IsReviewed]
,[PriorityOrder]
FROM fw.viewDepartmentChargeCodeStatisticMapping
IF (@departmentIDs IS NULL)
BEGIN
TRUNCATE TABLE fw.FactChargeBasedStatistics
INSERT INTO fw.FactChargeBasedStatistics (
AccountID
,DepartmentID
,DateID
,Value
)
SELECT map.AccountID
,bl.DepartmentID
,bl.ServiceDateID
,SUM(bl.UnitsOfService * map.Weight) AS Value
FROM [dss].[FactPatientBillingLineItemDetail] bl
INNER JOIN clientdss.FactPatientEncounterSummary es ON bl.EncounterID = es.EncounterID
INNER JOIN fw.DimPatientType pt ON es.PatientTypeID = pt.PatientTypeID
INNER JOIN #DepartmentChargeCodeStatisticMapping map ON bl.DepartmentID = map.DepartmentID
AND bl.ChargeCodeID = map.ChargeCodeID
AND pt.PatientTypeRollupID = map.PatientTypeRollupID
AND map.FiscalYearID = bl.FiscalYearID
WHERE map.AccountID <> 0
AND map.Weight <> 0
GROUP BY map.AccountID
,bl.DepartmentID
,bl.ServiceDateID
END
ELSE
BEGIN
WHILE EXISTS (
SELECT NULL
FROM fw.FactChargeBasedStatistics(NOLOCK)
WHERE DepartmentID IN (
SELECT val
FROM #SampleChargeBasedStatisticsDepts
)
)
BEGIN
DELETE TOP (10000)
FROM fw.FactChargeBasedStatistics
WHERE DepartmentID IN (
SELECT val
FROM #SampleChargeBasedStatisticsDepts
)
END
INSERT INTO fw.FactChargeBasedStatistics (
AccountID
,DepartmentID
,DateID
,Value
)
SELECT map.AccountID
,bl.DepartmentID
,bl.ServiceDateID
,SUM(bl.UnitsOfService * map.Weight) AS Value
FROM [dss].[FactPatientBillingLineItemDetail] bl
INNER JOIN clientdss.FactPatientEncounterSummary es ON bl.EncounterID = es.EncounterID
INNER JOIN fw.DimPatientType pt ON es.PatientTypeID = pt.PatientTypeID
INNER JOIN #DepartmentChargeCodeStatisticMapping map ON bl.DepartmentID = map.DepartmentID
AND bl.ChargeCodeID = map.ChargeCodeID
AND pt.PatientTypeRollupID = map.PatientTypeRollupID
AND map.FiscalYearID = bl.FiscalYearID
WHERE map.AccountID <> 0
AND map.Weight <> 0
AND map.DepartmentID IN (
SELECT val
FROM #SampleChargeBasedStatisticsDepts
)
GROUP BY map.AccountID
,bl.DepartmentID
,bl.ServiceDateID
END
DROP TABLE #DepartmentChargeCodeStatisticMapping
DROP TABLE #SampleChargeBasedStatisticsDepts
EXEC fw.procCopySystemGeneratedStatistics @departmentIDs
IF EXISTS (SELECT 1 FROM dss.SystemSetting WHERE Name = 'Enable Persistent Encounter-based Statistics' AND Value = 1)
BEGIN
EXEC fw.procRefreshEncounterBasedStatistics @departmentIDs
END
END
GO
---------------------------------------------
-- fw.procSampleChargeBasedStatisticsMonthly
/************************************************************
** Author: unknown
** Create Date: unknown
** Description: Translates DS charge units into account-based statistics for use throughout StrataJazz system
** Last Modified: 2015-12-17
** GM Release: 2016.2
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-05-04 IPetriv B-19365 PR - Set Global Weights for Charge Codes - MR Stats
** 2 2018-07-09 IPetriv esc-09659 relace direct join to view to temptable
** 3 2021-01-19 BS JAZZ-10854 MR - Charge Based Statistics Flag
** 4 2024-01-08 OK JAZZ-63102 Add EBS statistic support
** 5 2024-05-17 OK JAZZ-71350 Always fill out fw.SystemGeneratedStatisticsMonthly
*************************************************************/
CREATE proc [fw].[procSampleChargeBasedStatisticsMonthly]
@fiscalYearID smallint = 0
AS
BEGIN
IF (@fiscalYearID = 0)
BEGIN
TRUNCATE TABLE fw.FactChargeBasedStatisticsMonthly
END
ELSE
BEGIN
WHILE EXISTS(SELECT NULL FROM fw.FactChargeBasedStatisticsMonthly (nolock) WHERE FiscalYearID = @fiscalYearID)
DELETE top (1000000) fw.FactChargeBasedStatisticsMonthly WHERE FiscalYearID = @fiscalYearID
END
IF (CAST((SELECT Value FROM mr.SystemSetting WHERE Name = 'Monthly Charged Based Statistics Enabled') AS bit) = 1)
BEGIN
exec [dbo].[procSysDropTempTable] '#Map'
SELECT *
INTO #Map
FROM fw.viewDepartmentChargeCodeStatisticMapping map
WHERE map.AccountID <> 0
AND map.Weight <> 0
AND (
FiscalYearID = @fiscalYearID
OR @fiscalYearID = 0
)
IF (CAST((SELECT Value FROM fw.SystemSetting WHERE Name = 'Charge Statistics Use Post Date') AS bit) = 1)
BEGIN
--use post date
INSERT INTO fw.FactChargeBasedStatisticsMonthly (AccountID, DepartmentID, FiscalYearID, FiscalMonthID, Value)
SELECT
map.AccountID,
bl.DepartmentID,
d.FiscalYear,
d.CalendarMonth,
SUM(bl.UnitsOfService * map.Weight) AS Value
FROM
dss.[FactPatientBillingLineItemDetail] bl
INNER JOIN fw.DimDate d WITH (READUNCOMMITTED) ON d.DateID = bl.PostDateID
INNER JOIN clientdss.FactPatientEncounterSummary es WITH (READUNCOMMITTED) ON bl.EncounterID = es.EncounterID
INNER JOIN fw.DimPatientType pt WITH (READUNCOMMITTED) ON es.PatientTypeID = pt.PatientTypeID
INNER JOIN #Map map WITH (READUNCOMMITTED) ON bl.DepartmentID = map.DepartmentID AND bl.ChargeCodeID = map.ChargeCodeID AND pt.PatientTypeRollupID = map.PatientTypeRollupID AND map.FiscalYearID = d.FiscalYear
GROUP BY
map.AccountID,
bl.DepartmentID,
d.FiscalYear,
d.CalendarMonth
END
ELSE
BEGIN
--use service date
INSERT INTO fw.FactChargeBasedStatisticsMonthly (AccountID, DepartmentID, FiscalYearID, FiscalMonthID, Value)
SELECT
map.AccountID,
bl.DepartmentID,
d.FiscalYear,
d.CalendarMonth,
SUM(bl.UnitsOfService * map.Weight) AS Value
FROM
dss.[FactPatientBillingLineItemDetail] bl
INNER JOIN fw.DimDate d WITH (READUNCOMMITTED) ON d.DateID = bl.ServiceDateID
INNER JOIN clientdss.FactPatientEncounterSummary es WITH (READUNCOMMITTED) ON bl.EncounterID = es.EncounterID
INNER JOIN fw.DimPatientType pt WITH (READUNCOMMITTED) ON es.PatientTypeID = pt.PatientTypeID
INNER JOIN #Map map WITH (READUNCOMMITTED) ON bl.DepartmentID = map.DepartmentID AND bl.ChargeCodeID = map.ChargeCodeID AND pt.PatientTypeRollupID = map.PatientTypeRollupID AND map.FiscalYearID = d.FiscalYear
GROUP BY
map.AccountID,
bl.DepartmentID,
d.FiscalYear,
d.CalendarMonth
END
exec [dbo].[procSysDropTempTable] '#Map'
END
EXEC fw.procCopySystemGeneratedStatisticsMonthly @fiscalYearID
IF EXISTS (SELECT 1 FROM dss.SystemSetting WHERE Name = 'Enable Persistent Encounter-based Statistics' AND Value = 1)
BEGIN
EXEC fw.procRefreshEncounterBasedStatisticsMonthly @fiscalYearID
END
END
GO
---------------------------------------------
-- fw.procScoreFillinSetYears
--/****** Object: StoredProcedure [dbo].[procCustomEMFSetYearFillins] Script Date: 11/09/2009 17:17:57 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
CREATE proc [fw].[procScoreFillinSetYears]
@planguid uniqueidentifier
,@PHSectionGUID uniqueidentifier
,@FIDimensionGUID uniqueidentifier
,@newFirstValue int
,@newNumMembers int
,@datatableGUIDList varchar(max)
as
--set @datatableGUIDList = '47413A00-1994-4606-8948-2BDFEDAC1FB9,63A2935D-EDB8-4DAF-863F-677831C6AC4E'
--set @planguid = 'DC0BC93A-F1D3-4BD1-B684-29DA5CBB8EEB'
--set @FIDimensionGUID = 'B383B29F-087E-4450-A216-3A3F03BB08D3'
--set @PHSectionGUID = '7696E505-7372-4D53-B6D5-5C8F95319C44'
--set @newFirstValue = 2009
--set @newNumMembers= 5
--record current first value for this section
declare @oldFirstValue int
declare @oldNumMembers int
select
@oldFirstValue = MIN(fy.fiscalyearid),
@oldNumMembers= COUNT(distinct fy.fiscalyearid)
from
ScoreFillin fi
inner join fw.DimFiscalYear fy on fi.FillinMemberGUID = fy.MemberGUID
where
fi.PlaceholderSectionMemberGUID = @PHSectionGUID
and fi.ModelGUID = @planguid
if @oldFirstValue = @newFirstValue and @newNumMembers= @oldNumMembers begin
print 'Already set correctly.'
return
end
--clear fillins for this section
delete from ScoreFillin
where
PlaceholderSectionMemberGUID = @PHSectionGUID
and ModelGUID = @planguid
--set fillins for this section
insert into ScoreFillin (modelguid, PlaceholderSectionMemberGUID, PlaceholderIndex, FillinMemberGUID, FillinMemberName)
select
@planguid, @PHSectionGUID, ROW_NUMBER() over (order by fiscalyearid) - 1, MemberGUID, FiscalYearID
from
fw.DimFiscalYear
where
FiscalYearID between @newFirstValue and @newFirstValue + @newNumMembers- 1
order by
FiscalYearID
declare @offset int
set @offset = @newfirstvalue - @oldFirstValue
declare @planDimensionGUID uniqueidentifier
select @planDimensionGUID = dimensionguid from PlanType where PlanTypeGUID = (select PlanTypeGUID from XPlan where PlanGUID = @planguid)
declare @planDimensionSchema nvarchar(max)
declare @planDimensionObject nvarchar(max)
declare @planDimensionKeyColumnName nvarchar(max)
select
@planDimensionSchema = sd.SQLSchemaName
,@planDimensionObject = sd.SQLObjectName
,@planDimensionKeyColumnName = dk.SQLColumnName --this is a touch hacky as it assumes default key is whats in the data tables
from
ScoreDimension sd
inner join ScoreAttribute dk on sd.DefaultKeyGUID = dk.AttributeGUID
where
sd.DimensionGUID = @planDimensionGUID
declare @FIDimensionKeyColumnName nvarchar(max)
select
@FIDimensionKeyColumnName = dk.SQLColumnName --this is a touch hacky as it assumes default key is whats in the data tables
from
ScoreDimension sd
inner join ScoreAttribute dk on sd.DefaultKeyGUID = dk.AttributeGUID
where
sd.DimensionGUID = @FIDimensionGUID
declare @sql nvarchar(max)
set @sql = '
declare @offset int
set @offset = ' + cast(@offset as varchar(max)) + '
declare @planguid uniqueidentifier
set @planguid = ''' + cast(@planguid as varchar(36)) + '''
--update data across all composites that use the specified placeholder dimension, and the specified plan dimension
update
[{schema}].[{object}]
set
[' + @FIDimensionKeyColumnName + '] = [' + @FIDimensionKeyColumnName + '] + @offset
where
[' + @planDimensionKeyColumnName + '] = (select [' + @planDimensionKeyColumnName + '] from [' + @planDimensionSchema + '].[' + @planDimensionObject + '] where MemberGUID = @planguid)
and [' + @FIDimensionKeyColumnName + '] <> 0
and isdeleted = 0
--delete data where value is not in correct range (and is not unspecified year)
update
[{schema}].[{object}]
set
isdeleted = 1
where
[' + @planDimensionKeyColumnName + '] = (select [' + @planDimensionKeyColumnName + '] from [' + @planDimensionSchema + '].[' + @planDimensionObject + '] where MemberGUID = @planguid)
and [' + @FIDimensionKeyColumnName + '] <> 0
and not [' + @FIDimensionKeyColumnName + '] between ' + cast(@newFirstValue as varchar(36)) + ' and ' + cast(@newFirstValue + @newNumMembers - 1 as varchar(max)) + '
'
declare @where varchar(max)
set @where = 'where datatableguid in (select guid from dbo.CSVGuidsToTable(''' + @datatableguidlist + '''))'
exec [procScoreRunForManyStructures] @sql, @where,1,0
--set @FirstMemberGUID = dbo.GetModelFirstFillInSection(@planguid, @phsectionguid)
--if @FirstMemberGUID = '00000000-0000-0000-0000-000000000000' begin
-- exec procEMFFillInAddToEndSection @phsectionguid, @targetfirstmemberguid, @planguid
-- set @firstmemberguid = @targetfirstmemberguid
--end
--DECLARE @OFFSET Int
--SELECT @OFFSET = tfm.DisplayOrder - fm.DisplayOrder
--FROM
-- SecureListMember fm
-- inner join SecureListMember tfm on fm.ListMemberGUID = @FirstMemberGUID and tfm.ListMemberGUID = @TargetFirstMemberGUID
--if @OFFSET is null return
--DECLARE @ONEGUID UniqueIdentifier
--SET @ONEGUID = '11111111-1111-1111-1111-111111111111'
--declare @PHDimGUID uniqueidentifier
--SELECT @PHDimGUID = listguid from SecureListMember where ListMemberGUID = @PHSectionGUID
--if @PHDimGUID is null return
--declare @fidimguid uniqueidentifier
--select @fidimguid = fillindimensionguid from SecureList where ListGUID = @PHDimGUID
--if @fidimguid is null return
--declare @higuid uniqueidentifier
--declare @cnt int
--exec procLogObjectHistory @PlanGUID, 'Changing base fill-in', 0, @higuid output
----FIX FILLINS
--UPDATE EMFFillIn SET FilledInMemberGUID = dbo.GetSecureListOffsetMember(FilledInMemberGUID,@offset)
--WHERE
-- ModelGUID = @PlanGUID
-- AND PlaceholderMemberGUID IN (SELECT ListMemberGUID FROM SecureListMember WHERE ParentListMemberGUID = @PHSectionGUID)
----DELETE FILLINS PUSHED OFF THE END of possible members
--DELETE FROM EMFFillIn WHERE
-- MODELGUID = @PLANGUID
-- and FilledInMemberGUID = @ONEGUID
----DELETE FILLINS PUSHED OFF THE END of # of members
--DELETE FROM EMFFillIn WHERE ModelGUID = @PlanGUID AND FilledInMemberGUID IN (SELECT GUID FROM dbo.getFillinMembersPastMaxIndex(@PLANGUID, @PHDimGUID, @NumMembers))
----add FILLINS to equal # of members
--exec procEMFFillInAdd @planguid, @PHDimGUID, @NumMembers
--declare @sql varchar(max)
--declare @mdTableName varchar(max)
--declare @phDimColumnName varchar(max)
--set @phDimColumnName = 'G' + REPLACE(cast(@phdimguid as varchar(36)),'-','_')
--set @sql = '
--declare @msg varchar(max)
--declare @cnt int
--declare @planguid uniqueidentifier
--set @planguid = ''' + cast(@planguid as varchar(36))+ '''
--declare @fidimguid uniqueidentifier
--set @fidimguid = ''' + cast(@fidimguid as varchar(36))+ '''
--declare @PHSectionGUID uniqueidentifier
--set @PHSectionGUID = ''' + cast(@PHSectionGUID as varchar(36))+ '''
--declare @oneguid uniqueidentifier
--set @oneguid = ''11111111-1111-1111-1111-111111111111''
--declare @higuid uniqueidentifier
--set @higuid = ''' + cast(@higuid as varchar(36)) + '''
--UPDATE zzemfmodeldata_{mdcguidfriendly}
--SET
-- zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + ' = dbo.GetSecureListOffsetMember(zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + ',' + cast(@offset as varchar(4)) + ')
-- ,HISTORYITEMGUID = @higuid
--WHERE
-- MODELGUID = @planguid
-- --ONLY Update data who was previously assigned to a member that was filling in the section we are updating, altho this could cause a duplicate issue
-- AND zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + '
-- IN ( SELECT FI.FilledInMemberGUID FROM EMFFillIn FI WHERE FI.PlaceholderMemberGUID
-- IN (SELECT ListMemberGUID FROM SecureListMember WHERE ParentListMemberGUID = @PHSectionGUID))
--DELETE FROM zzemfmodeldata_{mdcguidfriendly} WHERE VALUE = 0 AND MODELGUID = @PLANGUID and zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + ' = @ONEGUID
--DELETE FROM zzemfmodeldata_{mdcguidfriendly} WHERE MODELGUID = @PLANGUID and (zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + ' = @ONEGUID
-- OR (
-- not zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + ' in (select filledinmemberguid from emffillin where modelguid = @planguid) --orphan cause not filled in
-- and
-- not zzemfmodeldata_{mdcguidfriendly}.' + @phDimColumnName + ' = ''00000000-0000-0000-0000-000000000000'' --not orphaned because emptyguid is ok
-- )
-- )
--set @cnt = @@rowcount
--if @cnt > 0 begin
-- set @msg = ''Cleared orphaned nonzero cells from {mdcname} while changing Year configuration''
-- exec procLogObjectHistory @PlanGUID, @msg, @cnt, @higuid
--end
--'
--declare @mtguid uniqueidentifier
--select @mtguid = modeltemplateguid from XPlan where PlanGUID = @PLANGUID
----FOR EACH MD TABLE USED BY THIS PLAN
--declare @where varchar(max)
--set @where = 'where modeldataconfigguid in (select modeldataconfigguid from viewEMFModelTemplateMDCs where modeltemplateguid = ''' + cast(@mtguid as varchar(36)) + ''')
-- and modeldataconfigguid in (select modeldataconfigguid from emfmodeldataconfigdimensionlink where dimensionguid = ''' + cast(@PHDimGUID as varchar(36)) + ''')
--'
--exec procEMFRunForManyStructures @sql, @where, 1
GO
---------------------------------------------
-- fw.procSetCurrentDataPayPeriodID
CREATE proc [fw].[procSetCurrentDataPayPeriodID]
as
declare @currentPP int;
set @currentPP = (
select
MAX(pr.PayPeriodID)
from
fw.FactPayrollSampledPayPeriod pr
inner join fw.DimPayPeriod pp on pp.PayPeriodID = pr.PayPeriodID
where
pr.TimeClassID=1
and (pr.Dollars <> 0 or pr.Hours <> 0)
and pp.PayCycleID=0
)
if (@currentPP is null) set @currentPP = 0
exec procChangeDBSetting 'Current_Payroll_PayPeriodID', @currentPP
--Update Default Report Parameter--------------------------------------------------------------
exec [pi].[procReportDefaultParameterUpdateToCurrent]
GO
---------------------------------------------
-- fw.procStatisticPrimarySampledAdjustedTargetMonthlyInsert
CREATE PROCEDURE [fw].[procStatisticPrimarySampledAdjustedTargetMonthlyInsert] (@FiscalYearID int = 0)
AS
BEGIN
/*
Proposal
If the client is not using flexing, this will be the target plus the efficiency factor
This should work regardless of the target basis (i.e. rolling avg or budget)
The factor will be applied after the inversion
If the factor type is percentage, the adjusted target will be the target*(1+factor)
i.e. if my target is 100 and my factor is 5%, the adjusted target will be 100*(1+0.05)=105
i.e. if my target is 100 and my factor is -5%, the adjusted target will be 100*(1+-0.05)=95
If the factor type is value, the adjusted value will be target + factor
i.e. if my target is 1000 and my factor is 200, the adjusted target will be will be 1000+200=1200
i.e. if my target is 1000 and my factor is -200, the adjusted target will be 1000-200=800
If there is more than one factor impacting a department and account or job code/pay code group combination, then the factors should layer on top of each other based on history order
If an efficiency factor does not exist for a particular account/job code, then the value in the new time class will be either flex or baseline target if flex is not used
This will happen after Flex is calculated
Include integration tests
*/
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-08-23 BC JAZZ-11498 Change Table Variable to Temporary Tables
************************************************************
*/
DECLARE @IsFlexingEnabled INT = (
SELECT VALUE
FROM [mr].[SystemSetting]
WHERE NAME = 'Is Target Flexed'
)
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
CREATE TABLE #EfficiencyFactorScope (
EfficiencyFactorGUID [uniqueidentifier] NOT NULL
,[DepartmentID] [int] NOT NULL
,[AccountID] [int] NOT NULL
,[FiscalYearID] [smallint] NOT NULL
,[FiscalMonthID] [tinyint] NOT NULL
,Value NUMERIC(25, 6) NOT NULL
,Type TINYINT
,FactorType CHAR(1)
,DateCreated DATETIME
,UNIQUE CLUSTERED (
FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
);
IF EXISTS (SELECT TOP 1 * FROM [mr].[EfficiencyFactor]) BEGIN
WITH EfficiencyFactorScope
AS (
SELECT *
,rn = ROW_NUMBER() OVER (
PARTITION BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID ORDER BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
FROM (
SELECT DISTINCT ef.EfficiencyFactorGUID
,ef.FiscalYearID
,efgd.FiscalMonthID
,efd.DepartmentID
,isnull(efgd.AccountID, da.AccountID) AS AccountID
,CASE
WHEN isnull(efgd.AccountID, - 999) = da.AccountID
THEN 0
ELSE efgd.Value
END AS Value
,ef.Type
,ef.FactorType
,ef.DateCreated
FROM mr.EfficiencyFactor ef
INNER JOIN mr.EfficiencyFactorDepartment efd ON ef.EfficiencyFactorGUID = efd.EfficiencyFactorGUID
INNER JOIN mr.EfficiencyFactorGLDetails efgd ON efgd.EfficiencyFactorGUID = ef.EfficiencyFactorGUID
LEFT JOIN fw.DimAccount da ON efgd.OBFinancialReportingID = da.OBUnitsFinancialReportingID and efgd.AccountID IS NULL
LEFT JOIN mr.EfficiencyFactorGLDetails efgd_exist ON efgd.EfficiencyFactorGUID = efgd_exist.EfficiencyFactorGUID and efgd_exist.AccountID = da.AccountID and efgd_exist.FiscalMonthID = efgd.FiscalMonthID
WHERE (@FiscalYearID = ef.FiscalYearID or @FiscalYearID = 0) and (efgd_exist.AccountID is null or da.AccountID is null) AND ef.Type = 1 AND isnull(efgd.AccountID, da.AccountID) IS NOT NULL
) X
)
INSERT INTO #EfficiencyFactorScope (
EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
)
SELECT EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
FROM EfficiencyFactorScope
WHERE RN = 1
DELETE FROM fw.FactStatisticPrimarySampledMonthly WHERE (@FiscalYearID = FiscalYearID or @FiscalYearID = 0) and TimeClassID = 22
INSERT INTO fw.FactStatisticPrimarySampledMonthly (DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
IsDeleted,
Amount)
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,22 as TimeClassID
,0 as IsDeleted
,SUM(Amount) as Amount
FROM (
SELECT isnull(fact.DepartmentID,ToApply.DepartmentID) as DepartmentID
,isnull(fact.AccountID,toApply.AccountID) as AccountID
,isnull(fact.FiscalYearID,toApply.FiscalYearID) as FiscalYearID
,isnull(fact.FiscalMonthID,toApply.FiscalMonthID) as FiscalMonthID
,Amount = CASE
WHEN FactorType = 'P'
THEN isnull(fact.Amount,0.0) * isnull(Value,0.0) / 100
WHEN FactorType = 'V'
THEN isnull(Value,0.0)
ELSE 0
END
FROM #EfficiencyFactorScope ToApply
INNER JOIN (SELECT distinct DepartmentID,AccountID from fw.FactStatisticPrimarySampledMonthly) GenCand on
GenCand.DepartmentID = ToApply.DepartmentID
AND GenCand.AccountID = ToApply.AccountID
FULL JOIN fw.FactStatisticPrimarySampledMonthly fact ON
fact.DepartmentID = ToApply.DepartmentID
AND fact.AccountID = ToApply.AccountID
AND fact.FiscalYearID = ToApply.FiscalYearID
AND fact.FiscalMonthID = ToApply.FiscalMonthID
WHERE (
(
isnull(fact.TimeClassID,0) = 4
AND @IsFlexingEnabled = 1
)
OR (
isnull(fact.TimeClassID,0) = 20
AND @IsFlexingEnabled = 0
)
)
and (fact.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
UNION ALL
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,Amount
FROM fw.FactStatisticPrimarySampledMonthly fact
WHERE (
(
isnull(fact.TimeClassID,0) = 4
AND @IsFlexingEnabled = 1
)
OR (
isnull(fact.TimeClassID,0) = 20
AND @IsFlexingEnabled = 0
)
)
and (fact.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) X
GROUP BY DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
exec [fw].[procFactMonthlyYTDPriorYearUpdate] @factTableName = 'fw.FactStatisticPrimarySampledMonthly',@keyNameCSV = 'AccountID',@measureNameCSV = 'Amount',@fiscalYearID = 0,@timeClassID = 22,@isDebugOnly = 0
END
END
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
GO
---------------------------------------------
-- fw.procStatisticPrimarySampledInsertMonthly
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2014-09-03 MS B-02863 Removing the parameter from the YTD proc call
** 2 2016-09-22 AK B-11845 procFactStatisticPrimarySampledBaselineTargetUpdate
** 3 2016-12-13 NL B-13759 Adding fiscalYearID param and filtering
** 4 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 5 2017-03-06 GF B-14693 Added baseline target year filter
** 6 2017-04-11 IP B-15086 Sampling Performance Improvements. Using temp tables insead of fw.procStatisticPrimarySampledInsertMonthly
** 7 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 8 2017-07-19 IP TK-45395 added isSystemGenerated to merge statement
** 9 2017-07-26 ipetriv B-16752 Added units Budget Adjustment
** 10 2017-08-29 ip B-16798 Add using of Budget Adjustment.
** 11 2022-03-15 KF JAZZ-27781 Run PR Process Task can fail silently during Payroll Sampling
*************************************************************/
CREATE proc [fw].[procStatisticPrimarySampledInsertMonthly]
@fiscalYearID smallint = 0
as
IF OBJECT_ID('tempdb..#StatisticPrimarySampledStaging') IS NOT NULL DROP TABLE #StatisticPrimarySampledStaging
IF OBJECT_ID('fw.StatisticPrimarySampledStagingWithCalcs') IS NOT NULL DROP TABLE fw.StatisticPrimarySampledStagingWithCalcs
CREATE TABLE #StatisticPrimarySampledStaging (RowID bigint identity(1,1),AccountID int, DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Amount decimal(19,4), isDeleted bit, isSystemGenerated bit)
insert into #StatisticPrimarySampledStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount)
exec fw.PrepareStatistics @FiscalYearID,1
--run calculations
exec fw.procFactMonthlyMergeDuplicates 'fw.FactStatisticPrimarySampledMonthly', 'AccountID', 'Amount', @fiscalYearID, 0, 0
exec fw.procFactStatisticPrimarySampledBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactMonthlyYTDPriorYearUpdateStaging 'fw.FactStatisticPrimarySampledMonthly','#StatisticPrimarySampledStaging', 'AccountID', 'Amount', @fiscalYearID, 0, 0
IF @fiscalYearID = 0
BEGIN
truncate table fw.FactStatisticPrimarySampledMonthly
INSERT INTO fw.FactStatisticPrimarySampledMonthly With (TABLOCKX) (
DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
IsDeleted,
IsSystemGenerated
)
SELECT DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
0 as IsDeleted,
isnull(IsSystemGenerated,0) as IsSystemGenerated
FROM fw.StatisticPrimarySampledStagingWithCalcs
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.StatisticPrimarySampledStagingWithCalcs (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
BEGIN TRANSACTION Sampling
BEGIN TRY
MERGE fw.FactStatisticPrimarySampledMonthly With (TABLOCKX) AS target
USING fw.StatisticPrimarySampledStagingWithCalcs AS source
ON source.DepartmentID = target.DepartmentID
AND source.AccountID = target.AccountID
AND source.FiscalYearID = target.FiscalYearID
AND source.FiscalMonthID = target.FiscalMonthID
AND source.TimeClassID = target.TimeClassID
WHEN MATCHED AND
(target.Amount <> source.Amount
or target.AmountYTD <> source.AmountYTD
or target.AmountPriorYear <> source.AmountPriorYear
or target.AmountPriorYTD <> source.AmountPriorYTD
or target.IsSystemGenerated <> source.IsSystemGenerated
)
THEN
UPDATE
SET target.Amount = source.Amount,
target.AmountYTD = source.AmountYTD,
target.AmountPriorYear = source.AmountPriorYear,
target.AmountPriorYTD = source.AmountPriorYTD,
target.IsSystemGenerated = source.IsSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.AccountID,
source.FiscalYearID,
source.FiscalMonthID,
source.TimeClassID,
source.Amount,
source.AmountYTD,
source.AmountPriorYear,
source.AmountPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
AND Target.FiscalYearID = @fiscalYearID
THEN
DELETE;
COMMIT TRANSACTION Sampling
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION Sampling;
THROW
END CATCH
END
IF OBJECT_ID('tempdb..#StatisticPrimarySampledStaging') IS NOT NULL DROP TABLE #StatisticPrimarySampledStaging
IF OBJECT_ID('fw.StatisticPrimarySampledStagingWithCalcs') IS NOT NULL DROP TABLE fw.StatisticPrimarySampledStagingWithCalcs
GO
---------------------------------------------
-- fw.procStatisticSampledAdjustedTargetMonthlyInsert
CREATE PROCEDURE [fw].[procStatisticSampledAdjustedTargetMonthlyInsert] (@FiscalYearID int = 0)
AS
BEGIN
/*
Proposal
If the client is not using flexing, this will be the target plus the efficiency factor
This should work regardless of the target basis (i.e. rolling avg or budget)
The factor will be applied after the inversion
If the factor type is percentage, the adjusted target will be the target*(1+factor)
i.e. if my target is 100 and my factor is 5%, the adjusted target will be 100*(1+0.05)=105
i.e. if my target is 100 and my factor is -5%, the adjusted target will be 100*(1+-0.05)=95
If the factor type is value, the adjusted value will be target + factor
i.e. if my target is 1000 and my factor is 200, the adjusted target will be will be 1000+200=1200
i.e. if my target is 1000 and my factor is -200, the adjusted target will be 1000-200=800
If there is more than one factor impacting a department and account or job code/pay code group combination, then the factors should layer on top of each other based on history order
If an efficiency factor does not exist for a particular account/job code, then the value in the new time class will be either flex or baseline target if flex is not used
This will happen after Flex is calculated
Include integration tests
*/
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-08-23 BC JAZZ-11498 Change Table Variable to Temporary Tables
************************************************************
*/
DECLARE @IsFlexingEnabled INT = (
SELECT VALUE
FROM [mr].[SystemSetting]
WHERE NAME = 'Is Target Flexed'
)
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
CREATE TABLE #EfficiencyFactorScope (
EfficiencyFactorGUID [uniqueidentifier] NOT NULL
,[DepartmentID] [int] NOT NULL
,[AccountID] [int] NOT NULL
,[FiscalYearID] [smallint] NOT NULL
,[FiscalMonthID] [tinyint] NOT NULL
,Value NUMERIC(25, 6) NOT NULL
,Type TINYINT
,FactorType CHAR(1)
,DateCreated DATETIME
,UNIQUE CLUSTERED (
FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
);
IF EXISTS (SELECT TOP 1 * FROM [mr].[EfficiencyFactor]) BEGIN
WITH EfficiencyFactorScope
AS (
SELECT *
,rn = ROW_NUMBER() OVER (
PARTITION BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID ORDER BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
FROM (
SELECT DISTINCT ef.EfficiencyFactorGUID
,ef.FiscalYearID
,efgd.FiscalMonthID
,efd.DepartmentID
,isnull(efgd.AccountID, da.AccountID) AS AccountID
,CASE
WHEN isnull(efgd.AccountID, - 999) = da.AccountID
THEN 0
ELSE efgd.Value
END AS Value
,ef.Type
,ef.FactorType
,ef.DateCreated
FROM mr.EfficiencyFactor ef
INNER JOIN mr.EfficiencyFactorDepartment efd ON ef.EfficiencyFactorGUID = efd.EfficiencyFactorGUID
INNER JOIN mr.EfficiencyFactorGLDetails efgd ON efgd.EfficiencyFactorGUID = ef.EfficiencyFactorGUID
LEFT JOIN fw.DimAccount da ON efgd.OBFinancialReportingID = da.OBUnitsFinancialReportingID and efgd.AccountID IS NULL
LEFT JOIN mr.EfficiencyFactorGLDetails efgd_exist ON efgd.EfficiencyFactorGUID = efgd_exist.EfficiencyFactorGUID and efgd_exist.AccountID = da.AccountID and efgd_exist.FiscalMonthID = efgd.FiscalMonthID
WHERE (@FiscalYearID = ef.FiscalYearID or @FiscalYearID = 0) and (efgd_exist.AccountID is null or da.AccountID is null) AND ef.Type = 1 AND isnull(efgd.AccountID, da.AccountID) IS NOT NULL
) X
)
INSERT INTO #EfficiencyFactorScope (
EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
)
SELECT EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
FROM EfficiencyFactorScope
WHERE RN = 1
DELETE FROM fw.FactStatisticSampledMonthly WHERE (@FiscalYearID = FiscalYearID or @FiscalYearID = 0) and TimeClassID = 22
INSERT INTO fw.FactStatisticSampledMonthly (DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
IsDeleted,
Amount)
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,22 as TimeClassID
,0 as IsDeleted
,SUM(Amount) as Amount
FROM (
SELECT isnull(fact.DepartmentID,ToApply.DepartmentID) as DepartmentID
,isnull(fact.AccountID,toApply.AccountID) as AccountID
,isnull(fact.FiscalYearID,toApply.FiscalYearID) as FiscalYearID
,isnull(fact.FiscalMonthID,toApply.FiscalMonthID) as FiscalMonthID
,Amount = CASE
WHEN FactorType = 'P'
THEN isnull(fact.Amount,0.0) * isnull(Value,0.0) / 100.00
WHEN FactorType = 'V'
THEN isnull(Value,0)
ELSE 0
END
FROM #EfficiencyFactorScope ToApply
INNER JOIN (SELECT distinct DepartmentID,AccountID from fw.FactStatisticSampledMonthly) GenCand on
GenCand.DepartmentID = ToApply.DepartmentID
AND GenCand.AccountID = ToApply.AccountID
FULL JOIN fw.FactStatisticSampledMonthly fact ON
fact.DepartmentID = ToApply.DepartmentID
AND fact.AccountID = ToApply.AccountID
AND fact.FiscalYearID = ToApply.FiscalYearID
AND fact.FiscalMonthID = ToApply.FiscalMonthID
WHERE (
(
isnull(fact.TimeClassID,0) = 4
AND @IsFlexingEnabled = 1
)
OR (
isnull(fact.TimeClassID,0) = 20
AND @IsFlexingEnabled = 0
)
)
and (fact.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
UNION ALL
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,Amount
FROM fw.FactStatisticSampledMonthly fact
WHERE (
(
isnull(fact.TimeClassID,0) = 4
AND @IsFlexingEnabled = 1
)
OR (
isnull(fact.TimeClassID,0) = 20
AND @IsFlexingEnabled = 0
)
)
and (fact.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) X
GROUP BY DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
exec [fw].[procFactMonthlyYTDPriorYearUpdate] @factTableName = 'fw.FactStatisticSampledMonthly',@keyNameCSV = 'AccountID',@measureNameCSV = 'Amount',@fiscalYearID = 0,@timeClassID = 22,@isDebugOnly = 0
END
END
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
GO
---------------------------------------------
-- fw.procStatisticSampledInsertDaily
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2016-07-11 gforeman B-12396 Handle stats that exist in multiple data sources (dupe handling)
** 2 2016-09-16 gforeman D-04861 Skip calculating actuals in certain cases
** 3 2016-10-12 mholov B-12970 Pull from Baseline Target time class
** 4 2016-12-13 mholov B-13783 Reversed actuals sampling order
** 5 2016-12-17 mholov B-13509 Pull Budgeted amounts from monthly table
** 6 2017-01-13 apukii D-05426 Removed filtering departments by mappings
** 7 2017-01-31 akozlov B-13926 Added department filter
** 8 2017-02-08 gforeman B-14308 Added year filter
** 9 2017-03-06 gforeman B-14693 Cancel sampling if daily disabled
** 10 2017-05-01 gforeman B-15551 Include non-PR driver departments in sampling
** 11 2017-05-02 gforeman B-15551 Remove primary statistics join so that all statistics are sampled
** 12 2017-06-14 ipetriv Added additional filter on values to omit 0 rows
** 13 2017-08-29 ipetriv B-16798 Add using of Budget Adjustment.
** 14 2018-02-22 ipetriv D-06786 add department calculation for TC = 2 if dept is not in PR , Dept is in Budget Allocation
** 15 2018-03-08 ipetriv B-18793 PR - Daily processing post action 2 week run
** 16 2018-03-08 ipetriv D-07329 removed part of code, that delete non PR department from staging table
** 17 2018-06-04 ipetriv TK-58558 added "distinct" selection of dates in case of recalcu;lation for 2 weeks
** 18 2018-10-18 OV D-07753 fix: daily and charged-based queries filtered by @dates (removed @FiscalYearID filter)
** 19 2018-10-23 OV D-07753 fix: PR fails to populate daily charge-based statistics on the first pay period of the fiscal year
** 20 2019-02-20 OV D-08116 fix: PR delete part ton filtered by PayPeriod
** 21 2019-03-12 OV TK-71197 Table variables replaced with temp tables
** 22 2019-04-23 OV B-20579 Allow clients to input daily budget - Statistics
** 23 2019-04-25 OV B-20579 sampled 0 data for Statistic (except actual)
** 24 2019-07-16 OV B-23482 Use Budget Adjustments for Daily and PayPeriod
** 25 2019-08-08 vfay D-08668 Add Joins on DateID in budget reallocation part
** 26 2020-01-28 IH TK-82833 Increase a deletion size from 10K to 100K
** 27 2020-03-10 HV D-09170 fw.procStatisticSampledInsertDaily is filling log file in tempdb caused by the use of temp variables
** 28 2020-03-18 HV TK-84583 PR Statistics Daily sampling: data is sampling incorrectly for first Pay Period days in some cases
D-09470 PR Statistics Daily sampling: budget adjustments are not applied for first Pay Period days if it belongs to 2 months
TK-84785 Statistics Sampling daily: Baseline Target values are calculated incorrectly for combinations with budget adjustments
** 29 2020-11-25 BS JAZZ-6398 PR Process is timing out due to long running proc fw.procStatisticSampledInsertDaily
** 30 2022-11-22 HV JAZZ-44508 Automated Daily PR processing doesn't calculate future target, when system center processing does
** 31 2023-02-03 KF JAZZ-48413 Charge Based Statistics Modals Performance Improvement- Bug Fixing
** 32 2023-02-21 KF JAZZ-50593 MBPR PHPUOS: Accounts with 0 charge based UOS are shown with link
** 33 2024-02-23 HV JAZZ-67657 [RowId] Convert fw.FactStatisticSampledDaily.Rowid to bigint
*************************************************************/
CREATE proc [fw].[procStatisticSampledInsertDaily]
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0,
@isCalcDaily bit = 0,
@isPrMetricConfigurationOn bit = 0
with recompile
as
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
DECLARE @currentDateOverride nvarchar(max) = (SELECT Value FROM [pi].[SystemSetting] WHERE Name = 'Current Date Override')
DECLARE @currentDate date = CASE
WHEN @currentDateOverride = '' THEN CAST(GETDATE() AS DATE)
ELSE CAST (@currentDateOverride AS DATE)
END
DECLARE @yesterday_date date = DATEADD(DAY, - 1, @currentDate)
create table #DailyCalcPeriodsScope (PayPeriodID int primary key,PayCycleID int,PeriodStartCalendarDate date,PeriodEndCalendarDate date)
insert into #DailyCalcPeriodsScope (PayPeriodID,PayCycleID,PeriodStartCalendarDate,PeriodEndCalendarDate)
select PayPeriodID,PayCycleID,PeriodStartCalendarDate,PeriodEndCalendarDate
from fw.DimPayPeriod
where
(@isCalcDaily = 1 and @yesterday_date BETWEEN PeriodStartCalendarDate and PeriodEndCalendarDate)
or
(@isCalcDaily = 0 and (FiscalYearIDSecond = @fiscalYearID or @fiscalYearID = 0))
IF OBJECT_ID('tempdb..#departmentsBudgetAllocations') IS NOT NULL DROP TABLE #departmentsBudgetAllocations
create table #departmentsBudgetAllocations (val int primary key)
IF OBJECT_ID('tempdb..#FDPSD') IS NOT NULL DROP TABLE #FDPSD
CREATE TABLE #FDPSD (DepartmentID int primary key)
insert into #FDPSD
select distinct DriverDepartmentID as DepartmentID
from client.FactDepartmentPrimaryStatisticConfigurationDriverDepartmentCache
insert into #departmentsBudgetAllocations (val)
select
SourceDepartmentID as DepartmentID
from mr.BudgetReallocationAdjustment a
inner join mr.BudgetReallocation r on r.BudgetReallocationGUID=a.BudgetReallocationGUID
inner join FW.DimDepartment d on d.DepartmentID = r.TargetDepartmentID and d.IsPR = 1
where SourceDepartmentID <> 0 and r.Archived = 0
union -- unique
select
TargetDepartmentID as DepartmentID
from mr.BudgetReallocationAdjustment a
inner join mr.BudgetReallocation r on r.BudgetReallocationGUID=a.BudgetReallocationGUID
inner join FW.DimDepartment d on d.DepartmentID = r.SourceDepartmentID and d.IsPR = 1 -- Filtering all departments that move data FROM selected
where TargetDepartmentID <> 0 and r.Archived = 0
--delete existing data
if (@fiscalYearID = 0 and @isCalcDaily = 0) begin
truncate table fw.FactStatisticSampledDaily
end else begin
while exists(select null from fw.FactStatisticSampledDaily fssd (nolock)
inner join #DailyCalcPeriodsScope ps on fssd.PayPeriodID = ps.PayPeriodID) begin
delete top (500000) fssd
from fw.FactStatisticSampledDaily fssd
inner join #DailyCalcPeriodsScope ps on fssd.PayPeriodID = ps.PayPeriodID
end
DECLARE @nextRowID BIGINT
SELECT @nextRowID = ISNULL((SELECT MAX(RowID) FROM fw.FactStatisticSampledDaily), 1)
DBCC CHECKIDENT('fw.FactStatisticSampledDaily','RESEED', @nextRowID);
end
--cancel if not using daily
if (not exists(select 1 from pi.SystemSetting where Name = 'PR Daily Enabled' and Value = '1')) begin return end
--pull new data - daily statistics
IF OBJECT_ID('tempdb..#TEMPSTATISTIC') IS NOT NULL DROP TABLE #TEMPSTATISTIC
create table #TEMPSTATISTIC (DepartmentID int, AccountID int, PayPeriodID int, DateID int, TimeClassID int, Units money)
insert into #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
select
stat.DepartmentID,
stat.AccountID,
PP.PayPeriodID,
stat.DateID,
stat.TimeClassID,
SUM(STAT.Value) as Units
from
[int].[FactSharedImportDailyStatistics] stat
inner join [fw].[DimDate] DATE on stat.DateID=DATE.DateID
inner join [fw].[DimDepartment] D on D.Departmentid = STAT.DepartmentID
inner join [fw].[DimPayPeriod] PP on D.PayCycleID=PP.PayCycleID and DATE.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID and ((date.CalendarDateTime <= @yesterday_date and @isCalcDaily = 1) or @isCalcDaily = 0)
left join #FDPSD FDPSD on FDPSD.DepartmentID = STAT.DepartmentID
where
PP.PayPeriodID != 0
and STAT.Isdeleted = 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null)
and stat.DepartmentID != 0
and stat.TimeClassID = 1
group by
stat.DepartmentID,
stat.AccountID,
PP.PayPeriodID,
stat.DateID,
stat.TimeClassID
--pull new data - charge-based actuals where not already sampled
insert into #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
select
STAT.DepartmentID,
STAT.AccountID,
pp.PayPeriodID,
STAT.DateID,
1 as TimeClassID,
SUM(STAT.Value) AS Units
from
[fw].[FactChargeBasedStatistics] STAT
inner join [fw].[DimDate] DATE on STAT.DateID=DATE.DateID
inner join [fw].[DimDepartment] DEPT on STAT.DepartmentID=DEPT.DepartmentID
inner join [fw].[DimPayPeriod] PP on DEPT.PayCycleID=PP.PayCycleID and DATE.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID and ((date.CalendarDateTime <= @yesterday_date and @isCalcDaily = 1) or @isCalcDaily = 0)
left join #FDPSD FDPSD on FDPSD.DepartmentID = STAT.DepartmentID
left join #TEMPSTATISTIC ex ON ex.DepartmentID = STAT.DepartmentID and ex.AccountID = STAT.AccountID and ex.PayPeriodID = PP.PayPeriodID and ex.DateID = STAT.DateID and ex.TimeClassID = 1
where
PP.PayPeriodID != 0
and STAT.IsDeleted = 0
and (DEPT.IsPR = 1 or FDPSD.DepartmentID is not null)
and STAT.DepartmentID != 0
and ex.DepartmentID IS NULL
group by
STAT.DepartmentID,
STAT.AccountID,
PP.PayPeriodID,
STAT.DateID;
IF OBJECT_ID('tempdb..#StatisticSampledMonthlyStaging') IS NOT NULL DROP TABLE #StatisticSampledMonthlyStaging
CREATE TABLE #StatisticSampledMonthlyStaging (RowID bigint identity(1,1),AccountID int, DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Amount decimal(19,4), isDeleted bit, isSystemGenerated bit)
IF OBJECT_ID('tempdb..#StatisticsDaily') IS NOT NULL DROP TABLE #StatisticsDaily
select
FACT.DepartmentID,
FACT.AccountID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
SUM(FACT.Value) AS Units
into #StatisticsDaily
from
int.FactSharedImportDailyStatistics FACT
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join [fw].[DimDate] DT on DT.DateID = FACT.dateID
inner join [fw].[DimPayPeriod] PP on pp.PayCycleID = d.PayCycleID and dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = FACT.DepartmentID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
DT.FiscalMonth != 0
and DT.FiscalYear != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null or dba.val is not null)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
group by
FACT.DepartmentID,
FACT.AccountID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID
------------------------------------------------------------------------------------------------------------------------------------
insert into #StatisticsDaily
select
FACT.DepartmentID,
FACT.AccountID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID,
SUM(FACT.Value/PCC.PeriodDays) AS Units
from
int.FactStatisticsByPayPeriod FACT
inner join [fw].[DimDepartment] D on D.Departmentid = FACT.DepartmentID
inner join fw.DimPayPeriod pp on pp.PayPeriodID = FACT.PayPeriodID
inner join [fw].[DimDate] DT on dt.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
left join #StatisticsDaily spp on SPP.PayPeriodID = FACT.PayPeriodID and
SPP.AccountID = FACT.AccountID and
SPP.DepartmentID = FACT.DepartmentID and
SPP.TimeClassID = FACT.TimeClassID
inner join fw.DimPayCycle PCC on PCC.PayCycleID = PP.PayCycleID
inner join #DailyCalcPeriodsScope dcp on pp.PayPeriodID = dcp.PayPeriodID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = FACT.DepartmentID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
spp.DepartmentID IS NULL
and DT.FiscalMonth != 0
and FACT.FiscalYearID != 0
and FACT.IsDeleted = 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null or dba.val is not null)
and FACT.TimeClassID = 2
and FACT.DepartmentID != 0
group by
FACT.DepartmentID,
FACT.AccountID,
DT.DateID,
FACT.TimeClassID,
PP.PayPeriodID
--------------------------------------------------------------------------------------------------------------------
insert into #StatisticsDaily
select
STAT.DepartmentID,
STAT.AccountID,
DT.DateID,
STAT.TimeClassID,
DPC.PayPeriodID,
SUM(STAT.Value/ dbo.GetDaysInMonth(DT.CalendarDateTime)) AS Units
from
int.FactStatistic STAT
inner join [fw].[DimDepartment] D on D.Departmentid = STAT.Departmentid
inner join [fw].[DimDate] DT on DT.CalendarMonth = STAT.FiscalMonthID and DT.FiscalYear = STAT.FiscalYearID
inner join #DailyCalcPeriodsScope dpc on dpc.PayCycleID = d.PayCycleID and dt.CalendarDateTime between dpc.PeriodStartCalendarDate and dpc.PeriodEndCalendarDate
left join #StatisticsDaily spp on SPP.PayPeriodID = DPC.PayPeriodID and
SPP.AccountID = STAT.AccountID and
SPP.DepartmentID = STAT.DepartmentID and
SPP.TimeClassID = STAT.TimeClassID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
spp.DepartmentID is null
and
STAT.FiscalMonthID != 0
and STAT.FiscalYearID != 0
and STAT.isDeleted = 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null or dba.val is not null)
and STAT.TimeClassID = 2
and STAT.DepartmentID != 0
group by
STAT.DepartmentID,
STAT.AccountID,
DT.DateID,
STAT.TimeClassID,
DPC.PayPeriodID
insert into #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
select G.DepartmentID, AccountID, G.PayPeriodID, G.DateID, G.TimeClassID, G.Units
from #StatisticsDaily G
---------------------------------------------------------------------------------------------------------------------
declare @iteration int = 1
DECLARE @BudgetReallocationGUID uniqueidentifier,@date datetime,@BudgetReallocationType varchar(50)
PRINT '-------- Vendor Products Report --------';
DECLARE BRA_cursor CURSOR FOR
SELECT DISTINCT BudgetReallocationGUID,date,BudgetReallocationType
FROM fw.BudgetReallocationWithDefinedType BR
INNER JOIN [fw].[DimDate] DD ON DD.CalendarMonth = BR.FiscalMonthID AND DD.FiscalYear = BR.FiscalYearID
INNER JOIN #DailyCalcPeriodsScope DCPS ON DD.CalendarDateTime BETWEEN DCPS.PeriodStartCalendarDate AND DCPS.PeriodEndCalendarDate
WHERE BR.BudgetReallocationType IS NOT NULL
ORDER BY date
OPEN BRA_cursor
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
WHILE @@FETCH_STATUS = 0
BEGIN
IF @BudgetReallocationType = 'ReallocateSingle'
BEGIN -- Insert rows with "correcting" values
UPDATE STT
SET Units = STT.Units + Change/dbo.GetDaysInMonth(dd.CalendarDateTime) ----------------------
FROM #TEMPSTATISTIC STT
INNER JOIN fw.dimDate dd on stt.DateID = dd.DateID
INNER JOIN [mr].[BudgetReallocation] b ON b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and b.FiscalYearID = dd.FiscalYear
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and ba.FiscalMonthID = dd.CalendarMonth
WHERE ba.Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and STT.TimeClassID = 2
and b.Archived = 0
UPDATE STT
SET Units = STT.Units - Change/dbo.GetDaysInMonth(dd.CalendarDateTime) ---------------------------
FROM #TEMPSTATISTIC STT
INNER JOIN fw.dimDate dd on stt.DateID = dd.DateID
INNER JOIN [mr].[BudgetReallocation] b ON b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and b.FiscalYearID = dd.FiscalYear
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and ba.FiscalMonthID = dd.CalendarMonth
WHERE ba.Change <> 0
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and STT.TimeClassID = 2
and b.Archived = 0
INSERT INTO #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
pp.PayPeriodID as PayPeriodID,
dd.DateID as DateID,
2 as TimeClassID,
SUM((Change/dbo.GetDaysInMonth(dd.CalendarDateTime)) * -1) as Units
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDate] dd on dd.FiscalYear = b.FiscalYearID and dd.CalendarMonth = ba.FiscalMonthID
INNER JOIN [fw].[DimDepartment] dep on b.SourceDepartmentID = dep.DepartmentID
INNER JOIN [fw].[DimPayPeriod] pp on pp.PayCycleID = dep.PayCycleID and dd.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
INNER JOIN #DailyCalcPeriodsScope dcp on dcp.PayPeriodID = pp.PayPeriodID
LEFT JOIN #TEMPSTATISTIC stt
on b.SourceDepartmentID = stt.DepartmentID and
b.SourceAccountID = stt.AccountID and
stt.TimeClassID = 2 and
stt.DateID = dd.DateID
WHERE ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.Archived = 0
GROUP BY b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID,
dd.DateID
UNION All
SELECT
b.TargetDepartmentID as DepartmentID,
b.TargetAccountID as AccountID,
pp.PayPeriodID as PayPeriodID,
dd.DateID as DateID,
2 as TimeClassID,
sum(Change/dbo.GetDaysInMonth(dd.CalendarDateTime)) as Units
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDate] dd on dd.FiscalYear = b.FiscalYearID and dd.CalendarMonth = ba.FiscalMonthID
INNER JOIN [fw].[DimDepartment] dep on b.TargetDepartmentID = dep.DepartmentID
INNER JOIN [fw].[DimPayPeriod] pp on pp.PayCycleID = dep.PayCycleID and dd.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
INNER JOIN #DailyCalcPeriodsScope dcp on dcp.PayPeriodID = pp.PayPeriodID
LEFT JOIN #TEMPSTATISTIC stt
ON b.TargetDepartmentID = stt.DepartmentID and
b.TargetAccountID = stt.AccountID and
stt.TimeClassID = 2 and
stt.DateID = dd.DateID
WHERE ba.Change <> 0 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.Archived = 0
group by b.TargetDepartmentID,
b.TargetAccountID,
pp.PayPeriodID,
dd.DateID
------------------
END
IF @BudgetReallocationType = 'ReallocateMulti'
BEGIN
Update stt
set stt.Units = stt_src.Units + stt.Units
FROM #TEMPSTATISTIC STT
inner join fw.DimDate dd on dd.DateID = stt.DateID
INNER JOIN [mr].[BudgetReallocation] b on b.TargetDepartmentID = stt.DepartmentID and b.TargetAccountID = stt.AccountID and b.FiscalYearID = dd.FiscalYear
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and dd.CalendarMonth = ba.FiscalMonthID
INNER JOIN #TEMPSTATISTIC STT_SRC
ON STT_SRC.DepartmentID = b.SourceDepartmentID and
STT_SRC.AccountID = b.SourceAccountID and
stt.TimeClassID = stt_src.TimeClassID and
STT_SRC.DateID = stt.DateID
where
b.BudgetReallocationGUID = @BudgetReallocationGUID and
ba.UnitTypeID = 145 and
ba.Change <> 0 and
stt.TimeClassID = 2 and
b.Archived = 0
INSERT INTO #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
SELECT --'Y',
b.TargetDepartmentID as DepartmentID,
b.TargetAccountID as AccountID,
pp.PayPeriodID as PayPeriodID,
dd.DateID as DateID,
2 as TimeClassID,
SUM(STT_SRC.Units) as Units -----------------
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDate] dd on dd.FiscalYear = b.FiscalYearID and dd.CalendarMonth = ba.FiscalMonthID
INNER JOIN [fw].[DimDepartment] dep on b.TargetDepartmentID = dep.DepartmentID
INNER JOIN [fw].[DimPayPeriod] pp on pp.PayCycleID = dep.PayCycleID and dd.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
INNER JOIN #DailyCalcPeriodsScope dcp on dcp.PayPeriodID = pp.PayPeriodID
INNER JOIN #TEMPSTATISTIC STT_SRC
ON STT_SRC.DepartmentID = b.SourceDepartmentID and
STT_SRC.AccountID = b.SourceAccountID and
STT_SRC.TimeClassID = 2 and
STT_SRC.DateID = dd.DateID
LEFT JOIN #TEMPSTATISTIC STT
ON STT.DepartmentID = b.TargetDepartmentID and
STT.AccountID = b.TargetAccountID and
STT.TimeClassID = 2 and
STT.DateID = dd.DateID
where stt.DepartmentID is null and
ba.Change <> 0 and
ba.UnitTypeID = 145 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
b.Archived = 0
GROUP BY
b.TargetDepartmentID,
b.TargetAccountID,
pp.PayPeriodID,
dd.DateID
UPDATE STT_SRC
SET stt_src.Units = 0
FROM #TEMPSTATISTIC STT_SRC
INNER JOIN fw.DimDate dd on dd.DateID = STT_SRC.DateID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = STT_SRC.DepartmentID and b.SourceAccountID = STT_SRC.AccountID and dd.FiscalYear = b.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and ba.FiscalMonthID = dd.CalendarMonth
LEFT JOIN #TEMPSTATISTIC STT
ON STT.DepartmentID = b.TargetDepartmentID and
STT.AccountID = b.TargetAccountID and
STT.TimeClassID = 2 and
STT.DateID = STT_SRC.DateID
where b.BudgetReallocationGUID = @BudgetReallocationGUID and
ba.UnitTypeID = 145 and
Change <> 0 and
b.Archived = 0
END
-- ELSE
IF @BudgetReallocationType = 'AdjustMontly'
BEGIN
UPDATE STT
SET stt.Units = stt.Units+Change/dbo.GetDaysInMonth(dd.CalendarDateTime)
FROM #TEMPSTATISTIC STT
inner join fw.DimDate dd on dd.DateID = stt.DateID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and dd.FiscalYear = b.FiscalYearID
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and ba.FiscalMonthID = dd.CalendarMonth
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and ba.Change <> 0
and TimeClassID = 2
and b.Archived = 0
INSERT INTO #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
pp.PayPeriodID as PayPeriodID,
dd.DateID as DateID,
2 as TimeClassID,
SUM(Change/dbo.GetDaysInMonth(dd.CalendarDateTime)) as Units
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDate] dd on dd.FiscalYear = b.FiscalYearID and dd.CalendarMonth = ba.FiscalMonthID
INNER JOIN [fw].[DimDepartment] dep on b.SourceDepartmentID = dep.DepartmentID
INNER JOIN [fw].[DimPayPeriod] pp on pp.PayCycleID = dep.PayCycleID and dd.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
INNER JOIN #DailyCalcPeriodsScope dcp on dcp.PayPeriodID = pp.PayPeriodID
LEFT JOIN #TEMPSTATISTIC stt
ON b.SourceDepartmentID = stt.DepartmentID and
b.SourceAccountID = stt.AccountID and
stt.TimeClassID = 2 and
stt.DateID = dd.DateID
where ba.Change <> 0
and stt.DepartmentID is null
and ba.UnitTypeID = 145
and b.BudgetReallocationGUID = @BudgetReallocationGUID
and b.Archived = 0
GROUP BY
b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID,
dd.DateID
END
IF @BudgetReallocationType = 'ManualFile'
BEGIN
UPDATE STT
SET stt.Units = ba.NewSourceValue/dbo.GetDaysInMonth(dd.CalendarDateTime)
FROM #TEMPSTATISTIC STT
inner join fw.Dimdate dd on STT.DateID = dd.DateID
INNER JOIN [mr].[BudgetReallocation] b on b.SourceDepartmentID = stt.DepartmentID and b.SourceAccountID = stt.AccountID and b.FiscalYearID = dd.FiscalYear
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID and ba.FiscalMonthID = dd.CalendarMonth
where
b.BudgetReallocationGUID = @BudgetReallocationGUID
and ba.UnitTypeID = 145
and b.Archived = 0
and STT.TimeClassID = 2
and ba.Change <> 0
INSERT INTO #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
SELECT
b.SourceDepartmentID as DepartmentID,
b.SourceAccountID as AccountID,
pp.PayPeriodID as PayPeriodID,
dd.DateID as DateID,
2 as TimeClassID,
SUM(NewSourceValue/dbo.GetDaysInMonth(dd.CalendarDateTime)) as Value ---------------------------
FROM [mr].[BudgetReallocation] b
INNER JOIN [mr].[BudgetReallocationAdjustment] ba on b.BudgetReallocationGUID=ba.BudgetReallocationGUID
INNER JOIN [fw].[DimDate] dd on dd.FiscalYear = b.FiscalYearID and dd.CalendarMonth = ba.FiscalMonthID
INNER JOIN [fw].[DimDepartment] dep on b.SourceDepartmentID = dep.DepartmentID
INNER JOIN [fw].[DimPayPeriod] pp on pp.PayCycleID = dep.PayCycleID and dd.CalendarDateTime between pp.PeriodStartCalendarDate and pp.PeriodEndCalendarDate
INNER JOIN #DailyCalcPeriodsScope dcp on dcp.PayPeriodID = pp.PayPeriodID
LEFT JOIN #TEMPSTATISTIC stt
ON b.SourceDepartmentID = stt.DepartmentID and
b.SourceAccountID = stt.AccountID and
stt.TimeClassID = 2 and
stt.DateID = dd.DateID
where ba.Change <> 0 and
stt.DepartmentID is null and
ba.UnitTypeID = 145 and
b.BudgetReallocationGUID = @BudgetReallocationGUID and
b.Archived = 0
GROUP BY b.SourceDepartmentID,
b.SourceAccountID,
pp.PayPeriodID,
dd.DateID
END
set @iteration = @iteration +1
FETCH NEXT FROM BRA_cursor
INTO @BudgetReallocationGUID,@date,@BudgetReallocationType
END
CLOSE BRA_cursor;
DEALLOCATE BRA_cursor;
--calculate baseline target
declare @targetType int = (select Value from pi.SystemSetting where Name = 'Target Basis')
if (@targetType = 2) begin
--baseline target is based on budget, pull from monthly data
insert into #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
select DepartmentID, AccountID, PayPeriodID, DateID, 20, Units
from #TEMPSTATISTIC
where TimeClassID = 2
end else if(@targetType = 10) begin
--baseline target is based on rolling period average, pull from pay period data
with groupedBaselineTargetStats as(
select
STAT.DepartmentID,
STAT.AccountID,
STAT.PayPeriodID,
DT.DateID,
STAT.TimeClassID,
SUM(STAT.Units) AS Units
from
fw.FactStatisticSampledPayPeriod STAT
inner join [fw].[DimPayPeriod] PP on PP.PayPeriodID = STAT.PayPeriodID
inner join [fw].[DimDate] DT on DT.CalendarDateTime between PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
inner join [fw].[DimDepartment] D on D.DepartmentID = STAT.DepartmentID
inner join #DailyCalcPeriodsScope DCPS on DCPS.PayPeriodID = PP.PayPeriodID
left join #FDPSD FDPSD ON FDPSD.DepartmentID = STAT.DepartmentID
left join #departmentsBudgetAllocations dba on dba.val = d.DepartmentID
where
STAT.PayPeriodID != 0
and STAT.IsDeleted = 0
and (D.IsPR = 1 or FDPSD.DepartmentID is not null or dba.val is not null)
and stat.TimeClassID = 20
and stat.DepartmentID != 0
group by
STAT.DepartmentID,
STAT.AccountID,
STAT.PayPeriodID,
DT.DateID,
STAT.TimeClassID
)
insert into #TEMPSTATISTIC (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
select DepartmentID, AccountID, G.PayPeriodID, DateID, TimeClassID, Units / PP.PeriodDays
from groupedBaselineTargetStats G
inner join fw.DimPayPeriod PP on PP.PayPeriodID = G.PayPeriodID
end
IF OBJECT_ID('tempdb..#departmentsBudgetAllocations') IS NOT NULL DROP TABLE #departmentsBudgetAllocations
-- Fill Charge Based Statistics Sampled Keys
IF @isPrMetricConfigurationOn = 1
BEGIN
IF @FiscalYearID = 0 AND @yesterday_date IS NULL
BEGIN
TRUNCATE TABLE fw.FactChargeBasedStatisticsDailyKeys
END
ELSE
BEGIN
DELETE F FROM fw.FactChargeBasedStatisticsDailyKeys F
INNER JOIN #DailyCalcPeriodsScope PP ON PP.PayPeriodID = F.PayPeriodID
END
INSERT INTO fw.FactChargeBasedStatisticsDailyKeys (DepartmentID, AccountID, PayPeriodID, DateID)
SELECT DISTINCT CB.DepartmentID, CB.AccountID, PP.PayPeriodID, CB.DateID
FROM fw.FactChargeBasedStatistics CB
INNER JOIN fw.DimDate DT ON DT.DateID = CB.DateID
INNER JOIN fw.DimDepartment DEPT ON DEPT.DepartmentID = CB.DepartmentID
INNER JOIN #DailyCalcPeriodsScope PP ON PP.PayCycleID = DEPT.PayCycleID AND DT.CalendarDateTime BETWEEN PP.PeriodStartCalendarDate and PP.PeriodEndCalendarDate
LEFT JOIN int.FactSharedImportDailyStatistics DS ON DS.DepartmentID = CB.DepartmentID AND DS.AccountID = CB.AccountID AND DS.DateID = CB.DateID AND DS.TimeClassID = 1
LEFT JOIN #FDPSD FDPSD on FDPSD.DepartmentID = CB.DepartmentID
WHERE
CB.IsDeleted = 0
AND CB.DepartmentID != 0
AND PP.PayPeriodID != 0
AND CB.Value != 0
AND DS.RowID IS NULL
AND (DEPT.IsPR = 1 OR FDPSD.DepartmentID IS NOT NULL)
END
IF OBJECT_ID('tempdb..#DailyCalcPeriodsScope') IS NOT NULL DROP TABLE #DailyCalcPeriodsScope
IF OBJECT_ID('tempdb..#TEMPFINAL') IS NOT NULL DROP TABLE #TEMPFINAL
begin
SELECT DepartmentID, AccountID, TimeClassID, SUM(Units) as Units ,DateID, PayPeriodID into #TEMPFINAL
FROM (
SELECT stt.DepartmentID,stt.AccountID,DateID,TimeClassID,Units, stt.PayPeriodID
from #TEMPSTATISTIC stt
UNION ALL
SELECT stat.DepartmentID,stat.AccountID, stat.DateID, stat.TimeClassID, 0 as Units, stat.PayPeriodID
from #StatisticsDaily stat
WHERE stat.Units != 0
) SubSelect
GROUP BY DepartmentID,AccountID,TimeClassID, DateID, PayPeriodID
end
--push to fact table
insert into fw.FactStatisticSampledDaily (DepartmentID, AccountID, PayPeriodID, DateID, TimeClassID, Units)
select
DepartmentID,
AccountID,
PayPeriodID,
DateID,
TimeClassID,
SUM(Units)
from
#TEMPFINAL temp
WHERE TimeClassID IS NOT NULL
group by
DepartmentID,
AccountID,
PayPeriodID,
DateID,
TimeClassID
delete from fw.FactStatisticSampledDaily where TimeClassID = 1 and Units = 0
IF OBJECT_ID('tempdb..#TEMPSTATISTIC') IS NOT NULL DROP TABLE #TEMPSTATISTIC
IF OBJECT_ID('tempdb..#StatisticsDaily') IS NOT NULL DROP TABLE #StatisticsDaily
IF OBJECT_ID('tempdb..#TEMPFINAL') IS NOT NULL DROP TABLE #TEMPFINAL
GO
---------------------------------------------
-- fw.procStatisticSampledInsertMonthly
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2014-09-03 MS B-02863 Removing the parameter from the YTD proc call
** 2 2014-09-24 MS B-02191 Removing the IsStat=1 filter so that Units loaded on GL accounts shared with Dollars can be pulled in
** 3 2014-10-15 GF B-02951 Rollback CID 1 for backwards compatibility
** 4 2014-10-15 GF B-02951 Re-apply CID 1 only if latest data model for MR
** 5 2016-08-09 AK B-12405 Added merge with FactChargeBasedStatisticsByPostDate
** 6 2016-09-07 MH B-12791 Updated FactChargeBasedStatisticsByPostDate table name to FactChargeBasedStatisticsMonthly
** 7 2016-09-22 AK B-11845 Added procFactStatisticSampledBaselineTargetUpdate
** 8 2016-10-11 MH TK-33892 Fixed merge statement
** 9 2016-12-13 NL B-13759 Added fiscalYearID param and filtering
** 10 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 11 2017-03-06 GF B-14693 Added baseline target year filter
** 12 2017-05-24 IP B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactStatisticSampledMonthly.
** 13 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 14 2017-07-19 IP TK-45395 Fixed conditions of merge statement (include isSystemGenerated column)
** 15 2017-27-26 IP B-16752 Added units Budget Adjustment
** 16 2017-08-02 IP D-06232 Fixed generated stats for MR (include charge-based statistics)
** 17 2017-08-29 ip B-16798 Add using of Budget Adjustment.
** 18 2017-08-29 ip D-06508 Preventing appearing duplicate rows in staging table
*************************************************************/
CREATE proc [fw].[procStatisticSampledInsertMonthly]
@fiscalYearID smallint = 0
as
IF OBJECT_ID('tempdb..#StatisticSampledMonthlyStaging') IS NOT NULL DROP TABLE ##StatisticSampledMonthlyStaging
IF OBJECT_ID('fw.StatisticSampledMonthlyStagingWithCalcs') IS NOT NULL DROP TABLE fw.StatisticSampledMonthlyStagingWithCalcs
--run custom scripts
exec client.procStatisticSampledInsertMonthlyPreprocess
--push new data to fact table: statistics
CREATE TABLE #StatisticSampledMonthlyStaging (RowID bigint identity(1,1),AccountID int, DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Amount decimal(19,4), isDeleted bit, isSystemGenerated bit)
insert into #StatisticSampledMonthlyStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount)
exec fw.PrepareStatistics @FiscalYearID,0
--push new data to fact table: charge-based statistics
merge
#StatisticSampledMonthlyStaging as fact
using
(select DepartmentID, AccountID, FiscalYearID, FiscalMonthID, Value from fw.FactChargeBasedStatisticsMonthly where IsDeleted = 0 and Value != 0 and (FiscalYearID = @fiscalYearID OR @fiscalYearID = 0)) as source -- CID 9, added fiscalYearID filter
on
fact.DepartmentID = source.DepartmentID and fact.AccountID = source.AccountID and fact.FiscalYearID = source.FiscalYearID and fact.FiscalMonthID = source.FiscalMonthID and fact.TimeClassID = 1 and (fact.FiscalYearID = @fiscalYearID OR @fiscalYearID = 0) -- CID 9, added fiscalYearID filter
when not matched then
insert (FiscalYearID, FiscalMonthID, DepartmentID, AccountID, TimeClassID, Amount) values (source.FiscalYearID, source.FiscalMonthID, source.DepartmentID, source.AccountID, 1, source.Value);
--run calculations
exec fw.procFactMonthlyMergeDuplicates '#StatisticSampledMonthlyStaging', 'AccountID', 'Amount', @fiscalYearID, 0, 0
exec fw.procFactStatisticSampledBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactMonthlyYTDPriorYearUpdateStaging 'fw.FactStatisticSampledMonthly','#StatisticSampledMonthlyStaging', 'AccountID', 'Amount', @fiscalYearID, 0, 0
IF @fiscalYearID = 0
BEGIN
truncate table fw.FactStatisticSampledMonthly
INSERT INTO fw.FactStatisticSampledMonthly With (TABLOCKX) (
DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
IsDeleted,
IsSystemGenerated
)
SELECT
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Amount=SUM(Amount),
AmountYTD=SUM(AmountYTD),
AmountPriorYear=SUM(AmountPriorYear),
AmountPriorYTD=SUM(AmountPriorYTD),
0 as isDeleted,
isSystemGenerated=min(isnull(isSystemGenerated,0))
FROM fw.StatisticSampledMonthlyStagingWithCalcs
GROUP BY
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.StatisticSampledMonthlyStagingWithCalcs (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
;With src as
(
SELECT
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
Amount=SUM(Amount),
AmountYTD=SUM(AmountYTD),
AmountPriorYear=SUM(AmountPriorYear),
AmountPriorYTD=SUM(AmountPriorYTD),
isSystemGenerated=min(isSystemGenerated),
FTEs=SUM(FTEs),
FTEsYTD=SUM(FTEsYTD),
FTEsPriorYear=SUM(FTEsPriorYear),
FTEsPriorYTD=SUM(FTEsPriorYTD)
FROM fw.StatisticSampledMonthlyStagingWithCalcs
GROUP BY
DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID
)
MERGE fw.FactStatisticSampledMonthly With (TABLOCKX) AS target
USING src AS source
ON source.DepartmentID = target.DepartmentID
AND source.AccountID = target.AccountID
AND source.FiscalYearID = target.FiscalYearID
AND source.FiscalMonthID = target.FiscalMonthID
AND source.TimeClassID = target.TimeClassID
WHEN MATCHED AND
(target.Amount <> source.Amount
or target.AmountYTD <> source.AmountYTD
or target.AmountPriorYear <> source.AmountPriorYear
or target.AmountPriorYTD <> source.AmountPriorYTD
or target.IsSystemGenerated <> source.IsSystemGenerated)
THEN
UPDATE
SET target.Amount = source.Amount,
target.AmountYTD = source.AmountYTD,
target.AmountPriorYear = source.AmountPriorYear,
target.AmountPriorYTD = source.AmountPriorYTD,
target.IsSystemGenerated = source.IsSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.AccountID,
source.FiscalYearID,
source.FiscalMonthID,
source.TimeClassID,
source.Amount,
source.AmountYTD,
source.AmountPriorYear,
source.AmountPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
AND Target.FiscalYearID = @fiscalYearID
THEN
DELETE;
END
IF OBJECT_ID('tempdb..##StatisticSampledMonthlyStaging') IS NOT NULL DROP TABLE ##StatisticSampledMonthlyStaging
IF OBJECT_ID('fw.StatisticSampledMonthlyStagingWithCalcs') IS NOT NULL DROP TABLE fw.StatisticSampledMonthlyStagingWithCalcs
GO
---------------------------------------------
-- fw.procStatisticSampledInsertPayPeriod
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2013-10-03 RA Changing source table to be [int].[FactStatisticsbyPayPeriod]
** and removing unnecessary lines
** 2 2014-08-20 JG Adding year filters for performance
** 3 2014-09-03 MS B-02863 Removing the parameter from the YTD proc call
** 4 2015-02-11 JG Adding Daily statistics
** 5 2016-01-22 MS D-03856 Calculate PayPeriodID in Daily section
** 6 2016-01-22 MS B-11082 Pull in Charge-based and Aggregated daily statistics and exclude GL statistics for these departments
** 7 2016-03-23 MS B-11274 Exclude list of departments in charge-based mapping table when AccountID=0 and Weight=0
** 8 2016-04-28 AK B-11864 Added IsPR check
** 9 2016-07-11 GF B-12396 Handle stats that exist in multiple data sources (dupe handling)
** 10 2016-10-04 MH B-13126 Added procFactStatisticSampledPayPeriodBaselineTargetUpdate
** 11 2016-12-13 MH B-13783 Reversed actuals sampling order
** 12 2017-01-31 AK B-13926 Added department filter
** 13 2017-02-08 GF B-14308 Added year filter
** 14 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling
** 15 2017-05-01 GF B-15551 Include non-PR driver departments in sampling
** 16 2017-05-02 GF B-15551 Remove primary statistics join so that all statistics are sampled
** 17 2017-05-29 ipetriv B-15994 Refactored sampling process and implemented using of staging tables
** 18 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 19 2017-07-19 IP TK-45395 Fixed conditions of merge statement (include isSystemGenerated column)
** 20 2017-27-26 IP B-16752 Added units Budget Adjustment
** 21 2017-08-29 ip B-16798 Add using of Budget Adjustment.
** 22 2017-10-04 GF D-06489 Fix pay period select when running all years
** 23 2017-10-04 IP D-06489 Fix departments scope for cases when procedure run for one department (but adjustments could require more)
** 24 2018-02-22 IP D-06786 add department calculation for TC = 2 if dept is not in PR , Dept is in Budget Allocation
** 25 2018-05-17 IP D-07329 Returning fuctionality to include stats for departments using non-PR driver departments
** 26 2019-04-19 OV B-20579 Filtered by new column 'TimeClassID' from int.FactSharedImportDailyStatistics
** 27 2020-03-20 vfay D-08997 [fw].[PrepareStatisticsPayPeriod] is reporting incorrect adjustment amounts
** 28 2020-07-30 HV JAZZ-2302 YTD PR Calculations Incorrect when Processing Current Year Only
** 29 2020-11-26 KF JAZZ-7886 Stored procedure fw.procStatisticSampledInsertPayPeriod is timing out
** 30 2023-04-11 HV JAZZ-52032 Create and fill caching table for charge-based statistics pay period data
** 31 2023-12-04 ishah JAZZ-62485 Remove @departmentIDs param for procFactPayPeriodYTDPriorYearUpdate_Staging
*************************************************************/
CREATE proc [fw].[procStatisticSampledInsertPayPeriod]
@fiscalYearID int = 0,
@isPrMetricConfigurationOn BIT = 0
with recompile
as
IF OBJECT_ID('fw.StatisticSampledPayPeriodWithCalcs') IS NOT NULL DROP TABLE fw.StatisticSampledPayPeriodWithCalcs
IF OBJECT_ID('tempdb..#StatisticSampledPayPeriod') IS NOT NULL DROP TABLE #StatisticSampledPayPeriod
create table #StatisticSampledPayPeriod (DepartmentID int, AccountID int, PayPeriodID int, TimeClassID int, Units decimal(18, 6), isDeleted bit default 0, isSystemGenerated bit default 0)
create clustered columnstore index cci on #StatisticSampledPayPeriod
insert into #StatisticSampledPayPeriod (DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
exec fw.PrepareStatisticsPayPeriod @FiscalYearID,null,0,@isPrMetricConfigurationOn -- Adding Adjustments!
--run calculations
exec fw.procFactPayPeriodMergeDuplicates '#StatisticSampledPayPeriod', 'AccountID', 'Units', @fiscalYearID, 0, 0, null
exec fw.procFactStatisticSampledPayPeriodBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactPayPeriodYTDPriorYearUpdate_Staging 'fw.FactStatisticSampledPayPeriod','#StatisticSampledPayPeriod','AccountID', 'Units', @fiscalYearID, 0, 0
--Commented out due to D-07329
/*
--!!!Removing all records where Department is not PR
delete fact
from fw.StatisticSampledPayPeriodWithCalcs fact
inner join fw.dimDepartment d on d.DepartmentID = fact.DepartmentID and d.isPR = 0
*/
IF @fiscalYearID = 0
BEGIN
truncate table fw.FactStatisticSampledPayPeriod
INSERT INTO fw.FactStatisticSampledPayPeriod With (TABLOCKX) (
DepartmentID, AccountID, PayPeriodID, TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
IsDeleted,
IsSystemGenerated
)
SELECT DepartmentID, AccountID, PayPeriodID, TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
0 as IsDeleted,
isnull(IsSystemGenerated,0) as IsSystemGenerated
FROM fw.StatisticSampledPayPeriodWithCalcs
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.StatisticSampledPayPeriodWithCalcs (DepartmentID, AccountID, PayPeriodID, TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
;WITH TGT AS (SELECT t.* FROM
fw.FactStatisticSampledPayPeriod t With (TABLOCKX)
inner join fw.DimPayPeriod pp on t.PayPeriodId = pp.PayPeriodID
and (@fiscalYearID = 0 or pp.FiscalYearIDSecond = @fiscalYearID)
and TimeclassID in (1,2,20)
)
MERGE
TGT AS target
USING fw.StatisticSampledPayPeriodWithCalcs AS source
ON source.DepartmentID = target.DepartmentID
AND source.AccountID = target.AccountID
AND source.PayPeriodID= target.PayPeriodID
AND source.TimeClassID = target.TimeClassID
WHEN MATCHED AND
(target.Units <> source.Units
or target.UnitsYTD <> source.UnitsYTD
or target.UnitsPriorYear <> source.UnitsPriorYear
or target.UnitsPriorYTD <> source.UnitsPriorYTD
or target.IsSystemGenerated <> source.IsSystemGenerated)
THEN
UPDATE
SET target.Units = source.Units,
target.UnitsYTD = source.UnitsYTD,
target.UnitsPriorYear = source.UnitsPriorYear,
target.UnitsPriorYTD = source.UnitsPriorYTD,
target.IsSystemGenerated = source.IsSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID, AccountID, PayPeriodID, TimeClassID,
Units,
UnitsYTD,
UnitsPriorYear,
UnitsPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.AccountID,
source.PayPeriodID,
source.TimeClassID,
source.Units,
source.UnitsYTD,
source.UnitsPriorYear,
source.UnitsPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
END
IF OBJECT_ID('fw.StatisticSampledPayPeriodWithCalcs') IS NOT NULL DROP TABLE fw.StatisticSampledPayPeriodWithCalcs
IF OBJECT_ID('tempdb..#StatisticSampledPayPeriod') IS NOT NULL DROP TABLE #StatisticSampledPayPeriod
GO
---------------------------------------------
-- fw.procStatisticSecondarySampledAdjustedTargetMonthlyInsert
CREATE PROCEDURE [fw].[procStatisticSecondarySampledAdjustedTargetMonthlyInsert] (@FiscalYearID int = 0)
AS
BEGIN
/*
Proposal
If the client is not using flexing, this will be the target plus the efficiency factor
This should work regardless of the target basis (i.e. rolling avg or budget)
The factor will be applied after the inversion
If the factor type is percentage, the adjusted target will be the target*(1+factor)
i.e. if my target is 100 and my factor is 5%, the adjusted target will be 100*(1+0.05)=105
i.e. if my target is 100 and my factor is -5%, the adjusted target will be 100*(1+-0.05)=95
If the factor type is value, the adjusted value will be target + factor
i.e. if my target is 1000 and my factor is 200, the adjusted target will be will be 1000+200=1200
i.e. if my target is 1000 and my factor is -200, the adjusted target will be 1000-200=800
If there is more than one factor impacting a department and account or job code/pay code group combination, then the factors should layer on top of each other based on history order
If an efficiency factor does not exist for a particular account/job code, then the value in the new time class will be either flex or baseline target if flex is not used
This will happen after Flex is calculated
Include integration tests
*/
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-08-23 BC JAZZ-11498 Change Table Variable to Temporary Tables
************************************************************
*/
DECLARE @IsFlexingEnabled INT = (
SELECT VALUE
FROM [mr].[SystemSetting]
WHERE NAME = 'Is Target Flexed'
)
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
CREATE TABLE #EfficiencyFactorScope (
EfficiencyFactorGUID [uniqueidentifier] NOT NULL
,[DepartmentID] [int] NOT NULL
,[AccountID] [int] NOT NULL
,[FiscalYearID] [smallint] NOT NULL
,[FiscalMonthID] [tinyint] NOT NULL
,Value NUMERIC(25, 6) NOT NULL
,Type TINYINT
,FactorType CHAR(1)
,DateCreated DATETIME
,UNIQUE CLUSTERED (
FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
);
IF EXISTS (SELECT TOP 1 * FROM [mr].[EfficiencyFactor]) BEGIN
WITH EfficiencyFactorScope
AS (
SELECT *
,rn = ROW_NUMBER() OVER (
PARTITION BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID ORDER BY FiscalYearID
,FiscalMonthID
,DepartmentID
,AccountID
,EfficiencyFactorGUID
)
FROM (
SELECT DISTINCT ef.EfficiencyFactorGUID
,ef.FiscalYearID
,efgd.FiscalMonthID
,efd.DepartmentID
,isnull(efgd.AccountID, da.AccountID) AS AccountID
,CASE
WHEN isnull(efgd.AccountID, - 999) = da.AccountID
THEN 0
ELSE efgd.Value
END AS Value
,ef.Type
,ef.FactorType
,ef.DateCreated
FROM mr.EfficiencyFactor ef
INNER JOIN mr.EfficiencyFactorDepartment efd ON ef.EfficiencyFactorGUID = efd.EfficiencyFactorGUID
INNER JOIN mr.EfficiencyFactorGLDetails efgd ON efgd.EfficiencyFactorGUID = ef.EfficiencyFactorGUID
LEFT JOIN fw.DimAccount da ON efgd.OBFinancialReportingID = da.OBUnitsFinancialReportingID and efgd.AccountID IS NULL
LEFT JOIN mr.EfficiencyFactorGLDetails efgd_exist ON efgd.EfficiencyFactorGUID = efgd_exist.EfficiencyFactorGUID and efgd_exist.AccountID = da.AccountID and efgd_exist.FiscalMonthID = efgd.FiscalMonthID
WHERE (@FiscalYearID = ef.FiscalYearID or @FiscalYearID = 0) and (efgd_exist.AccountID is null or da.AccountID is null) AND ef.Type = 1 AND isnull(efgd.AccountID, da.AccountID) IS NOT NULL
) X
)
INSERT INTO #EfficiencyFactorScope (
EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
)
SELECT EfficiencyFactorGUID
,[DepartmentID]
,[AccountID]
,[FiscalYearID]
,[FiscalMonthID]
,Value
,Type
,FactorType
,DateCreated
FROM EfficiencyFactorScope
WHERE RN = 1
DELETE FROM fw.FactStatisticSecondarySampledMonthly WHERE (@FiscalYearID = FiscalYearID or @FiscalYearID = 0) and TimeClassID = 22
INSERT INTO fw.FactStatisticSecondarySampledMonthly (DepartmentID,
AccountID,
FiscalYearID,
FiscalMonthID,
TimeClassID,
IsDeleted,
Amount)
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,22 as TimeClassID
,0 as IsDeleted
,SUM(Amount) as Amount
FROM (
SELECT isnull(fact.DepartmentID,ToApply.DepartmentID) as DepartmentID
,isnull(fact.AccountID,toApply.AccountID) as AccountID
,isnull(fact.FiscalYearID,toApply.FiscalYearID) as FiscalYearID
,isnull(fact.FiscalMonthID,toApply.FiscalMonthID) as FiscalMonthID
,Amount = CASE
WHEN FactorType = 'P'
THEN isnull(fact.Amount,0.0) * isnull(Value,0.0) / 100.00
WHEN FactorType = 'V'
THEN isnull(Value,0.0)
ELSE 0.0
END
FROM #EfficiencyFactorScope ToApply
INNER JOIN (SELECT distinct DepartmentID,AccountID from fw.FactStatisticSecondarySampledMonthly) GenCand on
GenCand.DepartmentID = ToApply.DepartmentID
AND GenCand.AccountID = ToApply.AccountID
FULL JOIN fw.FactStatisticSecondarySampledMonthly fact ON
fact.DepartmentID = ToApply.DepartmentID
AND fact.AccountID = ToApply.AccountID
AND fact.FiscalYearID = ToApply.FiscalYearID
AND fact.FiscalMonthID = ToApply.FiscalMonthID
WHERE (
(
isnull(fact.TimeClassID,0) = 4
AND @IsFlexingEnabled = 1
)
OR (
isnull(fact.TimeClassID,0) = 20
AND @IsFlexingEnabled = 0
)
)
and (fact.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
UNION ALL
SELECT DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
,Amount
FROM fw.FactStatisticSecondarySampledMonthly fact
WHERE (
(
isnull(fact.TimeClassID,0) = 4
AND @IsFlexingEnabled = 1
)
OR (
isnull(fact.TimeClassID,0) = 20
AND @IsFlexingEnabled = 0
)
)
and (fact.FiscalYearID = @FiscalYearID or @FiscalYearID = 0)
) X
GROUP BY DepartmentID
,AccountID
,FiscalYearID
,FiscalMonthID
exec [fw].[procFactMonthlyYTDPriorYearUpdate] @factTableName = 'fw.FactStatisticSecondarySampledMonthly',@keyNameCSV = 'AccountID',@measureNameCSV = 'Amount',@fiscalYearID = 0,@timeClassID = 22,@isDebugOnly = 0
END
END
IF OBJECT_ID('tempdb..#EfficiencyFactorScope') IS NOT NULL DROP TABLE #EfficiencyFactorScope
GO
---------------------------------------------
-- fw.procStatisticSecondarySampledInsertMonthly
/*************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2014-09-03 MS B-02863 Removing the parameter from the YTD proc call
** 2 2016-09-22 AK B-11845 Added procFactStatisticSecondarySampledBaselineTargetUpdate
** 3 2016-12-13 NL B-13759 Adding fiscalYearID param and filtering
** 4 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling + general cleanup
** 5 2017-03-07 GF B-14693 Added baseline target year filter
** 6 2017-05-24 IP B-15086 Sampling Performance Improvements. Using temp tables insead of fw.FactPayrollSampledMonthlyDetailed.
** 7 2017-06-15 IP B-15086 Modify SP to use unique temp table
** 8 2017-07-19 IP TK-45395 Fixed conditions of merge statement (include isSystemGenerated column)
** 9 2017-27-26 ipetriv B-16752 Added units Budget Adjustment
** 10 2017-08-29 ip B-16798 Add using of Budget Adjustment.
*************************************************************/
CREATE proc [fw].[procStatisticSecondarySampledInsertMonthly]
@fiscalYearID smallint = 0
as
IF OBJECT_ID('tempdb..#StatisticSecondarySampledMonthlyStaging') IS NOT NULL DROP TABLE #StatisticSecondarySampledMonthlyStaging
IF OBJECT_ID('fw.StatisticSecondarySampledMonthlyStagingWithCalcs') IS NOT NULL DROP TABLE fw.StatisticSecondarySampledMonthlyStagingWithCalcs
CREATE TABLE #StatisticSecondarySampledMonthlyStaging (RowID bigint identity(1,1),AccountID int, DepartmentID int, FiscalYearID int, FiscalMonthID int, TimeClassID int, Amount decimal(19,4), isDeleted bit, isSystemGenerated bit)
--push new data to fact table
insert into #StatisticSecondarySampledMonthlyStaging (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID, Amount)
exec fw.PrepareStatistics @fiscalYearID,@StatisticType = 2
--run calculations
exec fw.procFactMonthlyMergeDuplicates '#StatisticSecondarySampledMonthlyStaging', 'AccountID', 'Amount', @fiscalYearID, 0, 0
exec fw.procFactStatisticSecondarySampledBaselineTargetUpdate @fiscalYearID = @fiscalYearID
exec fw.procFactMonthlyYTDPriorYearUpdateStaging 'fw.FactStatisticSecondarySampledMonthly','#StatisticSecondarySampledMonthlyStaging','AccountID', 'Amount', @fiscalYearID, 0, 0
IF @fiscalYearID = 0
BEGIN
truncate table fw.FactStatisticSecondarySampledMonthly
INSERT INTO fw.FactStatisticSecondarySampledMonthly With (TABLOCKX) (
DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
IsDeleted,
IsSystemGenerated
)
SELECT DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
0 as IsDeleted,
isnull(IsSystemGenerated,0) as IsSystemGenerated
FROM fw.StatisticSecondarySampledMonthlyStagingWithCalcs
END
ELSE
BEGIN
print 'Starting creating index --- '+convert(varchar(20),GETDATE(),113)
CREATE CLUSTERED INDEX IDX_TempPayrollWithCalcs on fw.StatisticSecondarySampledMonthlyStagingWithCalcs (DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID)
print 'Starting transaction --- '+convert(varchar(20),GETDATE(),113)
MERGE fw.FactStatisticSecondarySampledMonthly With (TABLOCKX) AS target
USING fw.StatisticSecondarySampledMonthlyStagingWithCalcs AS source
ON source.DepartmentID = target.DepartmentID
AND source.AccountID = target.AccountID
AND source.FiscalYearID = target.FiscalYearID
AND source.FiscalMonthID = target.FiscalMonthID
AND source.TimeClassID = target.TimeClassID
WHEN MATCHED AND
(target.Amount <> source.Amount
or target.AmountYTD <> source.AmountYTD
or target.AmountPriorYear <> source.AmountPriorYear
or target.AmountPriorYTD <> source.AmountPriorYTD
or target.IsSystemGenerated <> source.IsSystemGenerated)
THEN
UPDATE
SET target.Amount = source.Amount,
target.AmountYTD = source.AmountYTD,
target.AmountPriorYear = source.AmountPriorYear,
target.AmountPriorYTD = source.AmountPriorYTD,
target.IsSystemGenerated = source.IsSystemGenerated
WHEN NOT MATCHED BY TARGET
THEN
INSERT (
DepartmentID, AccountID, FiscalYearID, FiscalMonthID, TimeClassID,
Amount,
AmountYTD,
AmountPriorYear,
AmountPriorYTD,
IsDeleted,
IsSystemGenerated
)
VALUES (
source.DepartmentID,
source.AccountID,
source.FiscalYearID,
source.FiscalMonthID,
source.TimeClassID,
source.Amount,
source.AmountYTD,
source.AmountPriorYear,
source.AmountPriorYTD,
0,
isnull(IsSystemGenerated,0)
)
WHEN NOT MATCHED BY SOURCE
AND Target.FiscalYearID = @fiscalYearID
THEN
DELETE;
END
IF OBJECT_ID('tempdb..#StatisticSecondarySampledMonthlyStaging') IS NOT NULL DROP TABLE #StatisticSecondarySampledMonthlyStaging
IF OBJECT_ID('fw.StatisticSecondarySampledMonthlyStagingWithCalcs') IS NOT NULL DROP TABLE fw.StatisticSecondarySampledMonthlyStagingWithCalcs
GO
---------------------------------------------
-- fw.procStatisticSecondarySampledInsertPayPeriod
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2016-04-28 AK B-11864 Added IsPR check
** 2 2017-01-31 AK B-13926 Added department filter
** 3 2017-02-08 GF B-14308 Added year filter
** 4 2017-02-20 GF D-05545 Move duplicate record handling from YTD into sampling
** 5 2017-10-04 GF D-06489 Fix pay period select when running all years
*************************************************************/
CREATE proc [fw].[procStatisticSecondarySampledInsertPayPeriod]
@isCalculatedYearMonth as bit = 1,
@departmentIDs nvarchar(max) = null,
@fiscalYearID int = 0
with recompile
as
declare @departments table(val int primary key)
insert into @departments select val from ConvertCSValuesToTable(@departmentIDs, ',')
declare @payperiods table(val smallint primary key)
insert into @payperiods select PayPeriodID from fw.DimPayPeriod where FiscalYearIDSecond = @fiscalYearID or @fiscalYearID = 0
if @isCalculatedYearMonth = 1 begin
--delete existing data
if (@departmentIDs is null and @fiscalYearID = 0) begin
truncate table fw.FactStatisticSecondarySampledbyPayPeriod
end else begin
while exists(select null from fw.FactStatisticSecondarySampledbyPayPeriod (nolock) where (@departmentIDs is null or DepartmentID in(select val from @departments)) and (@fiscalYearID = 0 or PayPeriodID in(select val from @payperiods))) begin
delete top (10000) from fw.FactStatisticSecondarySampledbyPayPeriod where (@departmentIDs is null or DepartmentID in(select val from @departments)) and (@fiscalYearID = 0 or PayPeriodID in(select val from @payperiods))
end
end
--sample rows with a valid pay period code, spreading across months
insert into [fw].[FactStatisticSecondarySampledbyPayPeriod] (DepartmentID, AccountID, PayPeriodID, TimeClassID, Units)
select
STAT.DepartmentID,
STAT.AccountID,
STAT.PayPeriodID,
STAT.TimeClassID,
SUM(STAT.Value) AS Units
from
[int].[FactStatisticsbyPayPeriod] STAT
inner join fw.DimAccount A on A.Accountid = STAT.Accountid
inner join fw.DimDepartment D on D.Departmentid = STAT.Departmentid
inner join [fw].[viewStatisticSecondaryConfiguration] V on V.AccountID=stat.AccountID and V.DepartmentID=stat.DepartmentID
where
STAT.Value != 0 and STAT.Isdeleted = 0 and STAT.PayPeriodID != 0 and A.IsStat=1
and D.IsPR = 1
and (@departmentIDs is null or STAT.DepartmentID in (select val from @departments))
and (@fiscalYearID = 0 or STAT.PayPeriodID in(select val from @payperiods))
group by
STAT.DepartmentID,
STAT.AccountID,
STAT.PayPeriodID,
STAT.TimeClassID
end else begin
print 'NOT SUPPORTED YET'
end
--run calculations
exec fw.procFactPayPeriodMergeDuplicates 'fw.FactStatisticSecondarySampledbyPayPeriod', 'AccountID', 'Units', @fiscalYearID, 0, 0, @departmentIDs
exec fw.procFactPayPeriodYTDPriorYearUpdate 'fw.FactStatisticSecondarySampledbyPayPeriod', 'AccountID', 'Units', @fiscalYearID, 0, 0, @departmentIDs
GO
---------------------------------------------
-- fw.procTemplatePublishRequest_Insert
/************************************************************************************************************************
** Author: cbecker
** Create Date: 2016-01-14
** Description: Inserts template publish request and removes duplicates requests
** Last Modified: 2016-01-14
** GM Release: 2016.1.3
**************************************************************************************************************************
** Change History
**************************************************************************************************************************
** CID Date Author WI Description
** 01 2016-03-15 cbb n/a Delete duplicate publish requests
** 02 2017-04-24 gjf n/a Trigger profile rebuilds on publish
** 03 2019-03-18 gjf B-22412 Option to include template file
*************************************************************************************************************************/
CREATE proc [fw].[procTemplatePublishRequest_Insert]
@frameworkID nvarchar(16)=0,
@includeTemplates bit=0,
@IsDebugOnly bit=0
as
begin
--------------------------------------------------------------------------------------------------
-- Logging
--------------------------------------------------------------------------------------------------
declare @logdesc nvarchar(100)
select
@logdesc = case @IsDebugOnly
when 1 then 'Debug only - Insert template publish request for '
else 'Insert template publish request for '
end
+fw.Name
from [fw].[DimFramework] fw
where FrameworkID=@frameworkID
declare @higuid uniqueidentifier
exec procLogScript @logdesc, @higuid output
print N'select * from [dbo].[HistoryItem] where HISTORYITEMGUID='''
+cast(@higuid as varchar(36))
+N''''
--------------------------------------------------------------------------------------------------
-- Set @sql string for inserting template publish request
--------------------------------------------------------------------------------------------------
declare @RequestGUID nvarchar(36) = newid()
declare @IssuedAt nvarchar(36) = getdate()
declare @sql nvarchar(max) =
'
--Remove duplicate template publish requests
with duplicates
as
(
select
RequestGUID,
FrameworkID,
Num = row_number() over (PARTITION BY FrameworkID order by IssuedAt)
from [dbo].[TemplatePublishRequest]
)
delete
from duplicates
where Num>1
--Insert template publish request
if not exists
(
select 1
from [dbo].[TemplatePublishRequest]
where FrameworkID='
+ @frameworkID
+ '
)
begin
insert into [dbo].[TemplatePublishRequest]
([RequestGUID], [IssuedAt], [FrameworkID])
values
('''
+ @RequestGUID
+ ''', '''
+ @IssuedAt
+ ''', '
+ @frameworkID
+')
end
'
--------------------------------------------------------------------------------------------------
-- Ensure that OB publishes do a full rebuild on expansion profiles
--------------------------------------------------------------------------------------------------
if (@frameworkID = 2) begin
set @sql = @sql + '
--Ensure that OB publishes do a full rebuild on expansion profiles
update ob.SystemSetting set Value = ''1'' where Name = ''Template Publish Create Profiles'';
'
end
--------------------------------------------------------------------------------------------------
-- Optionally include template files
--------------------------------------------------------------------------------------------------
if (@includeTemplates = 1) begin
set @sql = @sql + '
--Include template files
insert into TemplatePublishRequestData (RequestGUID, ModelTemplateGUID, LastModified, Data)
select
''' + @RequestGUID + ''',
mt.ModelTemplateGUID,
getdate(),
dp.Data
from
EMFModelTemplate mt
inner join DataPathFile_ModelTemplate dp on dp.FileName = cast(mt.ModelTemplateGUID as nvarchar(36)) + ''.xlsx.TAWithMappingFormulas''
where
' + @frameworkID + ' = (case when mt.Name like ''CAP %'' then 1 when mt.Name like ''OB %'' then 2 when mt.Name like ''SP %'' then 4 else 0 end)
and mt.ModelTemplateGUID not in(select ChildModelTemplateGUID from MEScoreExpansionProfile)
'
end
--------------------------------------------------------------------------------------------------
-- Print or execute @sql
--------------------------------------------------------------------------------------------------
if @IsDebugOnly=1
begin
print(@sql)
end
else
begin
exec(@sql)
end
end
GO
---------------------------------------------
-- fw.procTransferStaffingToStaffingByPayPeriodCurrentYear
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-08-07 VO B-20238 Added condition where TimeClassID = 2
** 2 2020-01-27 IH TK-82801 Increase a deletion size from 10K to 100K
** 3 2020-10-02 HV JAZZ-1487 MR "Transfer Budget Data" filtering on currently year, not transferring correctly to first/last pay periods
** 4 2022-12-12 BK JAZZ-47041 MR "Transfer Budget Data" increase temp table column size to prevent failing when int.FactStaffing EmployeeCode is longer than 50 characters
** 5 2024-06-14 SM JAZZ-71536 change JobCodeID from smallint to int
** 6 2024-09-13 SF JAZZ-72743 PayCode from varchar(50) to varchar(100) - Extend Field String Limit for Pay Code for Kaiser EPMS
*************************************************************/
-- !!! If you modifying this proc, check [int].[procTransferStaffingToStaffingByPayPeriodFiscalYear] for updates !!!
CREATE proc [fw].[procTransferStaffingToStaffingByPayPeriodCurrentYear] as
/******** Variable Declaration **********/
declare @TransactionID int = 1
DECLARE @FiscalYearId INT = (
SELECT setting
FROM dbsetting
WHERE NAME = 'Current_GL_YearID'
)
/******** Build Rows to Insert **********/
CREATE TABLE #TEMPSTAFFINGPAYPERIOD (
[DepartmentID] [int] NOT NULL,
[DepartmentCode] [varchar](50) NOT NULL,
[JobCodeID] [int] NOT NULL,
[JobCode] [varchar](50) NOT NULL,
[PayCodeID] [smallint] NOT NULL,
[PayCode] [varchar](100) NOT NULL,
[FiscalYearID] [smallint] NOT NULL,
[FiscalYearCode] [varchar](20) NOT NULL,
[TimeClassID] [tinyint] NOT NULL,
[TimeClassCode] [varchar](20) NOT NULL,
[UnitTypeID] [smallint] NOT NULL,
[UnitType] [varchar](20) NOT NULL,
[PayPeriodID] [smallint] NOT NULL,
[PayPeriodCode] [varchar](20) NOT NULL,
[Value] [decimal](19, 4) NOT NULL,
[EmployeeID] [int] NOT NULL,
[Employeecode] [varchar](2000) NOT NULL,
[TransactionID] [int] NULL
)
insert into #TEMPSTAFFINGPAYPERIOD ([DepartmentID], [DepartmentCode], [JobCodeID], [JobCode], [PayCodeID], [PayCode], [FiscalYearID], [FiscalYearCode], [TimeClassID], [TimeClassCode], [UnitTypeID], [UnitType], [PayPeriodID], [PayPeriodCode], [Value], [EmployeeID], [Employeecode], [TransactionID])
select
fact.[DepartmentID],
fact.[DepartmentCode],
fact.[JobCodeID],
fact.[JobCode],
fact.[PayCodeID],
fact.[PayCode],
PP.[FiscalYearIDSecond],
PP.[FiscalYearIDSecond],
fact.[TimeClassID],
fact.[TimeClassCode],
fact.[UnitTypeID],
fact.[UnitType],
pp.[PayPeriodID],
pp.[PayPeriodCode],
SUM(cast(fact.value * PP.PeriodWeightStart as money)) AS Value,
fact.[EmployeeID],
fact.[Employeecode],
1 as TransactionID
from
[int].[FactStaffing] fact
inner join [fw].[DimDepartment] D on fact.DepartmentID=D.DepartmentID
inner join [fw].[DimPayPeriod] PP on fact.FiscalMonthID = PP.FiscalMonthIDStart and fact.FiscalYearID = PP.FiscalYearIDStart and PP.PayCycleID=D.PayCycleID
where
fact.value != 0
and fact.TimeclassID = 2
and PP.PeriodDaysStart > 0 and fact.IsDeleted = 0
--============= BEGIN CID 2 =================
and fact.TransactionID<>@TransactionID
--============= END CID 2 ===================
and PP.FiscalYearIDSecond = @FiscalYearId
GROUP BY
fact.[DepartmentID],
fact.[DepartmentCode],
fact.[JobCodeID],
fact.[JobCode],
fact.[PayCodeID],
fact.[PayCode],
PP.[FiscalYearIDSecond],
fact.[TimeClassID],
fact.[TimeClassCode],
fact.[UnitTypeID],
fact.[UnitType],
fact.[EmployeeID],
fact.[Employeecode],
pp.[PayPeriodID],
pp.[PayPeriodCode]
insert into #TEMPSTAFFINGPAYPERIOD ([DepartmentID], [DepartmentCode], [JobCodeID], [JobCode], [PayCodeID], [PayCode], [FiscalYearID], [FiscalYearCode], [TimeClassID], [TimeClassCode], [UnitTypeID], [UnitType], [PayPeriodID], [PayPeriodCode], [Value], [EmployeeID], [Employeecode], [TransactionID])
select
fact.[DepartmentID],
fact.[DepartmentCode],
fact.[JobCodeID],
fact.[JobCode],
fact.[PayCodeID],
fact.[PayCode],
fact.[FiscalYearID],
fact.[FiscalYearCode],
fact.[TimeClassID],
fact.[TimeClassCode],
fact.[UnitTypeID],
fact.[UnitType],
pp.[PayPeriodID],
pp.[PayPeriodCode],
SUM(cast(fact.value * PP.PeriodWeightSecond as money)) AS Value,
fact.[EmployeeID],
fact.[Employeecode],
1 as TransactionID
from
[int].[FactStaffing] fact
inner join [fw].[DimDepartment] D on fact.DepartmentID=D.DepartmentID
inner join [fw].[DimPayPeriod] PP on fact.FiscalMonthID = PP.FiscalMonthIDSecond and fact.FiscalYearID = PP.FiscalYearIDSecond and PP.PayCycleID=D.PayCycleID
where
fact.value != 0
and fact.TimeclassID = 2
and PP.PeriodDaysSecond > 0 and fact.IsDeleted = 0
--============= BEGIN CID 2 =================
and fact.TransactionID<>@TransactionID
--============= END CID 2 ===================
and PP.FiscalYearIDSecond = @FiscalYearId
GROUP BY
fact.[DepartmentID],
fact.[DepartmentCode],
fact.[JobCodeID],
fact.[JobCode],
fact.[PayCodeID],
fact.[PayCode],
fact.[FiscalYearID],
fact.[FiscalYearCode],
fact.[TimeClassID],
fact.[TimeClassCode],
fact.[UnitTypeID],
fact.[UnitType],
fact.[EmployeeID],
fact.[Employeecode],
pp.[PayPeriodID],
pp.[PayPeriodCode]
/******** Delete previous transfered data **********/
--============= BEGIN CID 3 =================
while exists (select null from [int].[FactStaffingByPayPeriod] where TransactionID=@TransactionID and FiscalYearID = @FiscalYearId and TimeClassID = 2)
delete top (100000) from [int].[FactStaffingByPayPeriod] where TransactionID=@TransactionID and FiscalYearID = @FiscalYearId and TimeClassID = 2
--============= END CID 3 ===================
/******** Insert into destination table *************/
insert into [int].[FactStaffingByPayPeriod] ([DepartmentID], [DepartmentCode], [JobCodeID], [JobCode], [PayCodeID], [PayCode], [FiscalYearID], [FiscalYearCode], [TimeClassID], [TimeClassCode], [UnitTypeID], [UnitType], [PayPeriodID], [PayPeriodCode], [Value], [EmployeeID], [Employeecode], [TransactionID])
select
[DepartmentID],
[DepartmentCode],
[JobCodeID],
[JobCode],
[PayCodeID],
[PayCode],
[FiscalYearID],
[FiscalYearCode],
[TimeClassID],
[TimeClassCode],
[UnitTypeID],
[UnitType],
[PayPeriodID],
[PayPeriodCode],
SUM([Value]) AS VALUE,
[EmployeeID],
[Employeecode],
1 as TransactionID
from
#TEMPSTAFFINGPAYPERIOD
group by
[DepartmentID],
[DepartmentCode],
[JobCodeID],
[JobCode],
[PayCodeID],
[PayCode],
[FiscalYearID],
[FiscalYearCode],
[TimeClassID],
[TimeClassCode],
[UnitTypeID],
[UnitType],
[PayPeriodID],
[PayPeriodCode],
[EmployeeID],
[Employeecode]
-- alter index all on [int].[FactStaffingbyPayPeriod] REBUILD WITH (FILLFACTOR=80)
-- update statistics [int].[FactStaffingbyPayPeriod] WITH FULLSCAN
--cleanup
DROP TABLE #TEMPSTAFFINGPAYPERIOD
/******** Update record in IntTransaction **********/
--TODO: Make the way it inserts to the IntTranaction much better;
GO
---------------------------------------------
-- fw.procTransferStatisticsMonthlyToPayPeriodCurrentYear
/**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2018-08-07 VO B-20238 added condition where TimeClassID = 2
** 2 2020-10-02 HV JAZZ-1487 MR "Transfer Budget Data" filtering on currently year, not transferring correctly to first/last pay periods
*************************************************************/
CREATE proc [fw].[procTransferStatisticsMonthlyToPayPeriodCurrentYear] as
/******** Variable Declaration **********/
declare @TransactionID int = 1
DECLARE @FiscalYearId INT = (
SELECT setting
FROM dbsetting
WHERE NAME = 'Current_GL_YearID'
)
/******** Build Rows to Insert **********/
CREATE TABLE #TEMPSTATISTICS (
[AccountID] [int] NOT NULL,
[DepartmentID] [int] NOT NULL,
[FiscalYearID] [smallint] NOT NULL,
[PayPeriodID] [smallint] NOT NULL,
[TimeClassID] [tinyint] NOT NULL,
[Value] [decimal](19, 4) NOT NULL,
[AccountCode] [nvarchar](100) NOT NULL,
[DepartmentCode] [nvarchar](100) NOT NULL,
[FiscalYearCode] [nvarchar](100) NOT NULL,
[PayPeriodCode] [nvarchar](100) NOT NULL,
[TimeClassCode] [nvarchar](100) NOT NULL,
[TransactionID] [int] NOT NULL,
)
insert into #TEMPSTATISTICS (DepartmentID, DepartmentCode, AccountID, AccountCode, FiscalYearID, FiscalYearCode, PayPeriodID, PayPeriodCode, TimeClassID, TimeClassCode, Value, TransactionID)
select
fact.DepartmentID,
fact.DepartmentCode,
fact.AccountID,
fact.AccountCode,
PP.FiscalYearIDSecond,
PP.FiscalYearIDSecond,
PP.PayPeriodID,
PP.PayPeriodCode,
fact.TimeClassID,
fact.TimeClassCode,
SUM(cast(fact.value * PP.PeriodWeightStart as money)) AS Value,
1 as TransactionID
from
[int].[FactStatistic] fact
inner join [fw].[DimDepartment] D on fact.DepartmentID=D.DepartmentID
inner join fw.DimPayPeriod PP on PP.FiscalMonthIDStart = fact.FiscalMonthID and PP.FiscalYearIDStart = fact.FiscalYearID and PP.PayCycleID=D.PayCycleID
where
fact.value != 0
and fact.TimeClassID = 2
and PP.PeriodDaysStart > 0
--============= BEGIN CID 2 =================
and fact.TransactionID<>@TransactionID
--============= END CID 2 ===================
and PP.FiscalYearIDSecond = @FiscalYearId
GROUP BY
fact.DepartmentID,
fact.DepartmentCode,
fact.AccountID,
fact.AccountCode,
PP.FiscalYearIDSecond,
PP.PayPeriodID,
PP.PayPeriodCode,
fact.TimeClassID,
fact.TimeClassCode
insert into #TEMPSTATISTICS (DepartmentID, DepartmentCode, AccountID, AccountCode, FiscalYearID, FiscalYearCode, PayPeriodID, PayPeriodCode, TimeClassID, TimeClassCode, Value, TransactionID)
select
fact.DepartmentID,
fact.DepartmentCode,
fact.AccountID,
fact.AccountCode,
fact.FiscalYearID,
fact.FiscalYearCode,
PP.PayPeriodID,
PP.PayPeriodCode,
fact.TimeClassID,
fact.TimeClassCode,
SUM(cast(fact.value * PP.PeriodWeightSecond as money)) AS Value,
1 as TransactionID
from
[int].[FactStatistic] fact
inner join [fw].[DimDepartment] D on fact.DepartmentID=D.DepartmentID
inner join fw.DimPayPeriod PP on PP.FiscalMonthIDSecond = fact.FiscalMonthID and PP.FiscalYearIDSecond = fact.FiscalYearID and PP.PayCycleID=D.PayCycleID
where
fact.value != 0
and fact.TimeClassID = 2
and PP.PeriodDaysSecond > 0
--============= BEGIN CID 2 =================
and fact.TransactionID<>@TransactionID
--============= END CID 2 ===================
and fact.FiscalYearID = @FiscalYearId
GROUP BY
fact.DepartmentID,
fact.DepartmentCode,
fact.AccountID,
fact.AccountCode,
fact.FiscalYearID,
fact.FiscalYearCode,
PP.PayPeriodID,
PP.PayPeriodCode,
fact.TimeClassID,
fact.TimeClassCode
/******** Delete previous transfered data **********/
delete from [int].[FactStatisticsbyPayPeriod] where TransactionID=@TransactionID and FiscalYearID = @FiscalYearId and TimeClassID = 2
/******** Insert into destination table *************/
insert into [int].[FactStatisticsbyPayPeriod] (DepartmentID, DepartmentCode, AccountID, AccountCode, FiscalYearID, FiscalYearCode, PayPeriodID, PayPeriodCode, TimeClassID, TimeClassCode, Value, TransactionID)
select
DepartmentID,
DepartmentCode,
AccountID,
AccountCode,
FiscalYearID,
FiscalYearCode,
PayPeriodID,
PayPeriodCode,
TimeClassID,
TimeClassCode,
sum(value),
TransactionID
from
#TEMPSTATISTICS
group by
DepartmentID,
DepartmentCode,
AccountID,
AccountCode,
FiscalYearID,
FiscalYearCode,
PayPeriodID,
PayPeriodCode,
TimeClassID,
TimeClassCode,
TransactionID
alter index all on [int].[FactStatisticsbyPayPeriod] REBUILD WITH (FILLFACTOR=80)
update statistics [int].[FactStatisticsbyPayPeriod] WITH FULLSCAN
/******** Update record in IntTransaction **********/
--TODO: Make the way it inserts to the IntTranaction much better
GO
---------------------------------------------
-- fw.procUpdateClientReportSectionAttributeFilter_PayPeriod
--Proc to set section attribute filter for Pay Periods--------------------------
CREATE PROC [fw].[procUpdateClientReportSectionAttributeFilter_PayPeriod]
@TopCount int,
@MaxPayPeriodID int,
@ClientReportSectionAttributeGUID uniqueidentifier
AS
BEGIN
CREATE TABLE #TempPeriods (PayPeriodID smallint, PayPeriodCode nvarchar(8))
INSERT INTO #TempPeriods (PayPeriodID, PayPeriodCode)
SELECT TOP (@TopCount)
PayPeriodID, PayPeriodCode
FROM [fw].[DimPayPeriod]
WHERE PayPeriodID <= @MaxPayPeriodID
ORDER BY PayPeriodID DESC
DECLARE @FilterMember nvarchar(100)
SET @FilterMember = (
SELECT STUFF((
select ','+ PayPeriodCode
from #TempPeriods
order by PayPeriodID asc
FOR XML PATH('')
)
,1,1,'') AS SortOrder
)
UPDATE [dbo].[REClientReportSectionAttribute]
SET FilterMemberCSV=@FilterMember, SortOrderValue='-1'
WHERE ClientReportSectionAttributeGUID = @ClientReportSectionAttributeGUID
DROP TABLE #TempPeriods
END
GO
---------------------------------------------
-- fw.procUpdateDataStudio20ViewYearStructure
CREATE procedure [fw].[procUpdateDataStudio20ViewYearStructure]
(
@FrameworkSchema Nvarchar(10) = 'sp',
@YearShift int = 1,
@isExecuting bit = 0
--Schema= 'sp' or 'ob' (select SchemaName from fw.dimframework), YearShift #of Years to rollforward (positive integer) / back (negative integer), isExecuting 0 = print sql 1 = exec sql
)
AS
/************************************************************
** Author: blewis
** Create Date: 2015-01-23
** Description: Rolls SP / OB DS2.0 Views forward and backward
** Last Modified: 2015-01-23
** GM Release: 2015.2
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
**
*************************************************************/
DECLARE TableEditorConfigGUID CURSOR FOR
select distinct st.TableEditorConfigGUID
from [dbo].[ScoreTableEditorConfig] st
inner join [dbo].[ScoreComposite] sc on st.DataSourceGUID=sc.CompositeGUID
inner join [dbo].[ScoreTableEditorColumn] ec on st.TableEditorConfigGUID=ec.TableEditorConfigGUID
inner join [fw].[DimFramework] fw on fw.FrameworkID=sc.FrameworkID
where fw.FrameworkSchemaName=@FrameworkSchema and ec.Type=2
Declare @TableEditorConfig Nvarchar(200)
open TableEditorConfigGUID
FETCH NEXT FROM TableEditorConfigGUID
INTO @TableEditorConfig
WHILE (@@FETCH_STATUS = 0)
BEGIN
Declare @DSViewName Nvarchar(400) = (select '--' + FriendlyName from [dbo].[ScoreTableEditorConfig] where TableEditorConfigGUID=@TableEditorConfig)
Print''
Print'-------------------------------------------------------------------------------------------------------------------------------------------'
PRINT '--' + @DSViewName
PRINT '--'''+@TableEditorConfig+''' -TableEditorConfigGuid'
Print'-------------------------------------------------------------------------------------------------------------------------------------------'
DECLARE @sqli varchar(max)
DECLARE @TableEditorFirstColumnGuid Nvarchar(200) =
(select TableEditorColumnGUID
from [dbo].[ScoreTableEditorColumn]
where TableEditorConfigGUID=@TableEditorConfig and DisplayOrder=
(select Min(DisplayOrder)
from [dbo].[ScoreTableEditorColumn]
where Type=2 and TableEditorConfigGUID=@TableEditorConfig))
DECLARE @XML Nvarchar(MAX) = (Select Cast(MetaData as nvarchar(max)) from [dbo].[ScoreTableEditorColumn] where TableEditorColumnGUID=@TableEditorFirstColumnGuid)
DECLARE @Start int = (select CharIndex('FISCAL_YEARFiscalYearID',@XML) + Len('FISCAL_YEARFiscalYearID')+1)
DECLARE @FiscalYear NvarChar(4) = Substring(@XML,@Start,4)
IF IsNull(
(Select Case When CharIndex('.', @FiscalYear) > 0
Then Case When Convert(int, ParseName(@FiscalYear, 1)) <> 0
Then 0
Else 1
End
Else 1
End
Where IsNumeric(@FiscalYear + 'e0') = 1), 0) = 1 Begin
DECLARE TableEditorColumns CURSOR FOR
select TableEditorColumnGUID
from [dbo].[ScoreTableEditorColumn] e
where e.TableEditorConfigGUID=@TableEditorConfig and e.Type=2
order by e.DisplayOrder
Declare @TableEditorCol Nvarchar(200)
open TableEditorColumns
FETCH NEXT FROM TableEditorColumns
INTO @TableEditorCol
WHILE (@@FETCH_STATUS = 0)
BEGIN TRY
SET @sqli =
'Update [dbo].[ScoreTableEditorColumn] set DisplayName=Replace(DisplayName,'+Cast(@FiscalYear as Nvarchar(4))+','+Cast((@FiscalYear + @YearShift) as Nvarchar(4))+'), MetaData = Replace(Cast(Metadata as Nvarchar(max)),' + Cast(@FiscalYear as Nvarchar(4)) + ','+ Cast((@FiscalYear + @YearShift) as Nvarchar(4))+') where TableEditorColumnGUID=''' + @TableEditorCol +''''
SET @FiscalYear= (Select @FiscalYear + 1)
if @isExecuting = 1 begin
exec(@sqli)
end else begin
print @sqli
end
FETCH NEXT FROM TableEditorColumns INTO @TableEditorCol
END TRY
Begin Catch
PRINT '--Error'
PRINT @sqli
PRINT '''' + @TableEditorCol +'''' +'--ErrorColumnGUID'
PRINT ''
End Catch
CLOSE TableEditorColumns
DEALLOCATE TableEditorColumns
SET @sqli =
'Update [dbo].[ScoreTableEditorFilter]
set HierarchyPath = Replace(HierarchyPath,Cast(RIGHT(HierarchyPath,4)as INT),Cast(RIGHT(HierarchyPath,4)as INT)+' + Cast(@YearShift as Nvarchar(4)) + '),
FriendlyName=Replace(FriendlyName,Cast(RIGHT(FriendlyName,4)as INT),Cast(RIGHT(FriendlyName,4)as INT)+' + Cast(@YearShift as Nvarchar(4)) + ')
where TableEditorConfigGUID='''+@TableEditorConfig+''' and KeyGUID=''84f7adb1-e680-4a23-b1ea-638120fbeadb'''
if @isExecuting = 1 begin
exec(@sqli)
end else begin
print @sqli
end
End
FETCH NEXT FROM TableEditorConfigGUID INTO @TableEditorConfig
END
CLOSE TableEditorConfigGUID
DEALLOCATE TableEditorConfigGUID
GO
---------------------------------------------
-- fw.procUpdateMinimumStaffingFlexPayrollSampledDaily
CREATE PROCEDURE [fw].[procUpdateMinimumStaffingFlexPayrollSampledDaily]
@fiscalYearID smallint = 0,
@onePayPeriodOnlyDate datetime = null
AS
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2022-08-05 BS JAZZ-41378 Daily Flexing - Payroll Minimum Staffing
************************************************************
*/
IF OBJECT_ID('tempdb..#inputPayPeriods') IS NOT NULL DROP TABLE #inputPayPeriods
SELECT fp.PayPeriodID, COUNT(*) AS RecordsCount, 0 AS BatchID INTO #inputPayPeriods
FROM fw.FactPayrollSampledDaily fp
INNER JOIN pi.MinimumStaffingFlex ms ON fp.DepartmentID = ms.DepartmentID AND fp.JobCodeID = ms.JobCodeID AND fp.PayCodeGroupID = ms.PayCodeGroupID
INNER JOIN fw.DimPayPeriod pp ON fp.PayPeriodID = pp.PayPeriodID
WHERE fp.TimeClassID = 4 AND fp.Hours < ms.Hours AND
((@onePayPeriodOnlyDate IS NOT NULL AND @onePayPeriodOnlyDate BETWEEN pp.PeriodStartCalendarDate AND pp.PeriodEndCalendarDate)
OR
(@onePayPeriodOnlyDate IS NULL AND (pp.FiscalYearIDSecond = @fiscalYearID OR @fiscalYearID = 0)))
GROUP BY fp.PayPeriodID
DECLARE @BatchSize INT = 30000000
-- Split data into batches
WHILE EXISTS (SELECT TOP 1 1 FROM #inputPayPeriods WHERE BatchID = 0)
BEGIN
;WITH PayPeriodInfo AS
(
SELECT DM.PayPeriodID, ROW_NUMBER() OVER (ORDER BY DM.PayPeriodID) AS RowNumber, SUM(RecordsCount) OVER (ORDER BY DM.PayPeriodID) AS Total, M.MaxBatchID+1 AS BatchID
FROM #inputPayPeriods IPP
INNER JOIN fw.DimPayPeriod DM ON DM.PayPeriodID = IPP.PayPeriodID
CROSS JOIN (SELECT MAX(BatchID) AS MaxBatchID FROM #inputPayPeriods) M
WHERE IPP.BatchID = 0
)
UPDATE IPP
SET IPP.BatchID = MI.BatchID
FROM #inputPayPeriods IPP
INNER JOIN PayPeriodInfo MI ON MI.PayPeriodID = IPP.PayPeriodID
WHERE MI.Total <= @BatchSize OR MI.RowNumber = 1
END
DECLARE @BatchID INT, @MaxBatchID INT
SELECT @MaxBatchID = MAX(BatchID) FROM #inputPayPeriods
-- Loop thru batches and insert data
SET @BatchID = 1
WHILE @BatchID <= @MaxBatchID
BEGIN
UPDATE fp
SET
Hours = h.Hours
FROM
fw.FactPayrollSampledDaily fp
INNER JOIN pi.MinimumStaffingFlex h ON fp.DepartmentID = h.DepartmentID AND fp.JobCodeID = h.JobCodeID AND fp.PayCodeGroupID = h.PayCodeGroupID
INNER JOIN #inputPayPeriods IPP ON IPP.PayPeriodID = fp.PayPeriodID
WHERE fp.TimeClassID = 4 AND IPP.BatchID = @BatchID AND fp.Hours < h.Hours
SET @BatchID = @BatchID + 1
END
GO
---------------------------------------------
-- fw.procUpdateMinimumStaffingFlexPayrollSampledPayPeriod
CREATE PROCEDURE [fw].[procUpdateMinimumStaffingFlexPayrollSampledPayPeriod]
@fiscalYearID smallint = 0
AS
/*
**************************************************************
** Change History
**************************************************************
** CID Date Author WI Description
** 1 2020-10-27 HV JAZZ-8174 PR | Minimum Staffing Flex
************************************************************
*/
;WITH PayPeriodHours AS
(
SELECT fp.DepartmentID, fp.JobCodeID, fp.PayCodeGroupID, fp.PayPeriodID, fp.TimeClassID, ms.Hours * pc.PeriodDays AS PayPeriodHours
FROM fw.FactPayrollSampledPayPeriod fp
INNER JOIN pi.MinimumStaffingFlex ms ON fp.DepartmentID = ms.DepartmentID AND fp.JobCodeID = ms.JobCodeID AND fp.PayCodeGroupID = ms.PayCodeGroupID
INNER JOIN fw.DimPayPeriod pp ON fp.PayPeriodID = pp.PayPeriodID
INNER JOIN fw.DimPayCycle pc ON pc.PayCycleID = pp.PayCycleID
WHERE fp.TimeClassID = 4 AND (pp.FiscalYearIDSecond = @fiscalYearID OR @fiscalYearID = 0)
)
UPDATE fp
SET
Hours = h.PayPeriodHours
FROM
fw.FactPayrollSampledPayPeriod fp
INNER JOIN PayPeriodHours h ON fp.DepartmentID = h.DepartmentID AND fp.JobCodeID = h.JobCodeID AND fp.PayCodeGroupID = h.PayCodeGroupID AND fp.PayPeriodID = h.PayPeriodID AND fp.TimeClassID = h.TimeClassID
WHERE fp.Hours < h.PayPeriodHours
GO
---------------------------------------------
-- fw.procValidateClientSchema
CREATE proc fw.procValidateClientSchema as
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'DepartmentCode'
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'AccountCode'
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'FiscalYearID'
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'FiscalMonthCode'
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'TimeClassCode'
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'Dollars'
exec procValidateColumnsExists 'client', 'viewFactGLImport', 'Units'
/*
create view client.viewFactStatisticImportMonthly as
select
DepartmentCode,
AccountCode,
FiscalYearID,
FiscalMonthCode,
TimeClassCode,
Amount
from
client.FactStatisticImportMonthly
*/
exec procValidateColumnsExists 'client', 'viewFactStatisticImportMonthly', 'DepartmentCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportMonthly', 'AccountCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportMonthly', 'FiscalYearID'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportMonthly', 'FiscalMonthCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportMonthly', 'TimeClassCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportMonthly', 'Amount'
/*
create view client.viewFactStatisticImportPayPeriod as
select
DepartmentCode,
AccountCode,
PayPeriodCode,
TimeClassCode,
ChargeCode,
PayCode,
FiscalYearID,
FiscalMonthCode,
Amount
from
client.FactStatisticImportPayPeriod
*/
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'DepartmentCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'AccountCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'PayPeriodCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'TimeClassCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'ChargeCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'PayCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'FiscalYearID'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'FiscalMonthCode'
exec procValidateColumnsExists 'client', 'viewFactStatisticImportPayPeriod', 'Amount'
/*
create view client.viewFactPayrollImport as
select
DepartmentCode,
JobCode,
PayCode,
PayPeriodCode,
TimeClassCode,
Hours,
Dollars
from
client.FactPayrollImport
*/
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'DepartmentCode'
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'JobCode'
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'PayCode'
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'PayPeriodCode'
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'TimeClassCode'
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'Hours'
exec procValidateColumnsExists 'client', 'viewFactPayrollImport', 'Dollars'
GO
---------------------------------------------
---------------------------------------------
-- FUNCTIONS
---------------------------------------------
-- fw.GetCurrentDataPayPeriodID
CREATE FUNCTION [fw].[GetCurrentDataPayPeriodID]()
RETURNS smallint
AS
BEGIN
declare @currentPayPeriod int;
declare @currentPayPeriodStr nvarchar(4000);
set @currentPayPeriodStr = (
select setting from dbsetting where name = 'Current_Payroll_PayPeriodID'
)
if ((@currentPayPeriodStr = '') or (@currentPayPeriodStr is null))
set @currentPayPeriod = 0
else
set @currentPayPeriod = ( select cast(@currentPayPeriodStr as int))
return @currentPayPeriod
END
GO
---------------------------------------------
-- fw.GetCurrentGLMonthID
CREATE FUNCTION [fw].[GetCurrentGLMonthID]()
RETURNS int
AS
BEGIN
declare @currentMonth int;
declare @currentMonthStr nvarchar(4000);
set @currentMonthStr = (
select setting from dbsetting where name = 'Current_GL_MonthID'
)
if ((@currentMonthStr = '') or (@currentMonthStr is null))
set @currentMonth = 0
else
set @currentMonth = ( select cast(@currentMonthStr as int))
return @currentMonth
END
GO
---------------------------------------------
-- fw.GetCurrentGLYearID
CREATE FUNCTION [fw].[GetCurrentGLYearID]()
RETURNS int
AS
BEGIN
declare @currentYear int;
declare @currentYearStr nvarchar(4000);
set @currentYearStr = (
select setting from dbsetting where name = 'Current_GL_YearID'
)
if ((@currentYearStr = '') or (@currentYearStr is null))
set @currentYear = 0
else
set @currentYear = ( select cast(@currentYearStr as int))
return @currentYear
END
GO
---------------------------------------------
-- fw.GetCurrentPayPeriodID
CREATE FUNCTION [fw].[GetCurrentPayPeriodID]()
RETURNS smallint
AS
BEGIN
declare @Today datetime;
set @Today = GETDATE();
declare @CurrentPayPeriod smallint;
select @CurrentPayPeriod = PayPeriodID from fw.DimPayPeriod
where
@Today > PeriodStartCalendarDate
and
@Today < PeriodEndCalendarDate
order by PeriodStartCalendarDate DESC
if (@CurrentPayPeriod is null)
set @CurrentPayPeriod = 0;
return @CurrentPayPeriod
END
GO
---------------------------------------------
-- fw.GetPayPeriodSamplingYear
/***************************************************************
** CID Date Author WI Description
** 1 2018-09-11 kzhuk D-07649 PR Daily custom action calls procedures for wrong year
**************************************************************/
CREATE FUNCTION [fw].[GetPayPeriodSamplingYear](@fiscalYearID int, @isCalcDaily bit)
RETURNS int
AS
BEGIN
declare @previousDay DATE = DATEADD(DAY,-1,CAST(GETDATE() as DATE))
declare @yearOfSampling int = CASE WHEN @isCalcDaily = 0 then @fiscalYearID else (SELECT MAX(FiscalYearIDSecond)
FROM fw.dimPayPeriod WHERE DATEADD(DAY,-1,CAST(GETDATE() as DATE)) BETWEEN PeriodStartCalendarDate and @previousDay) END
/*
@isCalcDaily = 0 & @fiscalYearID int = 0 == > @yearOfSampling = 0
@isCalcDaily = 1 & @fiscalYearID int = 0 == > @yearOfSampling = 'CalendarYear'
@isCalcDaily = 1 & @fiscalYearID int = '1234' == > @yearOfSampling = 'CalendarYear'
@isCalcDaily = 0 & @fiscalYearID int = '1234' == > @yearOfSampling = '1234'
*/
RETURN @yearOfSampling
END
GO
---------------------------------------------
-- fw.GetUserRoleAssignmentCSV
CREATE FUNCTION [fw].[GetUserRoleAssignmentCSV] (
@LootID nvarchar(200),
@RoleID int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @csv NVARCHAR(MAX)
SET @csv = ''
DECLARE @count int
SET @count = 0
declare crsCursor CURSOR LOCAL FAST_FORWARD FOR
select distinct
UP.NameFull
from
S3RoleAssignment RA (readuncommitted)
inner join S3IdentityLink IL (readuncommitted)
on RA.IdentityGUID = IL.GroupingGUID
inner join UserProfile UP (readuncommitted)
on IL.MemberGUID = UP.UserGUID
where
RA.RoleID = @RoleID
and RA.LootGroupID = @LootID
order by NameFull
open crsCursor;
DECLARE @NameFull nvarchar(100)
FETCH NEXT FROM crsCursor into @NameFull
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@count = 0) BEGIN
select @csv = @csv + @NameFull
END ELSE BEGIN
select @csv = @csv + '; ' + @NameFull
END
set @count = @count +1
FETCH NEXT FROM crsCursor into @NameFull
END
close crsCursor;
DEALLOCATE crsCursor;
RETURN @csv
END
GO
---------------------------------------------
-- fw.GetYTDDaysInMonth
CREATE FUNCTION [fw].[GetYTDDaysInMonth](@monthID int)
RETURNS int
AS
BEGIN
declare @sortOrder int = (select sortOrder from fw.dimfiscalmonth where FiscalMonthID = @monthID)
declare @ytdDays int = (select sum(DaysInMonth) from fw.dimfiscalmonth where sortorder <= @sortOrder)
return @ytdDays
END
GO
---------------------------------------------