Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
dthornton
Starting Member
2 Posts |
Posted - 2011-06-21 : 16:28:05
|
| The following SQL returns 2 when both conditions evaluate to TRUE. What's going on...-- my tableCREATE TABLE [dbo].[Order_Label]( [OrderID] [int] NOT NULL, [Version] [int] NOT NULL, [ExternalID] [varchar](100) NULL)-- my dataINSERT INTO Order_Label(OrderID, Version, ExternalID) values(1,1,null)INSERT INTO Order_Label(OrderID, Version, ExternalID) values(1,2,null)INSERT INTO Order_Label(OrderID, Version, ExternalID) values(1,3,'A')INSERT INTO Order_Label(OrderID, Version, ExternalID) values(1,4,'B')-- the codedeclare @ExternalMedicationID varchar(100)set @ExternalMedicationID = 'C'if( -- ExternalID does not exist in this Order @ExternalMedicationID NOT IN (SELECT OL1.ExternalID FROM Order_Label OL1 WHERE OL1.OrderID = 1))AND( --Is there an entry for this Order without any ExternalID (SELECT OL2.ExternalID FROM Order_Label OL2 WHERE OL2.OrderID = 1 AND OL2.Version = (SELECT MAX(OL3.Version) FROM Order_Label OL3 WHERE OL3.OrderID = 1) ) IS NOT NULL)beginselect 1 -- should insert newendelsebeginselect 2end |
|
|
russell
Pyro-ma-ni-yak
5072 Posts |
Posted - 2011-06-21 : 16:38:10
|
| execute just this partdeclare @ExternalMedicationID varchar(100)set @ExternalMedicationID = 'C'if( -- ExternalID does not exist in this Order@ExternalMedicationID NOT IN(SELECT OL1.ExternalID FROM Order_Label OL1WHERE OL1.OrderID = 1))select 1elseselect 2 |
 |
|
|
russell
Pyro-ma-ni-yak
5072 Posts |
Posted - 2011-06-21 : 16:39:14
|
| so u could add thisand ExternalID is not null |
 |
|
|
dthornton
Starting Member
2 Posts |
Posted - 2011-06-21 : 16:59:18
|
| Thanks, that does it. Interesting. |
 |
|
|
|
|
|
|
|