Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Problem With WHERE Clause
Message
General information
Forum:
Microsoft SQL Server
Category:
SQL syntax
Miscellaneous
Thread ID:
01446031
Message ID:
01446183
Views:
27
Ok, killing the programmer aside, I'm still stuck on this. I have verified the problem lies with the conversion of the IIF to CASE. I'm off by 4 rows.
-- SQL
WHERE (MOC.MOC_PART_NO NOT LIKE '%-CR' AND MOC.MOC_PART_NO NOT LIKE '%RMA%' AND MOC.MOC_PART_NO NOT LIKE '%RW' AND  MOC.MOC_PART_NO NOT LIKE '%RWK') AND 
	  (MOC.MOC_OHNUMBER NOT LIKE 'FCST%') AND 
	  (CASE WHEN RQ.RQ_STATUS = 'C' OR RQ.RQ_QTY_ISS >= RQ.RQ_QTY_REQ THEN
			CASE WHEN RQ.RQ_DATE_PROM >= GETDATE() - 365 OR RQ.RQ_DATE_REQ >= GETDATE() - 365 THEN 1 ELSE 0 END 
			ELSE 1
	   END = 1) AND
	  (OH.OH_STATUS <= 3) AND 
	  (MOC.MOC_OHTYPE <> 'Q') AND 
	  (RQ.RQ_O_TYPE <> 'X' OR RQ.RQ_O_TYPE IS NULL)


-- Access
WHERE	(PK_MOC.MOC_PART_NO Not Like "*-CR" And PK_MOC.MOC_PART_NO Not Like "*RMA*" And PK_MOC.MOC_PART_NO Not Like "*RW" And PK_MOC.MOC_PART_NO Not Like "*RWK") AND 
		(PK_MOC.MOC_OHNUMBER Not Like "FCST*") AND 
		((IIf([PK_RQ]![RQ_STATUS]="C" Or [PK_RQ]![RQ_QTY_ISS]>=[PK_RQ]![RQ_QTY_REQ],IIf([PK_RQ]![RQ_DATE_PROM]>=Date()-365 Or [PK_RQ]![RQ_DATE_REQ]>=Date()-365,True,False),True))=True) AND 
	    (PK_OH.OH_STATUS<=3) AND 
		(PK_MOC.MOC_OHTYPE<>"Q") AND 
		(PK_RQ.RQ_O_TYPE<>"X" Or PK_RQ.RQ_O_TYPE Is Null);
>I think it's time to kill the developer :)
>
>>I'm trying to convert this Access WHERE clause to SQL:
>>
>>
>>WHERE (((PK_MOC.MOC_PART_NO) Not Like "*-CR" And (PK_MOC.MOC_PART_NO) Not Like "*RMA*" And (PK_MOC.MOC_PART_NO) Not Like "*RW" And 
>>		  (PK_MOC.MOC_PART_NO) Not Like "*RWK") AND ((PK_MOC.MOC_OHNUMBER) Not Like "FCST*") AND ((IIf([PK_RQ]![RQ_STATUS]="C" Or 
>>		  [PK_RQ]![RQ_QTY_ISS]>=[PK_RQ]![RQ_QTY_REQ],IIf([PK_RQ]![RQ_DATE_PROM]>=Date()-365 Or [PK_RQ]![RQ_DATE_REQ]>=Date()-365,True,False),True))=True) AND 
>>		  ((PK_OH.OH_STATUS)<=3) AND ((PK_MOC.MOC_OHTYPE)<>"Q") AND ((PK_RQ.RQ_O_TYPE)<>"X" Or (PK_RQ.RQ_O_TYPE) Is Null));
>>
>>
>>Here's what I have:
>>
>>
>>WHERE ((MOC.MOC_PART_NO NOT LIKE '%-CR' AND MOC.MOC_PART_NO NOT LIKE '%RMA%' AND MOC.MOC_PART_NO NOT LIKE '%RW' AND  MOC.MOC_PART_NO NOT LIKE '%RWK') AND 
>>	  (MOC.MOC_OHNUMBER NOT LIKE 'FCST%') AND 
>>	  (CASE WHEN RQ.RQ_STATUS = 'C' OR RQ.RQ_QTY_ISS >= RQ.RQ_QTY_REQ THEN
>>			CASE WHEN RQ.RQ_DATE_PROM >= GETDATE() - 365 OR RQ.RQ_DATE_REQ >= GETDATE() - 365 THEN 1 ELSE 0 END ELSE 0
>>	   END = 1) AND 
>>	  (OH.OH_STATUS <= 3) AND 
>>	  (MOC.MOC_OHTYPE <> 'Q') AND 
>>	  (RQ.RQ_O_TYPE <> 'X' OR RQ.RQ_O_TYPE IS NULL))
>>
>>
>>
>>I'm not getting the same rowcount back.
Everything makes sense in someone's mind
public class SystemCrasher :ICrashable
In addition, an integer field is not for irrational people
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform