日期:2014-05-18  浏览次数:20531 次

求1个有选择功能的视图,请高手入。
config表中有mode字段,mode字段只有1或者0两个值。

另有a表和b表

当mode的值为1时视图select   a表的内容,mode为0时select   b表的内容。

求这个视图怎么写?

------解决方案--------------------
CREATE TABLE #A(id int,ColumnN1 nvarchar(20))
CREATE TABLE #B(id int,ColumnN1 nvarchar(20))
CREATE TABLE #config(mode bit)

INSERT INTO #A SELECT 1, 'A1 '
INSERT INTO #B SELECT 1, 'B1 ' UNION ALL SELECT 2, 'B2 '
INSERT INTO #config SELECT 1

--当#A与#B表的结构相同时候
SELECT * FROM #A WHERE EXISTS(SELECT 1 FROM #config WHERE mode=1)
UNION ALL
SELECT * FROM #A WHERE EXISTS(SELECT 1 FROM #config WHERE mode=0)

--当当#A与#B表的结构不相同时候,使用存储过程来,动态SQL语句
--CREATE PROC Proc_Name
--@Where nvarchar(3000)
--AS
--DECLARE @Sql nvarchar(4000)
--IF EXISTS(SELECT 1 FROM #config WHERE mode=1)
-- SET @Sql= 'SELECT * FROM #A '+@Where
--ELSE
-- SET @Sql= 'SELECT * FROM #A '+@Where
--EXECUTE (@Sql)
--GO


DROP TABLE #A,#B,#config