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 |
Ciupaz
Posting Yak Master
232 Posts |
Posted - 2012-12-05 : 08:08:18
|
Hello all,in a my stored procedure, I have several SELECT combined to an UNION to get my results.Something like this: Select Field1,Field2From TableA A inner join TableB BOn A.ID = B.IDUNIONSelect Field1,Field2From TableC C inner join TableD DOn C.ID = D.IDUNION Select Field1,Field2From TableE E inner join TableF FOn E.ID = F.IDThen I have to add another Select block only if a condition is valid, like: IF (@DataDaUTC<= @DataStartNBDO)Select Field1,Field2From TableY Y inner join TableZ ZOn Y.ID = Z.IDbut in this way does not work in SQL Server 2008. How can I solve this problem? Thanks in advance. Luigi |
|
sunitabeck
Master Smack Fu Yak Hacker
5155 Posts |
Posted - 2012-12-05 : 08:11:48
|
Instead of using the if clause, insert your condition as a where clause....UNION Select Field1,Field2From TableE E inner join TableF FOn E.ID = F.IDUNIONSelect Field1,Field2From TableY Y inner join TableZ ZOn Y.ID = Z.IDWHERE @DataDaUTC<= @DataStartNBDO |
|
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2012-12-05 : 08:14:21
|
Those params aren't part of the table, so brute force may workIF @DataDaUTC <= @DataStartNBDOSelect Field1,Field2From TableA A inner join TableB BOn A.ID = B.IDUNIONSelect Field1,Field2From TableC C inner join TableD DOn C.ID = D.IDUNION Select Field1,Field2From TableE E inner join TableF FOn E.ID = F.IDUNION Select Field1,Field2From TableY Y inner join TableZ ZOn Y.ID = Z.IDELSESelect Field1,Field2From TableA A inner join TableB BOn A.ID = B.IDUNIONSelect Field1,Field2From TableC C inner join TableD DOn C.ID = D.IDJimEveryday I learn something that somebody else already knew |
|
|
Ciupaz
Posting Yak Master
232 Posts |
Posted - 2012-12-05 : 08:28:04
|
Thank you Sunita and JimI've adopted the Sunita's solution. Luigi |
|
|
|
|
|
|
|