Advertisement

06.13.2008 at 03:13PM PDT, ID: 23484210
[x]
Attachment Details

SQL Query Help

Asked by pzozulka in MS SQL Server, SQL Query Syntax, SQL Server 2005

Tags: Microsoft, SQL Server, 2005

In the attached query I specify that if the "DueDate" falls on a weekend THEN DueDate + 1 OR + 2...

I need to ALSO make sure that Weekends are not counted when Adding Dates:

Consider the following Result Data:
JobDate                          RushNo        DueDate                 RushType
2008-06-05 00:00:00      1001      2008-06-16 00:00:00      Standard Delivery (10 Day)
2008-06-04 00:00:00      1001      2008-06-16 00:00:00      Standard Delivery (10 Day)
2008-06-09 00:00:00      1005      2008-06-16 00:00:00      5 Day Expedite
2008-06-09 00:00:00      1005      2008-06-16 00:00:00      5 Day Expedite
2008-06-10 00:00:00      1012      2008-06-16 00:00:00      4 Day Expedite
2008-06-10 00:00:00      1012      2008-06-16 00:00:00      4 Day Expedite
2008-06-06 00:00:00      1001      2008-06-16 00:00:00      Standard Delivery (10 Day)
2008-06-12 00:00:00      1013      2008-06-16 00:00:00      3 Day Expedite

Notice how JobDates 2008-06-09 (5 Day Expedites) are supposed to Fall on Saturday. The query's logic, makes it fall on Monday 2008-06-16.

So far so good.

However notice all the 10 Day expedites: They count the weekends. How can I alter my query, not to count the weekends.Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
SELECT J.JobNo, W. Witness, W.Units as 'Pages', J.JobDate, RM.RushNo,
CASE RM.RushNo
 WHEN 1001 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 10, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 12, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 11, J.JobDate)
   ELSE DATEADD (dd, 10, J.JobDate)
  END
 WHEN 1005 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 5, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 7, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 6, J.JobDate)
   ELSE DATEADD (dd, 5, J.JobDate)
  END
 WHEN 1010 THEN
  CASE DATEPART(WEEKDAY, J.JobDate)  
   WHEN 7 THEN DATEADD (dd, 2, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 1, J.JobDate)
   ELSE J.JobDate
  END
 WHEN 1012 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 4, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 6, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 5, J.JobDate)
   ELSE DATEADD (dd, 4, J.JobDate)
  END
 WHEN 1013 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 3, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 5, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 4, J.JobDate)
   ELSE DATEADD (dd, 3, J.JobDate)
  END
 WHEN 1014 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 2, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 4, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 3, J.JobDate)
   ELSE DATEADD (dd, 2, J.JobDate)
  END
 WHEN 1016 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 7, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 9, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 8, J.JobDate)
   ELSE DATEADD (dd, 7, J.JobDate)
  END
 WHEN 1017 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 8, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 10, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 9, J.JobDate)
   ELSE DATEADD (dd, 8, J.JobDate)
  END
 WHEN 1018 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 9, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 11, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 10, J.JobDate)
   ELSE DATEADD (dd, 9, J.JobDate)
  END
 WHEN 1019 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 1, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 3, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 2, J.JobDate)
   ELSE DATEADD (dd, 1, J.JobDate)
  END
 WHEN 1020 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 6, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 8, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 7, J.JobDate)
   ELSE DATEADD (dd, 6, J.JobDate)
  END
END AS DueDate1,
RM.RushType, C.DisplayName as 'Contact', F.FirmName
FROM Jobs J JOIN Witnesses W ON J.JobNo = W.JobNo
            JOIN WitnessesParties WP ON W.WitNo = WP.WitNo
            JOIN Resources R ON R.RsrcNo = W.RsrcNo
            JOIN RushMST RM ON WP.RushNo = RM.RushNo
            JOIN Invoices I ON I.InvNo = WP.InvNo
            JOIN Contacts C ON I.SoldContactNo = C.ContactNo
            JOIN Firms F ON C.FirmNo = F.FirmNo
WHERE 
CASE RM.RushNo
 WHEN 1001 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 10, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 12, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 11, J.JobDate)
   ELSE DATEADD (dd, 10, J.JobDate)
  END
 WHEN 1005 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 5, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 7, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 6, J.JobDate)
   ELSE DATEADD (dd, 5, J.JobDate)
  END
 WHEN 1010 THEN
  CASE DATEPART(WEEKDAY, J.JobDate)  
   WHEN 7 THEN DATEADD (dd, 2, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 1, J.JobDate)
   ELSE J.JobDate
  END
 WHEN 1012 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 4, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 6, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 5, J.JobDate)
   ELSE DATEADD (dd, 4, J.JobDate)
  END
 WHEN 1013 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 3, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 5, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 4, J.JobDate)
   ELSE DATEADD (dd, 3, J.JobDate)
  END
 WHEN 1014 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 2, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 4, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 3, J.JobDate)
   ELSE DATEADD (dd, 2, J.JobDate)
  END
 WHEN 1016 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 7, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 9, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 8, J.JobDate)
   ELSE DATEADD (dd, 7, J.JobDate)
  END
 WHEN 1017 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 8, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 10, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 9, J.JobDate)
   ELSE DATEADD (dd, 8, J.JobDate)
  END
 WHEN 1018 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 9, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 11, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 10, J.JobDate)
   ELSE DATEADD (dd, 9, J.JobDate)
  END
 WHEN 1019 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 1, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 3, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 2, J.JobDate)
   ELSE DATEADD (dd, 1, J.JobDate)
  END
 WHEN 1020 THEN
  CASE DATEPART(WEEKDAY, DATEADD(dd, 6, J.JobDate))  
   WHEN 7 THEN DATEADD (dd, 8, J.JobDate)
   WHEN 1 THEN DATEADD (dd, 7, J.JobDate)
   ELSE DATEADD (dd, 6, J.JobDate)
  END
END = CASE DATEPART(WEEKDAY, DATEADD(dd,1,CONVERT(VARCHAR,GETDATE(),101)))
       WHEN 7 THEN DATEADD(dd,3,CONVERT(VARCHAR,GETDATE(),101))
       WHEN 1 THEN DATEADD(dd,2,CONVERT(VARCHAR,GETDATE(),101))
       ELSE DATEADD(dd,1,CONVERT(VARCHAR,GETDATE(),101))
      END
AND
W.RsrcNo IN (SELECT R.RsrcNo FROM Resources R Where RsrcType = 405)
ORDER BY J.JobNo, J.JobDate
[+][-]06.14.2008 at 04:53AM PDT, ID: 21784940

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]06.15.2008 at 11:16PM PDT, ID: 21791075

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]06.16.2008 at 03:50AM PDT, ID: 21792319

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zones: MS SQL Server, SQL Query Syntax, SQL Server 2005
Tags: Microsoft, SQL Server, 2005
Sign Up Now!
Solution Provided By: dosth
Participating Experts: 2
Solution Grade: A
 
 
[+][-]06.16.2008 at 08:37AM PDT, ID: 21794644

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32 / EE_QW_2_20070628