Предположение, что это мои данные
CREATE TABLE tbUsers (
idUser INT PRIMARY KEY,
nameUser VARCHAR(20),
levelUser BIT
);
INSERT INTO tbUsers VALUES (1,'Cindy',1),(2,'Philip',0),(3,'Veron',0);
CREATE TABLE tbTransactions (
idTransaction BIGINT PRIMARY KEY,
dateTransaction DATE,
idUserInput INT
);
INSERT INTO tbTransactions VALUES (1,'2019-07-01',1),(2,'2019-07-05',1),(3,'2019-07-05',3);
Уровень пользователя имеет 2: Admin (1) и Standard (0)
Я хочу, если пользователь, который просматривает транзакцию, имеет уровень администратора (1), чем он / она может просматривать все данные. Но если уровень Standard (0), он может просматривать только свои данные.
Если я использую утверждение IF, я могу достичь своей цели. Это ЕСЛИ код:
DECLARE @parLevelUser BIT = 1;
DECLARE @parIdUserView INT = 3;
IF(@parLevelUser=1)
SELECT * FROM tbTransactions WHERE idUserInput IN (SELECT idUser FROM tbUsers)
ELSE
SELECT * FROM tbTransactions WHERE idUserInput IN (SELECT @paridUserView)
Как написать в заявлении IIF? Я пишу этот код, но показываю ошибку.
DECLARE @parLevelUser BIT = 1;
DECLARE @parIdUserView INT = 3;
SELECT * FROM tbTransactions WHERE idUserInput IN (IIF(@parLevelUser=1,(SELECT idUser FROM tbUsers),(SELECT @paridUserView)));
Сообщение об ошибке: Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.