sql - Create a Due Date Not Including Weekends from a column given Specific SLA Days -
i have "daysuntildue" column says when document needs completed by. need calculate "due date" based on "days due" using "logged day" column , exclude both saturday , sunday.
all have columns know need work from. have code case when statement excluded sat , sun not sure how incorporate need do. have columns need , linked way need be. struggling how make statement says calculate due date when document's "logtime" using existing "daysuntildue", exclude weekends
select categoryname, doccategory, daysuntildue, trannbr, duedate, logtime queue inner join wqmtransactions on queue.trannbr = wqmtransactions.trannbr inner join serviceq inner join categorylist on serviceqn.tranid = categorylist.tranid inner join category on categorylist.categoryid = category.categoryid on queue.categoryid = category.categoryid , queue.tranid = serviceq.tranid maybe lack of sleep, conceptually can't determine how what.
i'm assuming need use case statement built qry doing similar.
case when doc in ( 'pos', 'card' ) cast(dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered) + ( datepart(dw, dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered)) - 2 + 5 ) % 5 + ( ( datepart(dw, dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered)) - 2 + 5 ) / 5 ) * 7 - ( datepart(dw, dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered)) - 2 ) date) else cast(dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered) + ( datepart(dw, dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered)) - 2 + 10 ) % 5 + ( ( datepart(dw, dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered)) - 2 + 10 ) / 5 ) * 7 - ( datepart(dw, dateadd(d, case datepart(dw, dateentered) when 7 2 when 1 1 else 0 end, dateentered)) - 2 ) date) end 'required sla date'
i tried correct query. calculated duedate. duedate null when daysuntildue = 0.
select categoryname, doccategory, daysuntildue, trannbr, logtime, dateadd(day, a.n, loggedday) duedate queue inner join wqmtransactions on queue.trannbr = wqmtransactions.trannbr inner join serviceq on queue.categoryid = category.categoryid , queue.tranid = serviceq.tranid inner join categorylist on serviceqn.tranid = categorylist.tranid inner join category on categorylist.categoryid = category.categoryid cross apply ( select coalesce(max(number)+1, 0) n from( select top (daysuntildue) number master..spt_values type = 'p' , datediff(day, -number-1, loggedday) % 7 not in (5,6) order number ) a)
Comments
Post a Comment