Nav*_*han 9 sql t-sql database sql-server
是否有可能在VIEWS中有一个if条件
例如
CREATE VIEW
as
DECLARE @Count int
SET @Count=-1
select @Count=EmpID from EmployeeDetails where ID=200
IF @Count=-1
BEGIN
SELECT * FROM TEAM1
END
ELSE
BEGIN
SELECT * FROM TEAM1
END
Run Code Online (Sandbox Code Playgroud)
Mar*_*rtW 13
你可以尝试使用UNION偷偷摸摸的东西:
SELECT {fieldlist}
FROM Table1
WHERE EXISTS(SELECT EmpID FROM EmployeeDetails WHERE ID = 200)
UNION ALL
SELECT {fieldlist}
FROM Table2
WHERE NOT EXISTS(SELECT EmpID FROM EmployeeDetails WHERE ID = 200)
Run Code Online (Sandbox Code Playgroud)
此方法需要两个SELECT语句返回相同的字段集,尽管它们的源可能不同.
视图仅允许此处所述的select语句
如果您需要在列值上执行,则可以使用a
SELECT
CASE WHEN COLUMN1 = 1 THEN COLUMNX ELSE COLUMNY END
FROM TABLE1
Run Code Online (Sandbox Code Playgroud)
如果您的需求超过此值,您应该从表值函数而不是视图创建一个选择.
您需要的是一个简单的程序
CREATE PROCEDURE DOSOMETHING
(
@ID INT
)
AS
BEGIN
IF @ID > 100
SELECT 1 AS ID,'ME' AS NAME, GETDATE() AS VARIABLEDATECOL, NEWID() AS VARIABLEGUID
ELSE
SELECT 2 AS ID, 'YOU' AS NAME
END
Run Code Online (Sandbox Code Playgroud)