Mega Code Archive

 
Categories / MSSQL Tutorial / Transact SQL
 

SELECT query with a variable for the table name so that condition determines which table the result set is based on

4> 5> CREATE TABLE sales( 6>    stor_id        char(4)           NOT NULL, 7>    ord_num        varchar(20)       NOT NULL, 8>    ord_date       datetime          NOT NULL, 9>    qty            smallint          NOT NULL, 10>    payterms       varchar(12)       NOT NULL, 11>    title_id       varchar(80) 12> ) 13> GO 1> insert sales values('1', 'QA7442.3', '09/13/94', 75, 'ON Billing','1') 2> insert sales values('2', 'D4482',    '09/14/94', 10, 'Net 60',    '1') 3> insert sales values('3', 'N914008',  '09/14/94', 20, 'Net 30',    '2') 4> insert sales values('4', 'N914014',  '09/14/94', 25, 'Net 30',    '3') 5> insert sales values('5', '423LL922', '09/14/94', 15, 'ON Billing','3') 6> insert sales values('6', '423LL930', '09/14/94', 10, 'ON Billing','2') 7> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> 2>     DECLARE @chvTable VARCHAR(30), 3>             @chvSQL VARCHAR(255) 4>     IF getdate() > '7/1/1997' 5>     SELECT @chvTable = 'sales' 6>     ELSE 7>     SELECT @chvTable = 'authors' 8>     SELECT @chvSQL = 'SELECT * FROM ' + @chvTable 9>     EXEC (@chvSQL) 10>     GO stor_id ord_num              ord_date                qty    payterms     title_id ------- -------------------- ----------------------- ------ ------------ -------------------------------------------------------------------------------- 1       QA7442.3             1994-09-13 00:00:00.000     75 ON Billing   1 2       D4482                1994-09-14 00:00:00.000     10 Net 60       1 3       N914008              1994-09-14 00:00:00.000     20 Net 30       2 4       N914014              1994-09-14 00:00:00.000     25 Net 30       3 5       423LL922             1994-09-14 00:00:00.000     15 ON Billing   3 6       423LL930             1994-09-14 00:00:00.000     10 ON Billing   2 (6 rows affected) 1> 2> drop table sales; 3> GO