EnVisageOnline/Main/Database/Scripts/20160422/01_Add_NPT_tables.sql

57 lines
5.2 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Use [EnVisage]
IF (NOT EXISTS (SELECT * FROM sys.tables where name='NonProjectTime2Resource'))
begin
CREATE TABLE [dbo].[NonProjectTime2Resource](
[Id] [uniqueidentifier] NOT NULL,
[NonProjectTimeId] [uniqueidentifier] NOT NULL,
[PeopleResourceId] [uniqueidentifier] NOT NULL,
[Position] [int] NOT NULL,
CONSTRAINT [PK_NonProjectTime2Resource] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[NonProjectTime2Resource] ADD CONSTRAINT [DF_NonProjectTime2Resource_Id] DEFAULT (newid()) FOR [Id]
ALTER TABLE [dbo].[NonProjectTime2Resource] ADD CONSTRAINT [DF_NonProjectTime2Resource_Ordinal] DEFAULT ((0)) FOR [Position]
ALTER TABLE [dbo].[NonProjectTime2Resource] WITH CHECK ADD CONSTRAINT [FK_NonProjectTime2Resource_NonProjectTime2Resource] FOREIGN KEY([NonProjectTimeId])
REFERENCES [dbo].[NonProjectTime] ([Id])
ALTER TABLE [dbo].[NonProjectTime2Resource] CHECK CONSTRAINT [FK_NonProjectTime2Resource_NonProjectTime2Resource]
ALTER TABLE [dbo].[NonProjectTime2Resource] WITH CHECK ADD CONSTRAINT [FK_NonProjectTime2Resource_PeopleResource] FOREIGN KEY([PeopleResourceId])
REFERENCES [dbo].[PeopleResource] ([Id])
ALTER TABLE [dbo].[NonProjectTime2Resource] CHECK CONSTRAINT [FK_NonProjectTime2Resource_PeopleResource]
CREATE UNIQUE NONCLUSTERED INDEX [IX_NonProjectTime2Resource] ON [dbo].[NonProjectTime2Resource]
(
[NonProjectTimeId] ASC,
[PeopleResourceId] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
end
GO
-- Fill table NonProjectTime2Resource with data
WITH NewItemsQry (NonProjectTimeId, PeopleResourceId, LastName, FirstName)
AS
(
SELECT DISTINCT A.NonProjectTimeId, A.PeopleResourceId, C.LastName, C.FirstName
FROM NonProjectTimeResourceAllocation A
INNER JOIN NonProjectTime B ON (B.Id = A.NonProjectTimeId)
INNER JOIN PeopleResource C ON (C.Id = A.PeopleResourceId)
WHERE NOT EXISTS(
SELECT D.* FROM NonProjectTime2Resource D
WHERE (D.NonProjectTimeId = A.NonProjectTimeId) AND (D.PeopleResourceId = A.PeopleResourceId)
)
)
INSERT INTO NonProjectTime2Resource (Id, NonProjectTimeId, PeopleResourceId, Position)
SELECT NEWID() AS Id, K.NonProjectTimeId, K.PeopleResourceId,
ROW_NUMBER() OVER (PARTITION BY K.NonProjectTimeId ORDER BY K.NonProjectTimeId, K.LastName, K.FirstName) AS Position
FROM NewItemsQry K
GO