ЕСЛИ условие в SQL Server - PullRequest
       4

ЕСЛИ условие в SQL Server

9 голосов
/ 28 апреля 2011

Возможно ли иметь условие 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

Ответы [ 4 ]

11 голосов
/ 28 апреля 2011

Вы можете попробовать что-нибудь подлое с СОЮЗОМ:

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 возвращали один и тот же набор полей, хотя их источники могут отличаться.

8 голосов
/ 28 апреля 2011

Представления разрешают только операторы выбора, как указано в здесь

, если вам нужно сделать, если для значений столбцов вы можете использовать

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 голосов
/ 28 апреля 2011

Нет, я не верю, что это возможно.

Вместо этого вы можете использовать хранимую процедуру для достижения этой функциональности.

0 голосов
/ 24 февраля 2019

просто используйте udf (пользовательскую функцию). Здесь вы можете использовать IF, ELSE, WHILE и т. Д.

Но когда вы манипулируете данными (INSERT, UPDATE, DELETE), то вам нужно использовать хранимые процедуры, потому чтоudf не могут этого сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...