Gilberto,
Em relação a dia util será necessario uma tabela com feriados e afins, todo caso, segue abaixo uma codificação em relação a sabado e domingo utili uma trigger instead of.
--Db Change
USE master
GO
--Criação da tabela
IF(OBJECT_ID('TabelaDiaUtil') IS NOT NULL)
DROP TABLE TabelaDiaUtil
GO
CREATE TABLE TabelaDiaUtil
(
Pedido VARCHAR(10),
Data_Emissao DATETIME,
Duracao_Fabr INT,
Previsao_Entrega DATETIME
)
GO
--Criação da procedure
CREATE TRIGGER dbo.InsertTabelaDiaUtil
ON TabelaDiaUtil
INSTEAD OF INSERT
AS
IF((SELECT DATEPART(WEEKDAY, Previsao_Entrega) FROM Inserted) = 7 /*ADICIONAR AQUI TABELA DE FERIADOS*/)-- Sabado
BEGIN
INSERT INTO TabelaDiaUtil
SELECT Pedido, Data_Emissao, Duracao_Fabr, DATEADD(DAY, 2, Previsao_Entrega)
FROM Inserted
END
IF((SELECT DATEPART(WEEKDAY, Previsao_Entrega) FROM Inserted) = 1 /*ADICIONAR AQUI TABELA DE FERIADOS*/)-- Domingo
BEGIN
INSERT INTO TabelaDiaUtil
SELECT Pedido, Data_Emissao, Duracao_Fabr, DATEADD(DAY, 1, Previsao_Entrega)
FROM Inserted
END
IF((SELECT DATEPART(WEEKDAY, Previsao_Entrega) FROM Inserted) IN (2, 3, 4, 5, 6))-- Outros dias
BEGIN
INSERT INTO TabelaDiaUtil
SELECT Pedido, Data_Emissao, Duracao_Fabr, Previsao_Entrega
FROM Inserted
END
GO
--Teste data insert
INSERT INTO TabelaDiaUtil VALUES
('045455', '20130701', 4, DATEADD(DAY, 4, '20130701'))
SELECT * FROM TabelaDiaUtil
/*
Pedido Data_Emissao Duracao_Fabr Previsao_Entrega
045455 2013-07-01 00:00:00.000 4 2013-07-05 00:00:00.000
*/
INSERT INTO TabelaDiaUtil VALUES
('045455', '20130701', 5, DATEADD(DAY, 5, '20130701'))
SELECT * FROM TabelaDiaUtil
/*
Pedido Data_Emissao Duracao_Fabr Previsao_Entrega
045455 2013-07-01 00:00:00.000 4 2013-07-05 00:00:00.000
045455 2013-07-01 00:00:00.000 5 2013-07-08 00:00:00.000
*/
INSERT INTO TabelaDiaUtil VALUES
('045455', '20130701', 6, DATEADD(DAY, 6, '20130701'))
SELECT * FROM TabelaDiaUtil
/*
Pedido Data_Emissao Duracao_Fabr Previsao_Entrega
045455 2013-07-01 00:00:00.000 4 2013-07-05 00:00:00.000
045455 2013-07-01 00:00:00.000 5 2013-07-08 00:00:00.000
045455 2013-07-01 00:00:00.000 6 2013-07-08 00:00:00.000
*/
Fabrizzio A. Caputo
Certificações:
MCT
MCC
Oracle OCA 11g
MCTS SQL Server 2008 BI
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Email: fabrizzio.antoniaci@gmail.com