Solved

If Table Exists

Posted on 2008-10-27
224 Views
On the first day of every month we create a table of data for the previous month, I then join  them in a union statement as below.

select etc
from out_jan08
where

union all

select etc
from out_feb08
where

On the first day of every month I add the next table to the union statement, so on the 1st Novermber I will add out_oct08 to the statement.

I am wandering if there is away where I can add all 12 months to the stement and add an if table exists statement, so the query will still run even if the table does not exist.

i.e.

union all

if exists
select etc
from out_oct08
where etc

Is this possible?

0
Question by:halifaxman
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 143

Expert Comment

ID: 22817495
no, that is not possible.
you have either to ensure all 12 tables exist at all times,
or simply create, assuming you are using a database that supports partitioned tables, those instead of 1 table per month...
0

LVL 9

Accepted Solution

jamesgu earned 500 total points
ID: 22817719
run this to get your statement,

``````declare @sql varchar(1000)
begin
set @sql = ''
if exists( select 1 from sysobjects where name = 'out_jan08' and type = 'U')
begin
select @sql = 'select etc from out_jan08 where ... '
end;

if exists( select 1 from sysobjects where name = 'out_feb08' and type = 'U')
begin
if ( @sql != '' )
begin
select @sql = @sql + char(10) + 'union' + char(10)
end;
select @sql = @sql + 'select etc from out_feb08 where ... '
end;

print @sql
end;
``````
0

LVL 39

Expert Comment

ID: 22818281
The other way I can think of is....

--assuming data types here...
create table #Out (etc nvarchar(1000))

if object_id('dbo.out_jan08') is not null
exec ('insert into #out select etc from out_jan08')

if object_id('dbo.out_feb08') is not null
exec ('insert into #out select etc from out_feb08')

select * from #out

drop table #out
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
Composite queries are used to retrieve the results from joining multiple queries after applying any filters. UNION, INTERSECT, MINUS, and UNION ALL are some of the operators used to get certain desired results.​
Six Sigma Control Plans
Introduction to Processes
Suggested Courses
Course of the Month8 days, 8 hours left to enroll