譴觜
USE TEMPDB
GO
--DROP TABLE TEST2
CREATE TABLE TEST2(NUM INT PRIMARY KEY,A1 INT, A2 INT, A3 INT, A4 INT)
INSERT INTO TEST2 VALUES(1,1,2,3,4)
INSERT INTO TEST2 VALUES(2,5,6,7,8)
INSERT INTO TEST2 VALUES(3,9,10,11,12)
SELECT * FROM TEST2
GO
願屋
--ろ螻: 覈 CLUSTERED INDEX SEEK 讌襷 觜 襷 れ願.
--WHERE 觜朱 企ろ磯 碁煙 れ 讌襷 觜 譴企 蟆 覲 .
SELECT A1 FROM TEST2
WHERE NUM > 0
UNION
SELECT A2 FROM TEST2
WHERE NUM > 0
UNION
SELECT A3 FROM TEST2
WHERE NUM > 0
UNION
SELECT A4 FROM TEST2
WHERE NUM > 0
--一危一 覿 磯殊 ろ螻 れ る .
--WHERE企 GROUP BY襯 伎伎 蟆 一危磯 ″ 蟆 譬.
--襷 る狩伎 FIRST_ROW覦 牛磯伎襯 碁る...
--OPTION(FAST 10) 朱 碁.
SELECT A1 FROM TEST2
--WHERE NUM = 1 --企蟆 磯覃 UNION ALL 觜 る.
UNION
SELECT A2 FROM TEST2
--WHERE NUM = 1
UNION
SELECT A3 FROM TEST2
--WHERE NUM = 1
UNION
SELECT A4 FROM TEST2
--WHERE NUM = 1
OPTION(FAST 12)
-- 蟆 伎伎 襦襯 襷.
CREATE PROC PROC_TEST @A1 BIT = 1, @A2 BIT = 1, @A3 BIT = 1, @A4 BIT = 1
AS
BEGIN
DECLARE @SQL VARCHAR(200)
SET @SQL = ''
IF(@A1=1)
SET @SQL = 'SELECT A1 FROM TEST2 UNION '
IF(@A2=1)
SET @SQL = @SQL + 'SELECT A2 FROM TEST2 UNION '
IF(@A3=1)
SET @SQL = @SQL + 'SELECT A3 FROM TEST2 UNION '
IF(@A4=1)
SET @SQL = @SQL + 'SELECT A4 FROM TEST2'
EXEC(@SQL)
END
GO
SELECT * FROM TEST2
EXEC PROC_TEST 1,0,1,1 -- 貉殊 1, 貉殊 0 襷り覲襦
--譬 襴覃 れ螻 螳 .
CREATE PROC PROC_TEST2 @A1 BIT = 1, @A2 BIT = 1, @A3 BIT = 1, @A4 BIT = 1
AS
BEGIN
SELECT A1 FROM TEST2
WHERE 1 = @A1
UNION
SELECT A2 FROM TEST2
WHERE 1 = @A2
UNION
SELECT A3 FROM TEST2
WHERE 1 = @A3
UNION
SELECT A4 FROM TEST2
WHERE 1 = @A4
END
GO
SELECT * FROM TEST2
EXEC PROC_TEST2 1,0,1,1
れ襦 企 觜蠏 覓語 襷 危語 殊企. 讌企 MSSQL Server 企 伎 企 覲伎 . 螳襦襯 碁襦 シ豺蠍 伎 螳 UNION企 UNION ALL 伎 . 螳襦襦 襷 シ豎 る 蠏碁 觜 . れ襦 螳 煙碁 螳 貉殊朱 覿襴螳 朱襦 碁煙るゼ 覈 燕 碁企.