fwstealer
asked on
add new fields to script
so i've inherited a script that is driving me nuts as i can see where to add two new fields. i added them to the desired table but this scripts is a job that drops and recreates the table and as a result my two new columns disappear after the script runs. i tried adding in certain areas but it fails
--current script and i need to add the following to the msaccess.register table:
--StatusType nvarchar(35) null
--MonthlyHoursBasedFee money null
SET QUERY_GOVERNOR_COST_LIMIT 0
declare @endDate as datetime
Set @endDate = CAST(getdate() as date)
If Object_Id('tempdb..#Regist er') is Not Null
Drop table #Register
Select DISTINCT
StatusDate
, ContractType
, ContractName
, AnnualAllocatedHours
, TotalHours
, MonthlyHoursBasedFee
, StatusType
, [Address]
, City
, PostalCode
, StateAbbreviation
, IATACode3
, RegisterID
, ContractID
, EntityID
, EntityKeyID
, ApplicableDate
, HoursValue
, CreditValue
, MoneyValue
, RegisterTypeLookupID
, RegisterType
, [Description]
, ExpirationDate
, DateCreated
, CreatedByUserID
, CreatedBy
, IsEstimated
, ItemTypeID
, FutureHours
, FutureCredit
, MonthHours
, MonthCredits
, DisplayName
, REGION
, IssueID
, StartDates
, EndDates
, StatusTypeID
into #Register
From
(
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, R.ApplicableDate
, R.HoursValue
, R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, R.[Description]
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL','IN', 'KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM')THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK)INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND R.ApplicableDate > @EndDate))
UNION ALL
/* Get the Usage line items */
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, ISNULL(F.FlightID, L.LegID) AS RegisterID
, L.ContractID
,EntityID = CASE WHEN F.FlightID IS NOT NULL THEN 16 ELSE 13 END
,ISNULL(F.FlightID, L.LegID) as EntityKeyID
, ApplicableDate =
Cast(ISNULL(F.DepartureTim e, ASTRO.dbo.fn_GetUtcDateTim e(L.Depart ureTime))a s date)
, - ISNULL(F.ContractBaseHours , CASE WHEN F.FlightID IS NOT NULL THEN DATEDIFF(mi, F.DepartureTime, F.ArrivalTime) / 60.0
WHEN L.UseCredits = 0 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS HoursValue
, - ISNULL(F.ContractCreditHou rs, CASE WHEN F.FlightID IS NOT NULL THEN DATEDIFF(mi, F.DepartureTime, F.ArrivalTime) / 60.0
WHEN L.UseCredits = 1 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS CreditsValue
, 0 AS MoneyValue
, 0 AS RegisterTypeLookupID
, 'Usage' AS RegisterType
, 'Trip # ' + T .TripNumber + '; ' + CASE WHEN F.FlightID IS NOT NULL THEN 'Flight: ' + F.Itinerary ELSE 'Leg: ' + O.AirportICAOCode + ' -> ' + D .AirportICAOCode END AS [Description]
, NULL AS ExpirationDate
, ISNULL(F.DateCreated, L.DateCreated) AS DateCreated
, NULL AS CreatedByUserID
, NULL AS CreatedBy
, CASE WHEN F.FlightID IS NOT NULL THEN F.IsEstimated ELSE 1 END AS IsEstimated
, 1 AS ItemTypeID
, /*FlightUsage*/
(CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractBaseHours ,
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END)
ELSE 0 END) AS FutureHours
, FutureCredit = (CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractCreditHou rs,
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthHours = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractBaseHours ,
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthCredits = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractCreditHou rs,
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, 'N/A' AS DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN','KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM') THEN 'Western'
ELSE 'Other' END)
, IssueID =(SELECT Max(IssueID) FROM ASTRO.dbo.tm_Issues I WHERE T .TripID = I.EntityKeyID)
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Legs L with(NOLOCK) INNER JOIN ASTRO.dbo.tm_Contracts C with(NOLOCK) ON L.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID INNER JOIN
ASTRO.dbo.tm_Trips T with(NOLOCK) ON L.TripID = T .TripID INNER JOIN
ASTRO.dbo.tl_Airports O with(NOLOCK) ON L.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON L.DestinationAirportID = D .AirportID LEFT OUTER JOIN
(SELECT /* FlightUsage: */
FLT.ArrivalTime
, FLT.FlightID
, FLT.LegID
, FLT.DepartureTime
, ContractBaseHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractBaseHours ELSE CASE WHEN LG.UseCredits = 0 THEN ROUND(DATEDIFF(mi,FLT.Depa rtureTime, FLT.ArrivalTime) / 60.0, 1) ELSE 0 END END
, ContractCreditHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractCreditHours ELSE CASE WHEN LG.UseCredits = 1 THEN ROUND(DATEDIFF(mi,FLT.Depa rtureTime, FLT.ArrivalTime) / 60.0, 1) ELSE 0 END END
, FLT.DateCreated
, O.AirportICAOCode + ' -> ' + D .AirportICAOCode AS Itinerary
, IsEstimated = CASE WHEN FLT.StatusTypeID = 44 THEN 0 ELSE 1 END
FROM ASTRO.dbo.tm_Flights FLT with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Airports O with(NOLOCK) ON FLT.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON FLT.DestinationAirportID = D .AirportID INNER JOIN
ASTRO.dbo.tm_Legs LG with(NOLOCK) ON FLT.LegID = LG.LegID
WHERE IsIncluded = 1
) F ON L.LegID = F.LegID
WHERE
L.StatusTypeID <> 13
AND T.StatusTypeID <> 13
AND (F.FlightID IS NOT NULL OR T.StatusTypeID IN (10,120))
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND ISNULL(F.DepartureTime, ASTRO.dbo.fn_GetUtcDateTim e(L.Depart ureTime)) > @EndDate))
UNION ALL
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, ApplicableDate = dateadd(second, - 1, CONVERT(datetime,R.Expirat ionDate))
, R.HoursValue
, CreditValue = - R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, [Description] = 'Credit Expiration'
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN', 'KY')THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA') THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK','TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO') THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ','NM') THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
R.ExpirationDate is not NULL
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND C.StatusDate > @EndDate))
)a
CREATE CLUSTERED INDEX IX_Register
ON #Register
(ContractID,ApplicableDate )
If Object_Id('tempdb..#Regist er2') is Not Null
Drop table #Register2
Create Table #Register2(StatusDate datetime,ContractType varchar(50) ,ContractName varchar(128),AnnualAllocat edHours int,TotalHours decimal(10,2),
MonthlyHoursBasedFee money,StatusType varchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),StateAbbreviat ion varchar(50),
IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,HoursValue decimal(10,2),CreditValue decimal(10,2),
CreditsRemain decimal(10,2),MoneyValue decimal(10,2),RegisterType LookupID int,RegisterType varchar(100),[Description] varchar(max),ExpirationDat e datetime,
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit decimal(10,2),MonthHours decimal(10,2),
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
DECLARE
@StatusDate datetime,@ContractType varchar(50),@ContractName varchar(128),@AnnualAlloca tedHours int,@TotalHours decimal(10,2),
@MonthlyHoursBasedFee money,@StatusType varchar(35),@Address varchar(100),@City varchar(50),@PostalCode varchar(10),@StateAbbrevia tion varchar(50),
@IATACode3 varchar(5),@RegisterID int,@ContractIDs int,@EntityID int,@EntityKeyID int,@ApplicableDate date,@HoursValue decimal(10,2),@CreditValue decimal(10,2),
@MoneyValue decimal(10,2),@RegisterTyp eLookupID int,@RegisterType varchar(100),@Description varchar(max),@ExpirationDa te datetime,@DateCreated datetime,
@CreatedByUserID int,@CreatedBy varchar(255),@IsEstimated int,@ItemTypeID int,@FutureHours decimal(10,2),@FutureCredi t decimal(10,2),@MonthHours decimal(10,2),
@MonthCredits decimal(10,2),@DisplayName varchar(255),@REGION varchar(50),@IssueID int,@StartDates datetime,@EndDates datetime
,@cv1 decimal(10,2)
,@cv2 decimal(10,2)
,@cv3 decimal(10,2)
,@pci int
DECLARE c1 CURSOR FOR
Select StatusDate,ContractType,Co ntractName ,AnnualAll ocatedHour s,TotalHou rs,Monthly HoursBased Fee,Status Type,[Addr ess],City, PostalCode ,StateAbbr eviation,I ATACode3,R egisterID, ContractID ,
EntityID,EntityKeyID,Appli cableDate, HoursValue ,
CreditValue,
MoneyValue,RegisterTypeLoo kupID,Regi sterType,[ Descriptio n],Expirat ionDate,Da teCreated, CreatedByU serID,Crea tedBy,IsEs timated,It emTypeID,F utureHours ,FutureCre dit,MonthH ours,Month Credits,
DisplayName,REGION,IssueID ,StartDate s,EndDates
from #Register
Where
ApplicableDate <= @EndDate AND ISNULL([Description],'') <> 'Credit Expiration'
Order by contractid,ApplicableDate, RegisterID ,DateCreat ed
OPEN c1
FETCH Next FROM c1 INTO @StatusDate,@ContractType, @ContractN ame,@Annua lAllocated Hours,@Tot alHours,@M onthlyHour sBasedFee, @StatusTyp e,@Address ,@City,@Po stalCode,@ StateAbbre viation,
@IATACode3,@RegisterID,@Co ntractIDs, @EntityID, @EntityKey ID,@Applic ableDate,@ HoursValue ,@CreditVa lue,@Money Value,@Reg isterTypeL ookupID,@R egisterTyp e,@Descrip tion,@Expi rationDate ,@DateCrea ted,
@CreatedByUserID,@CreatedB y,@IsEstim ated,@Item TypeID,@Fu tureHours, @FutureCre dit,@Month Hours,@Mon thCredits, @DisplayNa me,@REGION ,@IssueID, @StartDate s,@EndDate s
WHILE @@FETCH_STATUS = 0
BEGIN
IF @pci <> @ContractIds
Begin
Set @cv1 = 0
Set @cv2 = 0
End
Set @cv1 = @CreditValue
Set @cv2 = ISNULL(@cv1,0)+ISNULL(@cv2 ,0)
Insert Into #Register2(StatusDate,Cont ractType,C ontractNam e,AnnualAl locatedHou rs,TotalHo urs,Monthl yHoursBase dFee,Statu sType,[Add ress],
City,PostalCode,StateAbbre viation,IA TACode3,Re gisterID,C ontractID, EntityID,E ntityKeyID ,Applicabl eDate,Hour sValue,Cre ditValue,C reditsRema in,
MoneyValue,RegisterTypeLoo kupID,Regi sterType,[ Descriptio n],Expirat ionDate,Da teCreated, CreatedByU serID,Crea tedBy,IsEs timated,It emTypeID,
FutureHours,FutureCredit,M onthHours, MonthCredi ts,Display Name,REGIO N,IssueID, StartDates ,EndDates)
Select @StatusDate,@ContractType, @ContractN ame,@Annua lAllocated Hours,@Tot alHours,@M onthlyHour sBasedFee, @StatusTyp e,
@Address,@City,@PostalCode ,@StateAbb reviation, @IATACode3 ,@Register ID,@Contra ctIDs,@Ent ityID,@Ent ityKeyID,@ Applicable Date,
@HoursValue,@CreditValue,@ cv2,@Money Value,@Reg isterTypeL ookupID,@R egisterTyp e,@Descrip tion,@Expi rationDate ,
@DateCreated,@CreatedByUse rID,@Creat edBy,@IsEs timated,@I temTypeID, @FutureHou rs,@Future Credit,@Mo nthHours,@ MonthCredi ts,@Displa yName,@REG ION,@Issue ID,@StartD ates,@EndD ates
SET @pci = @ContractIds
FETCH Next FROM c1 INTO @StatusDate,@ContractType, @ContractN ame,@Annua lAllocated Hours,@Tot alHours,@M onthlyHour sBasedFee, @StatusTyp e,
@Address,@City,@PostalCode ,@StateAbb reviation, @IATACode3 ,@Register ID,@Contra ctIDs,@Ent ityID,@Ent ityKeyID,@ Applicable Date,@Hour sValue,
@CreditValue,@MoneyValue,@ RegisterTy peLookupID ,@Register Type,@Desc ription,@E xpirationD ate,@DateC reated,@Cr eatedByUse rID,@Creat edBy,
@IsEstimated,@ItemTypeID,@ FutureHour s,@FutureC redit,@Mon thHours,@M onthCredit s,@Display Name,@REGI ON,@IssueI D,@StartDa tes,@EndDa tes
END
CLOSE c1
DEALLOCATE c1
CREATE CLUSTERED INDEX IX_Register
ON #Register2
(ContractID,ApplicableDate )
If Object_Id('tempdb..#Regist er3') is Not Null
Drop table #Register3
Create Table #Register3(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat edHours int,
TotalHours decimal(10,2),MonthlyHours BasedFee money,StatusType varchar(35),[Address] varchar(100),City varchar(50),
PostalCode varchar(10),StateAbbreviat ion varchar(50),IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,
ApplicableDate datetime2,HoursValue decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai n decimal(10,2),
MoneyValue decimal(10,2),RegisterType LookupID int,RegisterType varchar(100),[Description] varchar(max),ExpirationDat e datetime,
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),
FutureCredit decimal(10,2),MonthHours decimal(10,2),MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
DECLARE
@StatusDate3 datetime,@ContractType3 varchar(50),@ContractName3 varchar(128),@AnnualAlloca tedHours3 int,@TotalHours3 int,
@MonthlyHoursBasedFee3 money,@StatusType3 varchar(35),@Address3 varchar(100),@City3 varchar(50),@PostalCode3 varchar(10),
@StateAbbreviation3 varchar(50),@IATACode33 varchar(5),@RegisterID3 int,@ContractIDs3 int,@EntityID3 int,@EntityKeyID3 int,
@ApplicableDate3 date,@HoursValue3 decimal(10,2),@CreditValue 3 decimal(10,2),@CreditsRema in3 decimal(10,2),@MoneyValue3 decimal(10,2),
@RegisterTypeLookupID3 int,@RegisterType3 varchar(100),@Description3 varchar(max),@ExpirationDa te3 datetime,@DateCreated3 datetime,
@CreatedByUserID3 int,@CreatedBy3 varchar(255),@IsEstimated3 int,@ItemTypeID3 int,@FutureHours3 decimal(10,2),
@FutureCredit3 decimal(10,2),@MonthHours3 decimal(10,2),@MonthCredit s3 decimal(10,2),@DisplayName 3 varchar(255),
@REGION3 varchar(50),@IssueID3 int,@StartDates3 datetime,@EndDates3 datetime
,@hv13 decimal(10,2)
,@hv23 decimal(10,2)
,@hv33 decimal(10,2)
,@pci3 int
,@pad3 datetime
DECLARE c3 CURSOR FOR
Select StatusDate,ContractType,Co ntractName ,AnnualAll ocatedHour s,TotalHou rs,Monthly HoursBased Fee,
StatusType,[Address],City, PostalCode ,StateAbbr eviation,I ATACode3,R egisterID, ContractID ,EntityID, EntityKeyI D,Applicab leDate,Hou rsValue,
CreditValue,CreditsRemain,
MoneyValue,RegisterTypeLoo kupID,Regi sterType,[ Descriptio n],Expirat ionDate,Da teCreated, CreatedByU serID,
CreatedBy,IsEstimated,Item TypeID,Fut ureHours,F utureCredi t,MonthHou rs,MonthCr edits,Disp layName,RE GION,Issue ID,StartDa tes,EndDat es
from #Register2
Where
ApplicableDate <= @EndDate
Order by contractid,ApplicableDate, RegisterID ,DateCreat ed
OPEN c3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType 3,@Contrac tName3,@An nualAlloca tedHours3, @TotalHour s3,@Monthl yHoursBase dFee3,
@StatusType3,@Address3,@Ci ty3,@Posta lCode3,@St ateAbbrevi ation3,@IA TACode33,@ RegisterID 3,@Contrac tIDs3,@Ent ityID3,@En tityKeyID3 ,
@ApplicableDate3,@HoursVal ue3,@Credi tValue3,@C reditsRema in3,@Money Value3,@Re gisterType LookupID3, @RegisterT ype3,@Desc ription3,
@ExpirationDate3,@DateCrea ted3,@Crea tedByUserI D3,@Create dBy3,@IsEs timated3,@ ItemTypeID 3,@FutureH ours3,@Fut ureCredit3 ,
@MonthHours3,@MonthCredits 3,@Display Name3,@REG ION3,@Issu eID3,@Star tDates3,@E ndDates3
WHILE @@FETCH_STATUS = 0
BEGIN
Set @hv13 = @HoursValue3
IF @pci3 <> @ContractIds3
Begin
Set @hv23 = 0
End
IF @RegisterTypeLookupID3 <> 265
Begin
SET @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01') <> @ApplicableDate3
Begin
set @hv23 = @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01') = @ApplicableDate3
Begin
set @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) < 0
Begin
set @hv23 = (@hv23 + ABS(@hv23)) + @hv13
End
Insert Into #Register3(StatusDate,Cont ractType,C ontractNam e,AnnualAl locatedHou rs,TotalHo urs,Monthl yHoursBase dFee,Statu sType,[Add ress],City ,
PostalCode,StateAbbreviati on,IATACod e3,Registe rID,Contra ctID,Entit yID,Entity KeyID,Appl icableDate ,HoursValu e,HrsRemai nYr,Credit Value,
CreditsRemain,MoneyValue,R egisterTyp eLookupID, RegisterTy pe,[Descri ption],Exp irationDat e,DateCrea ted,Create dByUserID, CreatedBy,
IsEstimated,ItemTypeID,Fut ureHours,F utureCredi t,MonthHou rs,MonthCr edits,Disp layName,RE GION,Issue ID,StartDa tes,EndDat es)
Select @StatusDate3,@ContractType 3,@Contrac tName3,@An nualAlloca tedHours3, @TotalHour s3,@Monthl yHoursBase dFee3,@Sta tusType3,@ Address3,
@City3,@PostalCode3,@State Abbreviati on3,@IATAC ode33,@Reg isterID3,@ ContractID s3,@Entity ID3,@Entit yKeyID3,@A pplicableD ate3,@Hour sValue3,@h v23,
@CreditValue3,@CreditsRema in3,@Money Value3,@Re gisterType LookupID3, @RegisterT ype3,@Desc ription3,@ Expiration Date3,@Dat eCreated3,
@CreatedByUserID3,@Created By3,@IsEst imated3,@I temTypeID3 ,@FutureHo urs3,@Futu reCredit3, @MonthHour s3,@MonthC redits3,@D isplayName 3,@REGION3 ,@IssueID3 ,@StartDat es3,@EndDa tes3
SET @pci3 = @ContractIds3
SET @pad3 = @ApplicableDate3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType 3,@Contrac tName3,@An nualAlloca tedHours3, @TotalHour s3,
@MonthlyHoursBasedFee3,@St atusType3, @Address3, @City3,@Po stalCode3, @StateAbbr eviation3, @IATACode3 3,
@RegisterID3,@ContractIDs3 ,@EntityID 3,@EntityK eyID3,@App licableDat e3,@HoursV alue3,@Cre ditValue3, @CreditsRe main3,
@MoneyValue3,@RegisterType LookupID3, @RegisterT ype3,@Desc ription3,@ Expiration Date3,@Dat eCreated3,
@CreatedByUserID3,@Created By3,@IsEst imated3,@I temTypeID3 ,@FutureHo urs3,@Futu reCredit3, @MonthHour s3,
@MonthCredits3,@DisplayNam e3,@REGION 3,@IssueID 3,@StartDa tes3,@EndD ates3
END
CLOSE c3
DEALLOCATE c3
-------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
If Object_Id('tempdb..#Regist er3b') is Not Null
Drop table #Register3b
Create Table #Register3b(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat edHours int,TotalHours decimal(10,2),
MonthlyHoursBasedFee money,StatusType varchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),
StateAbbreviation varchar(50),IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai n decimal(10,2),
MoneyValue decimal(10,2),RegisterType LookupID int,RegisterType varchar(100),[Description] varchar(max),ExpirationDat e datetime,DateCreated datetime,
CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit decimal(10,2),MonthHours decimal(10,2),
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
Insert Into #Register3b(StatusDate,Con tractType, ContractNa me,AnnualA llocatedHo urs,TotalH ours,Month lyHoursBas edFee,Stat usType,
[Address],City,PostalCode, StateAbbre viation,IA TACode3,Re gisterID,C ontractID, EntityID,E ntityKeyID ,Applicabl eDate,Hour sValue,Hrs Remain,
HrsRemainYr,CreditValue,Cr editsRemai n,MoneyVal ue,Registe rTypeLooku pID,Regist erType,[De scription] ,Expiratio nDate,Date Created,
CreatedByUserID,CreatedBy, IsEstimate d,ItemType ID,FutureH ours,Futur eCredit,Mo nthHours,M onthCredit s,DisplayN ame,REGION ,IssueID,S tartDates, EndDates)
Select
StatusDate,ContractType,Co ntractName ,AnnualAll ocatedHour s,TotalHou rs,Monthly HoursBased Fee,Status Type,[Addr ess],City, PostalCode ,StateAbbr eviation,
IATACode3,RegisterID,Contr actID,Enti tyID,Entit yKeyID,App licableDat e,HoursVal ue,HrsRema in = 0, HrsRemainYr,CreditValue,Cr editsRemai n,MoneyVal ue,
RegisterTypeLookupID,Regis terType,[D escription ],Expirati onDate,Dat eCreated,C reatedByUs erID,Creat edBy,IsEst imated,Ite mTypeID,Fu tureHours,
FutureCredit,MonthHours,Mo nthCredits ,DisplayNa me,REGION, IssueID,St artDates,E ndDates
from #Register3
UPDATE b
SET HrsRemain = a.HrsRemain
FROM
(SELECT
SUM(HoursValue) as HrsRemain
,ContractID
,ContractName
FROM
#Register3b
Group by
ContractID,ContractName)a inner join #Register3b b on a.ContractID = b.ContractID
If Object_Id('tempdb..#Regist er4') is Not Null
Drop table #Register4
Create Table #Register4(EntityKeyID int,RegisterType varchar(100),RegisterID int,ContractType varchar(50),ContractID int,
ContractName varchar(128),AnniversaryDa te datetime,ApplicableDate datetime,DateCreated datetime,StartDates datetime,EndDates datetime,
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai n decimal(10,2),[RANK] int)
Insert Into #Register4(EntityKeyID,Reg isterType, RegisterID ,ContractT ype,Contra ctID,Contr actName,An niversaryD ate,Applic ableDate,
StartDates,EndDates,HoursV alue,HrsRe main,HrsRe mainYr,Cre ditValue,C reditsRema in,[RANK])
Select DISTINCT
r.EntityKeyID
,r.RegisterType
,r.RegisterID
,r.ContractType
,r.ContractID
,ContractName = LTRIM(RTRIM(Replace(r.Cont ractName,' *','')))
,AnniversaryDate = dateadd(year,1,r.StartDate s)
,r.ApplicableDate
,r.StartDates
,r.EndDates
,r.HoursValue
,r.HrsRemain
,r.HrsRemainYr
,r.CreditValue
,r.CreditsRemain
, DENSE_RANK () OVER
(PARTITION BY r.ContractID ORDER BY
r.contractid,r.ApplicableD ate,r.Regi sterID,r.D ateCreated )AS 'RANK'
from #Register3b r
Where
r.ApplicableDate < CAST(@EndDate as date)
order by r.ContractID,10
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
SELECT
hrs.ContractType
,hrs.ContractID
,hrs.ContractName
,hrs.AnniversaryDate
,HoursValue
,HrsRemain= ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,hrs.StartDates
,hrs.EndDates
,hrs.ReportRunDate
,FraxLeaseMonthsLftContrac tYr = CASE WHEN hrs.ContractType in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) END
ELSE 0 END
,CardMonthsLftContractYr = CASE WHEN hrs.ContractType NOT in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. EndDates,g etdate())/ 30.0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. EndDates,g etdate())/ 30.0),1) END
ELSE 0 END
,EstMthlyUsage = ROUND(hrs.HrsRemainYr / CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) END,1)
,ContractLastYr = CASE WHEN ABS(DATEDIFF(dd,hrs.EndDat es,getdate ())) <365 THEN 1 ELSE
0 END
into MSAccess.dbo.Register
FROM
(Select
ContractID
, Max([RANK]) as [RANK]
from #Register4
Group by
ContractID ) ra inner join
(Select
ContractType
,ContractID
,ContractName
,AnniversaryDate
,HoursValue
,HrsRemain = ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,[RANK]
,StartDates
,EndDates
,ReportRunDate = @EndDate
from #Register4)hrs on ra.ContractID = hrs.ContractID AND ra.[RANK] = hrs.[RANK]
Order by
hrs.HrsRemainYr,hrs.Contra ctID
--current script and i need to add the following to the msaccess.register table:
--StatusType nvarchar(35) null
--MonthlyHoursBasedFee money null
SET QUERY_GOVERNOR_COST_LIMIT 0
declare @endDate as datetime
Set @endDate = CAST(getdate() as date)
If Object_Id('tempdb..#Regist
Drop table #Register
Select DISTINCT
StatusDate
, ContractType
, ContractName
, AnnualAllocatedHours
, TotalHours
, MonthlyHoursBasedFee
, StatusType
, [Address]
, City
, PostalCode
, StateAbbreviation
, IATACode3
, RegisterID
, ContractID
, EntityID
, EntityKeyID
, ApplicableDate
, HoursValue
, CreditValue
, MoneyValue
, RegisterTypeLookupID
, RegisterType
, [Description]
, ExpirationDate
, DateCreated
, CreatedByUserID
, CreatedBy
, IsEstimated
, ItemTypeID
, FutureHours
, FutureCredit
, MonthHours
, MonthCredits
, DisplayName
, REGION
, IssueID
, StartDates
, EndDates
, StatusTypeID
into #Register
From
(
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, R.ApplicableDate
, R.HoursValue
, R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, R.[Description]
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL','IN', 'KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM')THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK)INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND R.ApplicableDate > @EndDate))
UNION ALL
/* Get the Usage line items */
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, ISNULL(F.FlightID, L.LegID) AS RegisterID
, L.ContractID
,EntityID = CASE WHEN F.FlightID IS NOT NULL THEN 16 ELSE 13 END
,ISNULL(F.FlightID, L.LegID) as EntityKeyID
, ApplicableDate =
Cast(ISNULL(F.DepartureTim
, - ISNULL(F.ContractBaseHours
WHEN L.UseCredits = 0 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS HoursValue
, - ISNULL(F.ContractCreditHou
WHEN L.UseCredits = 1 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS CreditsValue
, 0 AS MoneyValue
, 0 AS RegisterTypeLookupID
, 'Usage' AS RegisterType
, 'Trip # ' + T .TripNumber + '; ' + CASE WHEN F.FlightID IS NOT NULL THEN 'Flight: ' + F.Itinerary ELSE 'Leg: ' + O.AirportICAOCode + ' -> ' + D .AirportICAOCode END AS [Description]
, NULL AS ExpirationDate
, ISNULL(F.DateCreated, L.DateCreated) AS DateCreated
, NULL AS CreatedByUserID
, NULL AS CreatedBy
, CASE WHEN F.FlightID IS NOT NULL THEN F.IsEstimated ELSE 1 END AS IsEstimated
, 1 AS ItemTypeID
, /*FlightUsage*/
(CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractBaseHours
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END)
ELSE 0 END) AS FutureHours
, FutureCredit = (CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractCreditHou
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthHours = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractBaseHours
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthCredits = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractCreditHou
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, 'N/A' AS DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN','KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM') THEN 'Western'
ELSE 'Other' END)
, IssueID =(SELECT Max(IssueID) FROM ASTRO.dbo.tm_Issues I WHERE T .TripID = I.EntityKeyID)
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Legs L with(NOLOCK) INNER JOIN ASTRO.dbo.tm_Contracts C with(NOLOCK) ON L.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID INNER JOIN
ASTRO.dbo.tm_Trips T with(NOLOCK) ON L.TripID = T .TripID INNER JOIN
ASTRO.dbo.tl_Airports O with(NOLOCK) ON L.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON L.DestinationAirportID = D .AirportID LEFT OUTER JOIN
(SELECT /* FlightUsage: */
FLT.ArrivalTime
, FLT.FlightID
, FLT.LegID
, FLT.DepartureTime
, ContractBaseHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractBaseHours ELSE CASE WHEN LG.UseCredits = 0 THEN ROUND(DATEDIFF(mi,FLT.Depa
, ContractCreditHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractCreditHours ELSE CASE WHEN LG.UseCredits = 1 THEN ROUND(DATEDIFF(mi,FLT.Depa
, FLT.DateCreated
, O.AirportICAOCode + ' -> ' + D .AirportICAOCode AS Itinerary
, IsEstimated = CASE WHEN FLT.StatusTypeID = 44 THEN 0 ELSE 1 END
FROM ASTRO.dbo.tm_Flights FLT with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Airports O with(NOLOCK) ON FLT.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON FLT.DestinationAirportID = D .AirportID INNER JOIN
ASTRO.dbo.tm_Legs LG with(NOLOCK) ON FLT.LegID = LG.LegID
WHERE IsIncluded = 1
) F ON L.LegID = F.LegID
WHERE
L.StatusTypeID <> 13
AND T.StatusTypeID <> 13
AND (F.FlightID IS NOT NULL OR T.StatusTypeID IN (10,120))
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND ISNULL(F.DepartureTime, ASTRO.dbo.fn_GetUtcDateTim
UNION ALL
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, ApplicableDate = dateadd(second, - 1, CONVERT(datetime,R.Expirat
, R.HoursValue
, CreditValue = - R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, [Description] = 'Credit Expiration'
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN', 'KY')THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA') THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK','TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO') THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ','NM') THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
R.ExpirationDate is not NULL
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND C.StatusDate > @EndDate))
)a
CREATE CLUSTERED INDEX IX_Register
ON #Register
(ContractID,ApplicableDate
If Object_Id('tempdb..#Regist
Drop table #Register2
Create Table #Register2(StatusDate datetime,ContractType varchar(50) ,ContractName varchar(128),AnnualAllocat
MonthlyHoursBasedFee money,StatusType varchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),StateAbbreviat
IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,HoursValue decimal(10,2),CreditValue decimal(10,2),
CreditsRemain decimal(10,2),MoneyValue decimal(10,2),RegisterType
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
DECLARE
@StatusDate datetime,@ContractType varchar(50),@ContractName varchar(128),@AnnualAlloca
@MonthlyHoursBasedFee money,@StatusType varchar(35),@Address varchar(100),@City varchar(50),@PostalCode varchar(10),@StateAbbrevia
@IATACode3 varchar(5),@RegisterID int,@ContractIDs int,@EntityID int,@EntityKeyID int,@ApplicableDate date,@HoursValue decimal(10,2),@CreditValue
@MoneyValue decimal(10,2),@RegisterTyp
@CreatedByUserID int,@CreatedBy varchar(255),@IsEstimated int,@ItemTypeID int,@FutureHours decimal(10,2),@FutureCredi
@MonthCredits decimal(10,2),@DisplayName
,@cv1 decimal(10,2)
,@cv2 decimal(10,2)
,@cv3 decimal(10,2)
,@pci int
DECLARE c1 CURSOR FOR
Select StatusDate,ContractType,Co
EntityID,EntityKeyID,Appli
CreditValue,
MoneyValue,RegisterTypeLoo
DisplayName,REGION,IssueID
from #Register
Where
ApplicableDate <= @EndDate AND ISNULL([Description],'') <> 'Credit Expiration'
Order by contractid,ApplicableDate,
OPEN c1
FETCH Next FROM c1 INTO @StatusDate,@ContractType,
@IATACode3,@RegisterID,@Co
@CreatedByUserID,@CreatedB
WHILE @@FETCH_STATUS = 0
BEGIN
IF @pci <> @ContractIds
Begin
Set @cv1 = 0
Set @cv2 = 0
End
Set @cv1 = @CreditValue
Set @cv2 = ISNULL(@cv1,0)+ISNULL(@cv2
Insert Into #Register2(StatusDate,Cont
City,PostalCode,StateAbbre
MoneyValue,RegisterTypeLoo
FutureHours,FutureCredit,M
Select @StatusDate,@ContractType,
@Address,@City,@PostalCode
@HoursValue,@CreditValue,@
@DateCreated,@CreatedByUse
SET @pci = @ContractIds
FETCH Next FROM c1 INTO @StatusDate,@ContractType,
@Address,@City,@PostalCode
@CreditValue,@MoneyValue,@
@IsEstimated,@ItemTypeID,@
END
CLOSE c1
DEALLOCATE c1
CREATE CLUSTERED INDEX IX_Register
ON #Register2
(ContractID,ApplicableDate
If Object_Id('tempdb..#Regist
Drop table #Register3
Create Table #Register3(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat
TotalHours decimal(10,2),MonthlyHours
PostalCode varchar(10),StateAbbreviat
ApplicableDate datetime2,HoursValue decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai
MoneyValue decimal(10,2),RegisterType
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),
FutureCredit decimal(10,2),MonthHours decimal(10,2),MonthCredits
DECLARE
@StatusDate3 datetime,@ContractType3 varchar(50),@ContractName3
@MonthlyHoursBasedFee3 money,@StatusType3 varchar(35),@Address3 varchar(100),@City3 varchar(50),@PostalCode3 varchar(10),
@StateAbbreviation3 varchar(50),@IATACode33 varchar(5),@RegisterID3 int,@ContractIDs3 int,@EntityID3 int,@EntityKeyID3 int,
@ApplicableDate3 date,@HoursValue3 decimal(10,2),@CreditValue
@RegisterTypeLookupID3 int,@RegisterType3 varchar(100),@Description3
@CreatedByUserID3 int,@CreatedBy3 varchar(255),@IsEstimated3
@FutureCredit3 decimal(10,2),@MonthHours3
@REGION3 varchar(50),@IssueID3 int,@StartDates3 datetime,@EndDates3 datetime
,@hv13 decimal(10,2)
,@hv23 decimal(10,2)
,@hv33 decimal(10,2)
,@pci3 int
,@pad3 datetime
DECLARE c3 CURSOR FOR
Select StatusDate,ContractType,Co
StatusType,[Address],City,
CreditValue,CreditsRemain,
MoneyValue,RegisterTypeLoo
CreatedBy,IsEstimated,Item
from #Register2
Where
ApplicableDate <= @EndDate
Order by contractid,ApplicableDate,
OPEN c3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType
@StatusType3,@Address3,@Ci
@ApplicableDate3,@HoursVal
@ExpirationDate3,@DateCrea
@MonthHours3,@MonthCredits
WHILE @@FETCH_STATUS = 0
BEGIN
Set @hv13 = @HoursValue3
IF @pci3 <> @ContractIds3
Begin
Set @hv23 = 0
End
IF @RegisterTypeLookupID3 <> 265
Begin
SET @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01')
Begin
set @hv23 = @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01')
Begin
set @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) < 0
Begin
set @hv23 = (@hv23 + ABS(@hv23)) + @hv13
End
Insert Into #Register3(StatusDate,Cont
PostalCode,StateAbbreviati
CreditsRemain,MoneyValue,R
IsEstimated,ItemTypeID,Fut
Select @StatusDate3,@ContractType
@City3,@PostalCode3,@State
@CreditValue3,@CreditsRema
@CreatedByUserID3,@Created
SET @pci3 = @ContractIds3
SET @pad3 = @ApplicableDate3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType
@MonthlyHoursBasedFee3,@St
@RegisterID3,@ContractIDs3
@MoneyValue3,@RegisterType
@CreatedByUserID3,@Created
@MonthCredits3,@DisplayNam
END
CLOSE c3
DEALLOCATE c3
--------------------------
If Object_Id('tempdb..#Regist
Drop table #Register3b
Create Table #Register3b(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat
MonthlyHoursBasedFee money,StatusType varchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),
StateAbbreviation varchar(50),IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai
MoneyValue decimal(10,2),RegisterType
CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
Insert Into #Register3b(StatusDate,Con
[Address],City,PostalCode,
HrsRemainYr,CreditValue,Cr
CreatedByUserID,CreatedBy,
Select
StatusDate,ContractType,Co
IATACode3,RegisterID,Contr
RegisterTypeLookupID,Regis
FutureCredit,MonthHours,Mo
from #Register3
UPDATE b
SET HrsRemain = a.HrsRemain
FROM
(SELECT
SUM(HoursValue) as HrsRemain
,ContractID
,ContractName
FROM
#Register3b
Group by
ContractID,ContractName)a inner join #Register3b b on a.ContractID = b.ContractID
If Object_Id('tempdb..#Regist
Drop table #Register4
Create Table #Register4(EntityKeyID int,RegisterType varchar(100),RegisterID int,ContractType varchar(50),ContractID int,
ContractName varchar(128),AnniversaryDa
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai
Insert Into #Register4(EntityKeyID,Reg
StartDates,EndDates,HoursV
Select DISTINCT
r.EntityKeyID
,r.RegisterType
,r.RegisterID
,r.ContractType
,r.ContractID
,ContractName = LTRIM(RTRIM(Replace(r.Cont
,AnniversaryDate = dateadd(year,1,r.StartDate
,r.ApplicableDate
,r.StartDates
,r.EndDates
,r.HoursValue
,r.HrsRemain
,r.HrsRemainYr
,r.CreditValue
,r.CreditsRemain
, DENSE_RANK () OVER
(PARTITION BY r.ContractID ORDER BY
r.contractid,r.ApplicableD
from #Register3b r
Where
r.ApplicableDate < CAST(@EndDate as date)
order by r.ContractID,10
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
SELECT
hrs.ContractType
,hrs.ContractID
,hrs.ContractName
,hrs.AnniversaryDate
,HoursValue
,HrsRemain= ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,hrs.StartDates
,hrs.EndDates
,hrs.ReportRunDate
,FraxLeaseMonthsLftContrac
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
ELSE 0 END
,CardMonthsLftContractYr = CASE WHEN hrs.ContractType NOT in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
ELSE 0 END
,EstMthlyUsage = ROUND(hrs.HrsRemainYr / CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
,ContractLastYr = CASE WHEN ABS(DATEDIFF(dd,hrs.EndDat
0 END
into MSAccess.dbo.Register
FROM
(Select
ContractID
, Max([RANK]) as [RANK]
from #Register4
Group by
ContractID ) ra inner join
(Select
ContractType
,ContractID
,ContractName
,AnniversaryDate
,HoursValue
,HrsRemain = ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,[RANK]
,StartDates
,EndDates
,ReportRunDate = @EndDate
from #Register4)hrs on ra.ContractID = hrs.ContractID AND ra.[RANK] = hrs.[RANK]
Order by
hrs.HrsRemainYr,hrs.Contra
First there is no msaccess.register table in the script you provided but #register temp table and my guess is that yo must add the columns in EACH select of the UNION ALL subquery and obviously in the one that sits on the top of all those selects and inserts INTO #register table.
ASKER
okay so i did something like that and below is the updated script - but it errors.
SET QUERY_GOVERNOR_COST_LIMIT 0
declare @endDate as datetime
Set @endDate = CAST(getdate() as date)
If Object_Id('tempdb..#Regist er') is Not Null
Drop table #Register
Select DISTINCT
StatusDate
, ContractType
, ContractName
, AnnualAllocatedHours
, TotalHours
, MonthlyHoursBasedFee
, StatusType
, [Address]
, City
, PostalCode
, StateAbbreviation
, IATACode3
, RegisterID
, ContractID
, EntityID
, EntityKeyID
, ApplicableDate
, HoursValue
, CreditValue
, MoneyValue
, RegisterTypeLookupID
, RegisterType
, [Description]
, ExpirationDate
, DateCreated
, CreatedByUserID
, CreatedBy
, IsEstimated
, ItemTypeID
, FutureHours
, FutureCredit
, MonthHours
, MonthCredits
, DisplayName
, REGION
, IssueID
, StartDates
, EndDates
, StatusTypeID
into #Register
From
(
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, R.ApplicableDate
, R.HoursValue
, R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, R.[Description]
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL','IN', 'KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM')THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK)INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND R.ApplicableDate > @EndDate))
UNION ALL
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, ISNULL(F.FlightID, L.LegID) AS RegisterID
, L.ContractID
,EntityID = CASE WHEN F.FlightID IS NOT NULL THEN 16 ELSE 13 END
,ISNULL(F.FlightID, L.LegID) as EntityKeyID
, ApplicableDate =
Cast(ISNULL(F.DepartureTim e, ASTRO.dbo.fn_GetUtcDateTim e(L.Depart ureTime))a s date)
, - ISNULL(F.ContractBaseHours , CASE WHEN F.FlightID IS NOT NULL THEN DATEDIFF(mi, F.DepartureTime, F.ArrivalTime) / 60.0
WHEN L.UseCredits = 0 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS HoursValue
, - ISNULL(F.ContractCreditHou rs, CASE WHEN F.FlightID IS NOT NULL THEN DATEDIFF(mi, F.DepartureTime, F.ArrivalTime) / 60.0
WHEN L.UseCredits = 1 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS CreditsValue
, 0 AS MoneyValue
, 0 AS RegisterTypeLookupID
, 'Usage' AS RegisterType
, 'Trip # ' + T .TripNumber + '; ' + CASE WHEN F.FlightID IS NOT NULL THEN 'Flight: ' + F.Itinerary ELSE 'Leg: ' + O.AirportICAOCode + ' -> ' + D .AirportICAOCode END AS [Description]
, NULL AS ExpirationDate
, ISNULL(F.DateCreated, L.DateCreated) AS DateCreated
, NULL AS CreatedByUserID
, NULL AS CreatedBy
, CASE WHEN F.FlightID IS NOT NULL THEN F.IsEstimated ELSE 1 END AS IsEstimated
, 1 AS ItemTypeID
, /*FlightUsage*/
(CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractBaseHours ,
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END)
ELSE 0 END) AS FutureHours
, FutureCredit = (CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractCreditHou rs,
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthHours = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractBaseHours ,
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthCredits = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractCreditHou rs,
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, 'N/A' AS DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN','KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM') THEN 'Western'
ELSE 'Other' END)
, IssueID =(SELECT Max(IssueID) FROM ASTRO.dbo.tm_Issues I WHERE T .TripID = I.EntityKeyID)
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Legs L with(NOLOCK) INNER JOIN ASTRO.dbo.tm_Contracts C with(NOLOCK) ON L.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID INNER JOIN
ASTRO.dbo.tm_Trips T with(NOLOCK) ON L.TripID = T .TripID INNER JOIN
ASTRO.dbo.tl_Airports O with(NOLOCK) ON L.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON L.DestinationAirportID = D .AirportID LEFT OUTER JOIN
(SELECT /* FlightUsage: */
FLT.ArrivalTime
, FLT.FlightID
, FLT.LegID
, FLT.DepartureTime
, ContractBaseHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractBaseHours ELSE CASE WHEN LG.UseCredits = 0 THEN ROUND(DATEDIFF(mi,FLT.Depa rtureTime, FLT.ArrivalTime) / 60.0, 1) ELSE 0 END END
, ContractCreditHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractCreditHours ELSE CASE WHEN LG.UseCredits = 1 THEN ROUND(DATEDIFF(mi,FLT.Depa rtureTime, FLT.ArrivalTime) / 60.0, 1) ELSE 0 END END
, FLT.DateCreated
, O.AirportICAOCode + ' -> ' + D .AirportICAOCode AS Itinerary
, IsEstimated = CASE WHEN FLT.StatusTypeID = 44 THEN 0 ELSE 1 END
FROM ASTRO.dbo.tm_Flights FLT with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Airports O with(NOLOCK) ON FLT.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON FLT.DestinationAirportID = D .AirportID INNER JOIN
ASTRO.dbo.tm_Legs LG with(NOLOCK) ON FLT.LegID = LG.LegID
WHERE IsIncluded = 1
) F ON L.LegID = F.LegID
WHERE
L.StatusTypeID <> 13
AND T.StatusTypeID <> 13
AND (F.FlightID IS NOT NULL OR T.StatusTypeID IN (10,120))
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND ISNULL(F.DepartureTime, ASTRO.dbo.fn_GetUtcDateTim e(L.Depart ureTime)) > @EndDate))
UNION ALL
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, ApplicableDate = dateadd(second, - 1, CONVERT(datetime,R.Expirat ionDate))
, R.HoursValue
, CreditValue = - R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, [Description] = 'Credit Expiration'
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN', 'KY')THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA') THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK','TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO') THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ','NM') THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
R.ExpirationDate is not NULL
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND C.StatusDate > @EndDate))
)a
CREATE CLUSTERED INDEX IX_Register
ON #Register
(ContractID,ApplicableDate )
If Object_Id('tempdb..#Regist er2') is Not Null
Drop table #Register2
Create Table #Register2(StatusDate datetime,ContractType varchar(50) ,ContractName varchar(128),AnnualAllocat edHours int,TotalHours decimal(10,2),
MonthlyHoursBasedFee money,StatusType nvarchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),StateAbbreviat ion varchar(50),
IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,HoursValue decimal(10,2),CreditValue decimal(10,2),
CreditsRemain decimal(10,2),MoneyValue decimal(10,2),RegisterType LookupID int,RegisterType varchar(100),[Description] varchar(max),ExpirationDat e datetime,
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit decimal(10,2),MonthHours decimal(10,2),
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
DECLARE
@StatusDate datetime,@ContractType varchar(50),@ContractName varchar(128),@AnnualAlloca tedHours int,@TotalHours decimal(10,2),
@MonthlyHoursBasedFee money,@StatusType nvarchar(35),@Address varchar(100),@City varchar(50),@PostalCode varchar(10),@StateAbbrevia tion varchar(50),
@IATACode3 varchar(5),@RegisterID int,@ContractIDs int,@EntityID int,@EntityKeyID int,@ApplicableDate date,@HoursValue decimal(10,2),@CreditValue decimal(10,2),
@MoneyValue decimal(10,2),@RegisterTyp eLookupID int,@RegisterType varchar(100),@Description varchar(max),@ExpirationDa te datetime,@DateCreated datetime,
@CreatedByUserID int,@CreatedBy varchar(255),@IsEstimated int,@ItemTypeID int,@FutureHours decimal(10,2),@FutureCredi t decimal(10,2),@MonthHours decimal(10,2),
@MonthCredits decimal(10,2),@DisplayName varchar(255),@REGION varchar(50),@IssueID int,@StartDates datetime,@EndDates datetime
,@cv1 decimal(10,2)
,@cv2 decimal(10,2)
,@cv3 decimal(10,2)
,@pci int
DECLARE c1 CURSOR FOR
Select StatusDate,ContractType,Co ntractName ,AnnualAll ocatedHour s,TotalHou rs,Monthly HoursBased Fee,Status Type,[Addr ess],City, PostalCode ,StateAbbr eviation,I ATACode3,R egisterID, ContractID ,
EntityID,EntityKeyID,Appli cableDate, HoursValue ,
CreditValue,
MoneyValue,RegisterTypeLoo kupID,Regi sterType,[ Descriptio n],Expirat ionDate,Da teCreated, CreatedByU serID,Crea tedBy,IsEs timated,It emTypeID,F utureHours ,FutureCre dit,MonthH ours,Month Credits,
DisplayName,REGION,IssueID ,StartDate s,EndDates
from #Register
Where
ApplicableDate <= @EndDate AND ISNULL([Description],'') <> 'Credit Expiration'
Order by contractid,ApplicableDate, RegisterID ,DateCreat ed
OPEN c1
FETCH Next FROM c1 INTO @StatusDate,@ContractType, @ContractN ame,@Annua lAllocated Hours,@Tot alHours,@M onthlyHour sBasedFee, @StatusTyp e,@Address ,@City,@Po stalCode,@ StateAbbre viation,
@IATACode3,@RegisterID,@Co ntractIDs, @EntityID, @EntityKey ID,@Applic ableDate,@ HoursValue ,@CreditVa lue,@Money Value,@Reg isterTypeL ookupID,@R egisterTyp e,@Descrip tion,@Expi rationDate ,@DateCrea ted,
@CreatedByUserID,@CreatedB y,@IsEstim ated,@Item TypeID,@Fu tureHours, @FutureCre dit,@Month Hours,@Mon thCredits, @DisplayNa me,@REGION ,@IssueID, @StartDate s,@EndDate s
WHILE @@FETCH_STATUS = 0
BEGIN
IF @pci <> @ContractIds
Begin
Set @cv1 = 0
Set @cv2 = 0
End
Set @cv1 = @CreditValue
Set @cv2 = ISNULL(@cv1,0)+ISNULL(@cv2 ,0)
Insert Into #Register2(StatusDate,Cont ractType,C ontractNam e,AnnualAl locatedHou rs,TotalHo urs,Monthl yHoursBase dFee,Statu sType,[Add ress],
City,PostalCode,StateAbbre viation,IA TACode3,Re gisterID,C ontractID, EntityID,E ntityKeyID ,Applicabl eDate,Hour sValue,Cre ditValue,C reditsRema in,
MoneyValue,RegisterTypeLoo kupID,Regi sterType,[ Descriptio n],Expirat ionDate,Da teCreated, CreatedByU serID,Crea tedBy,IsEs timated,It emTypeID,
FutureHours,FutureCredit,M onthHours, MonthCredi ts,Display Name,REGIO N,IssueID, StartDates ,EndDates)
Select @StatusDate,@ContractType, @ContractN ame,@Annua lAllocated Hours,@Tot alHours,@M onthlyHour sBasedFee, @StatusTyp e,
@Address,@City,@PostalCode ,@StateAbb reviation, @IATACode3 ,@Register ID,@Contra ctIDs,@Ent ityID,@Ent ityKeyID,@ Applicable Date,
@HoursValue,@CreditValue,@ cv2,@Money Value,@Reg isterTypeL ookupID,@R egisterTyp e,@Descrip tion,@Expi rationDate ,
@DateCreated,@CreatedByUse rID,@Creat edBy,@IsEs timated,@I temTypeID, @FutureHou rs,@Future Credit,@Mo nthHours,@ MonthCredi ts,@Displa yName,@REG ION,@Issue ID,@StartD ates,@EndD ates
SET @pci = @ContractIds
FETCH Next FROM c1 INTO @StatusDate,@ContractType, @ContractN ame,@Annua lAllocated Hours,@Tot alHours,@M onthlyHour sBasedFee, @StatusTyp e,
@Address,@City,@PostalCode ,@StateAbb reviation, @IATACode3 ,@Register ID,@Contra ctIDs,@Ent ityID,@Ent ityKeyID,@ Applicable Date,@Hour sValue,
@CreditValue,@MoneyValue,@ RegisterTy peLookupID ,@Register Type,@Desc ription,@E xpirationD ate,@DateC reated,@Cr eatedByUse rID,@Creat edBy,
@IsEstimated,@ItemTypeID,@ FutureHour s,@FutureC redit,@Mon thHours,@M onthCredit s,@Display Name,@REGI ON,@IssueI D,@StartDa tes,@EndDa tes
END
CLOSE c1
DEALLOCATE c1
CREATE CLUSTERED INDEX IX_Register
ON #Register2
(ContractID,ApplicableDate )
If Object_Id('tempdb..#Regist er3') is Not Null
Drop table #Register3
Create Table #Register3(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat edHours int,
TotalHours decimal(10,2),MonthlyHours BasedFee money,StatusType nvarchar(35),[Address] varchar(100),City varchar(50),
PostalCode varchar(10),StateAbbreviat ion varchar(50),IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,
ApplicableDate datetime2,HoursValue decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai n decimal(10,2),
MoneyValue decimal(10,2),RegisterType LookupID int,RegisterType varchar(100),[Description] varchar(max),ExpirationDat e datetime,
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),
FutureCredit decimal(10,2),MonthHours decimal(10,2),MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
DECLARE
@StatusDate3 datetime,@ContractType3 varchar(50),@ContractName3 varchar(128),@AnnualAlloca tedHours3 int,@TotalHours3 int,
@MonthlyHoursBasedFee3 money,@StatusType3 nvarchar(35),@Address3 varchar(100),@City3 varchar(50),@PostalCode3 varchar(10),
@StateAbbreviation3 varchar(50),@IATACode33 varchar(5),@RegisterID3 int,@ContractIDs3 int,@EntityID3 int,@EntityKeyID3 int,
@ApplicableDate3 date,@HoursValue3 decimal(10,2),@CreditValue 3 decimal(10,2),@CreditsRema in3 decimal(10,2),@MoneyValue3 decimal(10,2),
@RegisterTypeLookupID3 int,@RegisterType3 varchar(100),@Description3 varchar(max),@ExpirationDa te3 datetime,@DateCreated3 datetime,
@CreatedByUserID3 int,@CreatedBy3 varchar(255),@IsEstimated3 int,@ItemTypeID3 int,@FutureHours3 decimal(10,2),
@FutureCredit3 decimal(10,2),@MonthHours3 decimal(10,2),@MonthCredit s3 decimal(10,2),@DisplayName 3 varchar(255),
@REGION3 varchar(50),@IssueID3 int,@StartDates3 datetime,@EndDates3 datetime
,@hv13 decimal(10,2)
,@hv23 decimal(10,2)
,@hv33 decimal(10,2)
,@pci3 int
,@pad3 datetime
DECLARE c3 CURSOR FOR
Select StatusDate,ContractType,Co ntractName ,AnnualAll ocatedHour s,TotalHou rs,Monthly HoursBased Fee,
StatusType,[Address],City, PostalCode ,StateAbbr eviation,I ATACode3,R egisterID, ContractID ,EntityID, EntityKeyI D,Applicab leDate,Hou rsValue,
CreditValue,CreditsRemain,
MoneyValue,RegisterTypeLoo kupID,Regi sterType,[ Descriptio n],Expirat ionDate,Da teCreated, CreatedByU serID,
CreatedBy,IsEstimated,Item TypeID,Fut ureHours,F utureCredi t,MonthHou rs,MonthCr edits,Disp layName,RE GION,Issue ID,StartDa tes,EndDat es
from #Register2
Where
ApplicableDate <= @EndDate
Order by contractid,ApplicableDate, RegisterID ,DateCreat ed
OPEN c3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType 3,@Contrac tName3,@An nualAlloca tedHours3, @TotalHour s3,@Monthl yHoursBase dFee3,
@StatusType3,@Address3,@Ci ty3,@Posta lCode3,@St ateAbbrevi ation3,@IA TACode33,@ RegisterID 3,@Contrac tIDs3,@Ent ityID3,@En tityKeyID3 ,
@ApplicableDate3,@HoursVal ue3,@Credi tValue3,@C reditsRema in3,@Money Value3,@Re gisterType LookupID3, @RegisterT ype3,@Desc ription3,
@ExpirationDate3,@DateCrea ted3,@Crea tedByUserI D3,@Create dBy3,@IsEs timated3,@ ItemTypeID 3,@FutureH ours3,@Fut ureCredit3 ,
@MonthHours3,@MonthCredits 3,@Display Name3,@REG ION3,@Issu eID3,@Star tDates3,@E ndDates3
WHILE @@FETCH_STATUS = 0
BEGIN
Set @hv13 = @HoursValue3
IF @pci3 <> @ContractIds3
Begin
Set @hv23 = 0
End
IF @RegisterTypeLookupID3 <> 265
Begin
SET @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01') <> @ApplicableDate3
Begin
set @hv23 = @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01') = @ApplicableDate3
Begin
set @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) < 0
Begin
set @hv23 = (@hv23 + ABS(@hv23)) + @hv13
End
Insert Into #Register3(StatusDate,Cont ractType,C ontractNam e,AnnualAl locatedHou rs,TotalHo urs,Monthl yHoursBase dFee,Statu sType,[Add ress],City ,
PostalCode,StateAbbreviati on,IATACod e3,Registe rID,Contra ctID,Entit yID,Entity KeyID,Appl icableDate ,HoursValu e,HrsRemai nYr,Credit Value,
CreditsRemain,MoneyValue,R egisterTyp eLookupID, RegisterTy pe,[Descri ption],Exp irationDat e,DateCrea ted,Create dByUserID, CreatedBy,
IsEstimated,ItemTypeID,Fut ureHours,F utureCredi t,MonthHou rs,MonthCr edits,Disp layName,RE GION,Issue ID,StartDa tes,EndDat es)
Select @StatusDate3,@ContractType 3,@Contrac tName3,@An nualAlloca tedHours3, @TotalHour s3,@Monthl yHoursBase dFee3,@Sta tusType3,@ Address3,
@City3,@PostalCode3,@State Abbreviati on3,@IATAC ode33,@Reg isterID3,@ ContractID s3,@Entity ID3,@Entit yKeyID3,@A pplicableD ate3,@Hour sValue3,@h v23,
@CreditValue3,@CreditsRema in3,@Money Value3,@Re gisterType LookupID3, @RegisterT ype3,@Desc ription3,@ Expiration Date3,@Dat eCreated3,
@CreatedByUserID3,@Created By3,@IsEst imated3,@I temTypeID3 ,@FutureHo urs3,@Futu reCredit3, @MonthHour s3,@MonthC redits3,@D isplayName 3,@REGION3 ,@IssueID3 ,@StartDat es3,@EndDa tes3
SET @pci3 = @ContractIds3
SET @pad3 = @ApplicableDate3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType 3,@Contrac tName3,@An nualAlloca tedHours3, @TotalHour s3,
@MonthlyHoursBasedFee3,@St atusType3, @Address3, @City3,@Po stalCode3, @StateAbbr eviation3, @IATACode3 3,
@RegisterID3,@ContractIDs3 ,@EntityID 3,@EntityK eyID3,@App licableDat e3,@HoursV alue3,@Cre ditValue3, @CreditsRe main3,
@MoneyValue3,@RegisterType LookupID3, @RegisterT ype3,@Desc ription3,@ Expiration Date3,@Dat eCreated3,
@CreatedByUserID3,@Created By3,@IsEst imated3,@I temTypeID3 ,@FutureHo urs3,@Futu reCredit3, @MonthHour s3,
@MonthCredits3,@DisplayNam e3,@REGION 3,@IssueID 3,@StartDa tes3,@EndD ates3
END
CLOSE c3
DEALLOCATE c3
If Object_Id('tempdb..#Regist er3b') is Not Null
Drop table #Register3b
Create Table #Register3b(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat edHours int,TotalHours decimal(10,2),
MonthlyHoursBasedFee money,StatusType nvarchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),
StateAbbreviation varchar(50),IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai n decimal(10,2),
MoneyValue decimal(10,2),RegisterType LookupID int,RegisterType varchar(100),[Description] varchar(max),ExpirationDat e datetime,DateCreated datetime,
CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit decimal(10,2),MonthHours decimal(10,2),
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
Insert Into #Register3b(StatusDate,Con tractType, ContractNa me,AnnualA llocatedHo urs,TotalH ours,Month lyHoursBas edFee,Stat usType,
[Address],City,PostalCode, StateAbbre viation,IA TACode3,Re gisterID,C ontractID, EntityID,E ntityKeyID ,Applicabl eDate,Hour sValue,Hrs Remain,
HrsRemainYr,CreditValue,Cr editsRemai n,MoneyVal ue,Registe rTypeLooku pID,Regist erType,[De scription] ,Expiratio nDate,Date Created,
CreatedByUserID,CreatedBy, IsEstimate d,ItemType ID,FutureH ours,Futur eCredit,Mo nthHours,M onthCredit s,DisplayN ame,REGION ,IssueID,S tartDates, EndDates)
Select
StatusDate,ContractType,Co ntractName ,AnnualAll ocatedHour s,TotalHou rs,Monthly HoursBased Fee,Status Type,[Addr ess],City, PostalCode ,StateAbbr eviation,
IATACode3,RegisterID,Contr actID,Enti tyID,Entit yKeyID,App licableDat e,HoursVal ue,HrsRema in = 0, HrsRemainYr,CreditValue,Cr editsRemai n,MoneyVal ue,
RegisterTypeLookupID,Regis terType,[D escription ],Expirati onDate,Dat eCreated,C reatedByUs erID,Creat edBy,IsEst imated,Ite mTypeID,Fu tureHours,
FutureCredit,MonthHours,Mo nthCredits ,DisplayNa me,REGION, IssueID,St artDates,E ndDates
from #Register3
UPDATE b
SET HrsRemain = a.HrsRemain
FROM
(SELECT
SUM(HoursValue) as HrsRemain
,ContractID
,ContractName
FROM
#Register3b
Group by
ContractID,ContractName)a inner join #Register3b b on a.ContractID = b.ContractID
If Object_Id('tempdb..#Regist er4') is Not Null
Drop table #Register4
Create Table #Register4(EntityKeyID int,RegisterType varchar(100),RegisterID int,ContractType varchar(50),ContractID int,
ContractName varchar(128),AnniversaryDa te datetime,ApplicableDate datetime,DateCreated datetime,StartDates datetime,EndDates datetime,
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai n decimal(10,2),
MonthlyHoursBasedFee money,StatusType nvarchar (35),[RANK] int)
Insert Into #Register4(EntityKeyID,Reg isterType, RegisterID ,ContractT ype,Contra ctID,Contr actName,An niversaryD ate,Applic ableDate,
StartDates,EndDates,HoursV alue,HrsRe main,HrsRe mainYr,Cre ditValue,C reditsRema in,Monthly HoursBased Fee,Status Type,[RANK ]) --************************ * errors here!
Select DISTINCT
r.EntityKeyID
,r.RegisterType
,r.RegisterID
,r.ContractType
,r.ContractID
,ContractName = LTRIM(RTRIM(Replace(r.Cont ractName,' *','')))
,AnniversaryDate = dateadd(year,1,r.StartDate s)
,r.ApplicableDate
,r.StartDates
,r.EndDates
,r.HoursValue
,r.HrsRemain
,r.HrsRemainYr
,r.CreditValue
,r.CreditsRemain
,r.MonthlyHoursBasedFee
,r.StatusType
, DENSE_RANK () OVER
(PARTITION BY r.ContractID ORDER BY
r.contractid,r.ApplicableD ate,r.Regi sterID,r.D ateCreated )AS 'RANK'
from #Register3b r
Where
r.ApplicableDate < CAST(@EndDate as date)
order by r.ContractID,10
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
SELECT
hrs.ContractType
,hrs.ContractID
,hrs.ContractName
,hrs.AnniversaryDate
,HoursValue
,HrsRemain= ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,hrs.StartDates
,hrs.EndDates
,hrs.ReportRunDate
,hrs.MonthlyHoursBasedFee
,hrs.StatusType
,FraxLeaseMonthsLftContrac tYr = CASE WHEN hrs.ContractType in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) END
ELSE 0 END
,CardMonthsLftContractYr = CASE WHEN hrs.ContractType NOT in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. EndDates,g etdate())/ 30.0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. EndDates,g etdate())/ 30.0),1) END
ELSE 0 END
,EstMthlyUsage = ROUND(hrs.HrsRemainYr / CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) END,1)
,ContractLastYr = CASE WHEN ABS(DATEDIFF(dd,hrs.EndDat es,getdate ())) <365 THEN 1 ELSE
0 END
into MSAccess.dbo.Register
FROM
(Select
ContractID
, Max([RANK]) as [RANK]
from #Register4
Group by
ContractID ) ra inner join
(Select
ContractType
,ContractID
,ContractName
,AnniversaryDate
,HoursValue
,HrsRemain = ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,[RANK]
,StartDates
,EndDates
,ReportRunDate = @EndDate
,StatusType
,MonthlyHoursBasedFee
from #Register4)hrs on ra.ContractID = hrs.ContractID AND ra.[RANK] = hrs.[RANK]
Order by
hrs.HrsRemainYr,hrs.Contra ctID
--Error: Cannot convert a char value to money. The char value has incorrect syntax.
SET QUERY_GOVERNOR_COST_LIMIT 0
declare @endDate as datetime
Set @endDate = CAST(getdate() as date)
If Object_Id('tempdb..#Regist
Drop table #Register
Select DISTINCT
StatusDate
, ContractType
, ContractName
, AnnualAllocatedHours
, TotalHours
, MonthlyHoursBasedFee
, StatusType
, [Address]
, City
, PostalCode
, StateAbbreviation
, IATACode3
, RegisterID
, ContractID
, EntityID
, EntityKeyID
, ApplicableDate
, HoursValue
, CreditValue
, MoneyValue
, RegisterTypeLookupID
, RegisterType
, [Description]
, ExpirationDate
, DateCreated
, CreatedByUserID
, CreatedBy
, IsEstimated
, ItemTypeID
, FutureHours
, FutureCredit
, MonthHours
, MonthCredits
, DisplayName
, REGION
, IssueID
, StartDates
, EndDates
, StatusTypeID
into #Register
From
(
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, R.ApplicableDate
, R.HoursValue
, R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, R.[Description]
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL','IN', 'KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM')THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK)INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND R.ApplicableDate > @EndDate))
UNION ALL
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, ISNULL(F.FlightID, L.LegID) AS RegisterID
, L.ContractID
,EntityID = CASE WHEN F.FlightID IS NOT NULL THEN 16 ELSE 13 END
,ISNULL(F.FlightID, L.LegID) as EntityKeyID
, ApplicableDate =
Cast(ISNULL(F.DepartureTim
, - ISNULL(F.ContractBaseHours
WHEN L.UseCredits = 0 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS HoursValue
, - ISNULL(F.ContractCreditHou
WHEN L.UseCredits = 1 AND F.FlightID IS NULL THEN DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0
ELSE 0 END) AS CreditsValue
, 0 AS MoneyValue
, 0 AS RegisterTypeLookupID
, 'Usage' AS RegisterType
, 'Trip # ' + T .TripNumber + '; ' + CASE WHEN F.FlightID IS NOT NULL THEN 'Flight: ' + F.Itinerary ELSE 'Leg: ' + O.AirportICAOCode + ' -> ' + D .AirportICAOCode END AS [Description]
, NULL AS ExpirationDate
, ISNULL(F.DateCreated, L.DateCreated) AS DateCreated
, NULL AS CreatedByUserID
, NULL AS CreatedBy
, CASE WHEN F.FlightID IS NOT NULL THEN F.IsEstimated ELSE 1 END AS IsEstimated
, 1 AS ItemTypeID
, /*FlightUsage*/
(CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractBaseHours
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END)
ELSE 0 END) AS FutureHours
, FutureCredit = (CASE WHEN F.FlightID IS NULL THEN ISNULL(F.ContractCreditHou
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthHours = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractBaseHours
CASE WHEN L.UseCredits = 0 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, MonthCredits = (CASE WHEN L.DepartureTime >= DateAdd(MONTH, - 1, GETDate()) AND L.DepartureTime <= GETDate() THEN ISNULL(F.ContractCreditHou
CASE WHEN L.UseCredits = 1 THEN ROUND(DATEDIFF(mi, L.DepartureTime, L.ArrivalTime) / 60.0, 1) ELSE 0 END) ELSE 0 END)
, 'N/A' AS DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN','KY') THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA')THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK', 'TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO')THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ', 'NM') THEN 'Western'
ELSE 'Other' END)
, IssueID =(SELECT Max(IssueID) FROM ASTRO.dbo.tm_Issues I WHERE T .TripID = I.EntityKeyID)
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Legs L with(NOLOCK) INNER JOIN ASTRO.dbo.tm_Contracts C with(NOLOCK) ON L.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID INNER JOIN
ASTRO.dbo.tm_Trips T with(NOLOCK) ON L.TripID = T .TripID INNER JOIN
ASTRO.dbo.tl_Airports O with(NOLOCK) ON L.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON L.DestinationAirportID = D .AirportID LEFT OUTER JOIN
(SELECT /* FlightUsage: */
FLT.ArrivalTime
, FLT.FlightID
, FLT.LegID
, FLT.DepartureTime
, ContractBaseHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractBaseHours ELSE CASE WHEN LG.UseCredits = 0 THEN ROUND(DATEDIFF(mi,FLT.Depa
, ContractCreditHours = CASE WHEN FLT.StatusTypeID = 44 THEN FLT.ContractCreditHours ELSE CASE WHEN LG.UseCredits = 1 THEN ROUND(DATEDIFF(mi,FLT.Depa
, FLT.DateCreated
, O.AirportICAOCode + ' -> ' + D .AirportICAOCode AS Itinerary
, IsEstimated = CASE WHEN FLT.StatusTypeID = 44 THEN 0 ELSE 1 END
FROM ASTRO.dbo.tm_Flights FLT with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Airports O with(NOLOCK) ON FLT.OriginAirportID = O.AirportID INNER JOIN
ASTRO.dbo.tl_Airports D with(NOLOCK) ON FLT.DestinationAirportID = D .AirportID INNER JOIN
ASTRO.dbo.tm_Legs LG with(NOLOCK) ON FLT.LegID = LG.LegID
WHERE IsIncluded = 1
) F ON L.LegID = F.LegID
WHERE
L.StatusTypeID <> 13
AND T.StatusTypeID <> 13
AND (F.FlightID IS NOT NULL OR T.StatusTypeID IN (10,120))
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND ISNULL(F.DepartureTime, ASTRO.dbo.fn_GetUtcDateTim
UNION ALL
SELECT
C.StatusDate
, C.ContractType
, C.ContractName
, C.AnnualAllocatedHours
, C.TotalHours
, C.MonthlyHoursBasedFee
, ST.StatusType
, C.[Address]
, C.City
, C.PostalCode
, S.StateAbbreviation
, CNTY.IATACode3
, R.RegisterID
, R.ContractID
, R.EntityID
, R.EntityKeyID
, ApplicableDate = dateadd(second, - 1, CONVERT(datetime,R.Expirat
, R.HoursValue
, CreditValue = - R.CreditValue
, R.MoneyValue
, R.RegisterTypeLookupID
, L.LookupValue AS RegisterType
, [Description] = 'Credit Expiration'
, R.ExpirationDate
, R.DateCreated
, R.CreatedByUserID
, U.DisplayName AS CreatedBy
, R.IsEstimated
, R.ItemTypeID
, 0 AS FutureHours
, 0 AS FutureCredit
, 0 AS MonthHours
, 0 AS MonthCredits
, U.DisplayName
, 'REGION' = (CASE WHEN S.StateAbbreviation IN ('ME', 'VT', 'NH', 'MA', 'CT', 'RI', 'NY', 'PA', 'NJ', 'DE', 'WV', 'VA', 'MD', 'MI', 'OH', 'IL', 'IN', 'KY')THEN 'Northeast'
WHEN S.StateAbbreviation IN ('FL', 'GA', 'NC', 'SC', 'AL', 'TN', 'AR', 'MS', 'LA') THEN 'Southeast'
WHEN S.StateAbbreviation IN ('OK','TX', 'ND', 'SD', 'NE', 'KS', 'IA', 'MN', 'WI', 'MO') THEN 'Central'
WHEN S.StateAbbreviation IN ('WA', 'OR', 'ID', 'MT', 'WY', 'UT', 'CO', 'NV', 'CA', 'AZ','NM') THEN 'Western'
ELSE 'Other' END)
, 0 AS IssueID
, StartDates = C.StartDate
, EndDates = C.EndDate
, C.StatusTypeID
FROM
ASTRO.dbo.tm_Register R with(NOLOCK) INNER JOIN ASTRO.dbo.tl_Lookups L with(NOLOCK) ON R.RegisterTypeLookupID = L.LookupID INNER JOIN
ASTRO.dbo.tm_Users U with(NOLOCK) ON R.CreatedByUserID = U.UserID INNER JOIN
ASTRO.dbo.tm_Contracts C with(NOLOCK) ON R.ContractID = C.ContractID INNER JOIN
ASTRO.dbo.ts_StatusTypes ST with(NOLOCK) ON C.StatusTypeID = ST.StatusTypeID LEFT OUTER JOIN
ASTRO.dbo.tl_States S with(NOLOCK) ON C.StateID = S.StateID LEFT OUTER JOIN
ASTRO.dbo.tl_Countries CNTY with(NOLOCK) ON C.CountryID = CNTY.CountryID
WHERE
R.ExpirationDate is not NULL
AND C.ContractName <> 'TEMPLATE'
AND NOT (C.ContractID IN (3, 656))
AND (C.StatusTypeID = 1
OR (C.StatusTypeID = 54 AND C.EndDate > @EndDate)
OR (C.StatusTypeID NOT IN (1,54) AND C.StatusDate > @EndDate))
)a
CREATE CLUSTERED INDEX IX_Register
ON #Register
(ContractID,ApplicableDate
If Object_Id('tempdb..#Regist
Drop table #Register2
Create Table #Register2(StatusDate datetime,ContractType varchar(50) ,ContractName varchar(128),AnnualAllocat
MonthlyHoursBasedFee money,StatusType nvarchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),StateAbbreviat
IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,HoursValue decimal(10,2),CreditValue decimal(10,2),
CreditsRemain decimal(10,2),MoneyValue decimal(10,2),RegisterType
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
DECLARE
@StatusDate datetime,@ContractType varchar(50),@ContractName varchar(128),@AnnualAlloca
@MonthlyHoursBasedFee money,@StatusType nvarchar(35),@Address varchar(100),@City varchar(50),@PostalCode varchar(10),@StateAbbrevia
@IATACode3 varchar(5),@RegisterID int,@ContractIDs int,@EntityID int,@EntityKeyID int,@ApplicableDate date,@HoursValue decimal(10,2),@CreditValue
@MoneyValue decimal(10,2),@RegisterTyp
@CreatedByUserID int,@CreatedBy varchar(255),@IsEstimated int,@ItemTypeID int,@FutureHours decimal(10,2),@FutureCredi
@MonthCredits decimal(10,2),@DisplayName
,@cv1 decimal(10,2)
,@cv2 decimal(10,2)
,@cv3 decimal(10,2)
,@pci int
DECLARE c1 CURSOR FOR
Select StatusDate,ContractType,Co
EntityID,EntityKeyID,Appli
CreditValue,
MoneyValue,RegisterTypeLoo
DisplayName,REGION,IssueID
from #Register
Where
ApplicableDate <= @EndDate AND ISNULL([Description],'') <> 'Credit Expiration'
Order by contractid,ApplicableDate,
OPEN c1
FETCH Next FROM c1 INTO @StatusDate,@ContractType,
@IATACode3,@RegisterID,@Co
@CreatedByUserID,@CreatedB
WHILE @@FETCH_STATUS = 0
BEGIN
IF @pci <> @ContractIds
Begin
Set @cv1 = 0
Set @cv2 = 0
End
Set @cv1 = @CreditValue
Set @cv2 = ISNULL(@cv1,0)+ISNULL(@cv2
Insert Into #Register2(StatusDate,Cont
City,PostalCode,StateAbbre
MoneyValue,RegisterTypeLoo
FutureHours,FutureCredit,M
Select @StatusDate,@ContractType,
@Address,@City,@PostalCode
@HoursValue,@CreditValue,@
@DateCreated,@CreatedByUse
SET @pci = @ContractIds
FETCH Next FROM c1 INTO @StatusDate,@ContractType,
@Address,@City,@PostalCode
@CreditValue,@MoneyValue,@
@IsEstimated,@ItemTypeID,@
END
CLOSE c1
DEALLOCATE c1
CREATE CLUSTERED INDEX IX_Register
ON #Register2
(ContractID,ApplicableDate
If Object_Id('tempdb..#Regist
Drop table #Register3
Create Table #Register3(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat
TotalHours decimal(10,2),MonthlyHours
PostalCode varchar(10),StateAbbreviat
ApplicableDate datetime2,HoursValue decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai
MoneyValue decimal(10,2),RegisterType
DateCreated datetime,CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),
FutureCredit decimal(10,2),MonthHours decimal(10,2),MonthCredits
DECLARE
@StatusDate3 datetime,@ContractType3 varchar(50),@ContractName3
@MonthlyHoursBasedFee3 money,@StatusType3 nvarchar(35),@Address3 varchar(100),@City3 varchar(50),@PostalCode3 varchar(10),
@StateAbbreviation3 varchar(50),@IATACode33 varchar(5),@RegisterID3 int,@ContractIDs3 int,@EntityID3 int,@EntityKeyID3 int,
@ApplicableDate3 date,@HoursValue3 decimal(10,2),@CreditValue
@RegisterTypeLookupID3 int,@RegisterType3 varchar(100),@Description3
@CreatedByUserID3 int,@CreatedBy3 varchar(255),@IsEstimated3
@FutureCredit3 decimal(10,2),@MonthHours3
@REGION3 varchar(50),@IssueID3 int,@StartDates3 datetime,@EndDates3 datetime
,@hv13 decimal(10,2)
,@hv23 decimal(10,2)
,@hv33 decimal(10,2)
,@pci3 int
,@pad3 datetime
DECLARE c3 CURSOR FOR
Select StatusDate,ContractType,Co
StatusType,[Address],City,
CreditValue,CreditsRemain,
MoneyValue,RegisterTypeLoo
CreatedBy,IsEstimated,Item
from #Register2
Where
ApplicableDate <= @EndDate
Order by contractid,ApplicableDate,
OPEN c3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType
@StatusType3,@Address3,@Ci
@ApplicableDate3,@HoursVal
@ExpirationDate3,@DateCrea
@MonthHours3,@MonthCredits
WHILE @@FETCH_STATUS = 0
BEGIN
Set @hv13 = @HoursValue3
IF @pci3 <> @ContractIds3
Begin
Set @hv23 = 0
End
IF @RegisterTypeLookupID3 <> 265
Begin
SET @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01')
Begin
set @hv23 = @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) >= 0 AND ISNULL(@pad3,'1901-01-01')
Begin
set @hv23 = ISNULL(@hv23,0) + @hv13
End
If @RegisterTypeLookupID3 = 265 AND ISNULL(@hv23,0) < 0
Begin
set @hv23 = (@hv23 + ABS(@hv23)) + @hv13
End
Insert Into #Register3(StatusDate,Cont
PostalCode,StateAbbreviati
CreditsRemain,MoneyValue,R
IsEstimated,ItemTypeID,Fut
Select @StatusDate3,@ContractType
@City3,@PostalCode3,@State
@CreditValue3,@CreditsRema
@CreatedByUserID3,@Created
SET @pci3 = @ContractIds3
SET @pad3 = @ApplicableDate3
FETCH Next FROM c3 INTO @StatusDate3,@ContractType
@MonthlyHoursBasedFee3,@St
@RegisterID3,@ContractIDs3
@MoneyValue3,@RegisterType
@CreatedByUserID3,@Created
@MonthCredits3,@DisplayNam
END
CLOSE c3
DEALLOCATE c3
If Object_Id('tempdb..#Regist
Drop table #Register3b
Create Table #Register3b(StatusDate datetime,ContractType varchar(50),ContractName varchar(128),AnnualAllocat
MonthlyHoursBasedFee money,StatusType nvarchar(35),[Address] varchar(100),City varchar(50),PostalCode varchar(10),
StateAbbreviation varchar(50),IATACode3 varchar(5),RegisterID int,ContractID int,EntityID int,EntityKeyID int,ApplicableDate datetime2,
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai
MoneyValue decimal(10,2),RegisterType
CreatedByUserID int,CreatedBy varchar(255),IsEstimated int,ItemTypeID int,FutureHours decimal(10,2),FutureCredit
MonthCredits decimal(10,2),DisplayName varchar(255),REGION varchar(50),IssueID int,StartDates datetime,EndDates datetime)
Insert Into #Register3b(StatusDate,Con
[Address],City,PostalCode,
HrsRemainYr,CreditValue,Cr
CreatedByUserID,CreatedBy,
Select
StatusDate,ContractType,Co
IATACode3,RegisterID,Contr
RegisterTypeLookupID,Regis
FutureCredit,MonthHours,Mo
from #Register3
UPDATE b
SET HrsRemain = a.HrsRemain
FROM
(SELECT
SUM(HoursValue) as HrsRemain
,ContractID
,ContractName
FROM
#Register3b
Group by
ContractID,ContractName)a inner join #Register3b b on a.ContractID = b.ContractID
If Object_Id('tempdb..#Regist
Drop table #Register4
Create Table #Register4(EntityKeyID int,RegisterType varchar(100),RegisterID int,ContractType varchar(50),ContractID int,
ContractName varchar(128),AnniversaryDa
HoursValue decimal(10,2),HrsRemain decimal(10,2),HrsRemainYr decimal(10,2),CreditValue decimal(10,2),CreditsRemai
MonthlyHoursBasedFee money,StatusType nvarchar (35),[RANK] int)
Insert Into #Register4(EntityKeyID,Reg
StartDates,EndDates,HoursV
Select DISTINCT
r.EntityKeyID
,r.RegisterType
,r.RegisterID
,r.ContractType
,r.ContractID
,ContractName = LTRIM(RTRIM(Replace(r.Cont
,AnniversaryDate = dateadd(year,1,r.StartDate
,r.ApplicableDate
,r.StartDates
,r.EndDates
,r.HoursValue
,r.HrsRemain
,r.HrsRemainYr
,r.CreditValue
,r.CreditsRemain
,r.MonthlyHoursBasedFee
,r.StatusType
, DENSE_RANK () OVER
(PARTITION BY r.ContractID ORDER BY
r.contractid,r.ApplicableD
from #Register3b r
Where
r.ApplicableDate < CAST(@EndDate as date)
order by r.ContractID,10
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
SELECT
hrs.ContractType
,hrs.ContractID
,hrs.ContractName
,hrs.AnniversaryDate
,HoursValue
,HrsRemain= ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,hrs.StartDates
,hrs.EndDates
,hrs.ReportRunDate
,hrs.MonthlyHoursBasedFee
,hrs.StatusType
,FraxLeaseMonthsLftContrac
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
ELSE 0 END
,CardMonthsLftContractYr = CASE WHEN hrs.ContractType NOT in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
ELSE 0 END
,EstMthlyUsage = ROUND(hrs.HrsRemainYr / CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
,ContractLastYr = CASE WHEN ABS(DATEDIFF(dd,hrs.EndDat
0 END
into MSAccess.dbo.Register
FROM
(Select
ContractID
, Max([RANK]) as [RANK]
from #Register4
Group by
ContractID ) ra inner join
(Select
ContractType
,ContractID
,ContractName
,AnniversaryDate
,HoursValue
,HrsRemain = ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,[RANK]
,StartDates
,EndDates
,ReportRunDate = @EndDate
,StatusType
,MonthlyHoursBasedFee
from #Register4)hrs on ra.ContractID = hrs.ContractID AND ra.[RANK] = hrs.[RANK]
Order by
hrs.HrsRemainYr,hrs.Contra
--Error: Cannot convert a char value to money. The char value has incorrect syntax.
You must use SQL CAST/CONVERT functions on each column that has datatypes where implicit conversion will not work - check that "Implicit conversion"chart from CONVERT function:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
http://msdn.microsoft.com/en-us/library/ms187928.aspx
ASKER
so are you suggesting something like the following under the #Register4?
,MonthlyHoursBasedFee = CAST(r.MonthlyHoursBasedFe e as money)
--,r.MonthlyHoursBasedFee
,MonthlyHoursBasedFee = CAST(r.MonthlyHoursBasedFe
--,r.MonthlyHoursBasedFee
The msaccess.dbo.register table is created at the very end of the script, here...
If you add a couple of empty placeholder values into the select statement (where you want them to appear in the table, if you're into that sort of thing)...
...then alter the column types after the select statement
You should have all the script generated data and your two new columns, with null values in every row.
Hope that helps!
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
If you add a couple of empty placeholder values into the select statement (where you want them to appear in the table, if you're into that sort of thing)...
...
, null AS StatusType
...
, null AS MonthlyHoursBasedFee
...then alter the column types after the select statement
ALTER TABLE MSAccess.dbo.Register ALTER COLUMN StatusType NVARCHAR(35)
ALTER TABLE MSAccess.dbo.Register ALTER COLUMN MonthlyHoursBasedFee MONEY
You should have all the script generated data and your two new columns, with null values in every row.
Hope that helps!
ASKER
i start off with the two columns added to the table then this script runs
here is what i did towards the end of the script to include those columns and they need to contact the values as well.
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
SELECT
hrs.ContractType
,hrs.ContractID
,hrs.ContractName
,hrs.AnniversaryDate
,HoursValue
,HrsRemain= ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,hrs.StartDates
,hrs.EndDates
,hrs.ReportRunDate
,MonthlyHoursBasedFee
--,hrs.MonthlyHoursBasedFe e
,StatusType
--,hrs.StatusType
,FraxLeaseMonthsLftContrac tYr = CASE WHEN hrs.ContractType in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) END
ELSE 0 END
,CardMonthsLftContractYr = CASE WHEN hrs.ContractType NOT in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. EndDates,g etdate())/ 30.0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. EndDates,g etdate())/ 30.0),1) END
ELSE 0 END
,EstMthlyUsage = ROUND(hrs.HrsRemainYr / CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) < 1 THEN 1 ELSE
ROUND(ABS(DATEDIFF(dd,hrs. Anniversar yDate,getd ate())/30. 0),1) END,1)
,ContractLastYr = CASE WHEN ABS(DATEDIFF(dd,hrs.EndDat es,getdate ())) <365 THEN 1 ELSE
0 END
into MSAccess.dbo.Register
FROM
(Select
ContractID
, Max([RANK]) as [RANK]
from #Register4
Group by
ContractID ) ra inner join
(Select
ContractType
,ContractID
,ContractName
,AnniversaryDate
,HoursValue
,HrsRemain = ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,[RANK]
,StartDates
,EndDates
,ReportRunDate = @EndDate
,MonthlyHoursBasedFee
,StatusType
from #Register4)hrs on ra.ContractID = hrs.ContractID AND ra.[RANK] = hrs.[RANK]
Order by
hrs.HrsRemainYr,hrs.Contra ctID
here is what i did towards the end of the script to include those columns and they need to contact the values as well.
IF EXISTS(SELECT name FROM MSAccess.dbo.sysobjects WHERE name = N'Register' AND xtype='U')
DROP TABLE MSAccess.dbo.Register
SELECT
hrs.ContractType
,hrs.ContractID
,hrs.ContractName
,hrs.AnniversaryDate
,HoursValue
,HrsRemain= ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,hrs.StartDates
,hrs.EndDates
,hrs.ReportRunDate
,MonthlyHoursBasedFee
--,hrs.MonthlyHoursBasedFe
,StatusType
--,hrs.StatusType
,FraxLeaseMonthsLftContrac
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
ELSE 0 END
,CardMonthsLftContractYr = CASE WHEN hrs.ContractType NOT in('Fractional Program','Lease Program') THEN
CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
ELSE 0 END
,EstMthlyUsage = ROUND(hrs.HrsRemainYr / CASE WHEN ROUND(ABS(DATEDIFF(dd,hrs.
ROUND(ABS(DATEDIFF(dd,hrs.
,ContractLastYr = CASE WHEN ABS(DATEDIFF(dd,hrs.EndDat
0 END
into MSAccess.dbo.Register
FROM
(Select
ContractID
, Max([RANK]) as [RANK]
from #Register4
Group by
ContractID ) ra inner join
(Select
ContractType
,ContractID
,ContractName
,AnniversaryDate
,HoursValue
,HrsRemain = ROUND(HrsRemain,1)
,HrsRemainYr = ROUND(HrsRemainYr,1)
,CreditValue
,CreditsRemain = ROUND(CreditsRemain,1)
,[RANK]
,StartDates
,EndDates
,ReportRunDate = @EndDate
,MonthlyHoursBasedFee
,StatusType
from #Register4)hrs on ra.ContractID = hrs.ContractID AND ra.[RANK] = hrs.[RANK]
Order by
hrs.HrsRemainYr,hrs.Contra
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
gave me enough pointers to find the answer