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 |
kamii47
Constraint Violating Yak Guru
353 Posts |
Posted - 2012-03-26 : 03:18:18
|
I have a query in which I am sending a Boolean variableOn basis of that variable I just adding a Value in In clausecsmContainerStatus in ( 'O', 'P', 'X')and for second casecsmContainerStatus in ( 'O', 'P', 'X', 'R')I wanted to avoid multiple query.How can i do it? if (@IsReadyToPayContainerIncluded = 'True' ) begin ; WITH CTE AS (SELECT csm.fkSegmentID, csm.csmContainerID, csmContainerLevel, csmContainerStatus, Upper(csmEntryPointActualOrDeliveryLocaleKey) as csmEntryPointActualOrDeliveryLocaleKey, csmContainerGrossWeight, csmNumberofCopies, cqt.cqtDestinationEntry, csm.csmContainerDestinationZip, csm.csmIncludedInOtherDocumentation, row_number() over (partition by csm.fkSegmentID, csm.csmContainerID ORDER BY cqt.cqtDestinationEntry DESC) as Rn FROM SegmentRecord seg INNER JOIN ContainerSummaryRecord csm ON seg.fkJobID = csm.fkJobID AND seg.segSegmentID = csm.fkSegmentID inner Join ContainerQuantityRecord cqt on cqt.fkJobID = csm.fkJobID and cqt.fkContainerID = csm.csmContainerID where ( csmContainerStatus in ( 'O', 'P', 'R', 'X' ) or csmContainerStatus is null )) SELECT @JobID as JobID, fkSegmentID as SegmentID, csmContainerID as ContainerID, csmContainerLevel as ContainerLevel, csmContainerStatus as ContainerStatus, csmEntryPointActualOrDeliveryLocaleKey as LocaleKeyWithLOCSuffix, csmContainerGrossWeight as ContainerGrossWeight, csmNumberofCopies as NumberofCopies, cqtDestinationEntry, csmContainerDestinationZip, csmIncludedInOtherDocumentation FROM CTE WHERE Rn = 1 End else begin ; WITH CTE AS (SELECT csm.fkSegmentID, csm.csmContainerID, csmContainerLevel, csmContainerStatus, Upper(csmEntryPointActualOrDeliveryLocaleKey) as csmEntryPointActualOrDeliveryLocaleKey, csmContainerGrossWeight, csmNumberofCopies, cqt.cqtDestinationEntry, csm.csmContainerDestinationZip, csm.csmIncludedInOtherDocumentation, row_number() over (partition by csm.fkSegmentID, csm.csmContainerID ORDER BY cqt.cqtDestinationEntry DESC) as Rn FROM SegmentRecord seg INNER JOIN ContainerSummaryRecord csm ON seg.fkJobID = csm.fkJobID AND seg.segSegmentID = csm.fkSegmentID inner Join ContainerQuantityRecord cqt on cqt.fkJobID = csm.fkJobID and cqt.fkContainerID = csm.csmContainerID where ( csmContainerStatus in ( 'O', 'P', 'X' ) or csmContainerStatus is null )) SELECT @JobID as JobID, fkSegmentID as SegmentID, csmContainerID as ContainerID, csmContainerLevel as ContainerLevel, csmContainerStatus as ContainerStatus, csmEntryPointActualOrDeliveryLocaleKey as LocaleKeyWithLOCSuffix, csmContainerGrossWeight as ContainerGrossWeight, csmNumberofCopies as NumberofCopies, cqtDestinationEntry, csmContainerDestinationZip, csmIncludedInOtherDocumentation FROM CTE WHERE Rn = 1 EndKamran ShahidPrinciple Engineer Development(MCSD.Net,MCPD.net) |
|
robvolk
Most Valuable Yak
15732 Posts |
Posted - 2012-03-26 : 05:58:33
|
Use this expression instead:csmContainerStatus in ( 'O', 'P', 'X', CASE WHEN @IsReadyToPayContainerIncluded = 'True' THEN 'R' END) You won't need the IF...ELSE construct and can write it as a single query. |
 |
|
kamii47
Constraint Violating Yak Guru
353 Posts |
Posted - 2012-03-26 : 08:27:15
|
ThanksKamran ShahidPrinciple Engineer Development(MCSD.Net,MCPD.net) |
 |
|
|
|
|
|
|