是否可以在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
答案 0 :(得分:11)
你可以尝试使用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)
此方法需要两个SELECT语句返回相同的字段集,尽管它们的源可能不同。
答案 1 :(得分:8)
视图仅允许here
中所述的select语句如果您需要执行列值,则可以使用
SELECT
CASE WHEN COLUMN1 = 1 THEN COLUMNX ELSE COLUMNY END
FROM TABLE1
如果您的需求超过此值,您应该从表值函数而不是视图创建一个选择。
您需要的是一个简单的程序
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
答案 2 :(得分:2)
不,我不相信这是可能的。
您可以使用存储过程来实现此功能。
答案 3 :(得分:-1)
仅使用udf(用户定义函数) 在这里,您可以使用IF,ELSE,WHILE等。
但是当您处理数据(INSERT,UPDATE,DELETE)时,您必须使用存储过程,因为udf无法做到这一点