我有一个查询,我想根据它们的函数进行筛选。
例如,我的数据库是:
Name | Teamleader | Coordinator | Manager | Function
-------------------------------------------------------
Tony | Arthur | George | Mary | Sales
Trisha | Hannah | Hannah | Andrew | Associate
我想通过它们的函数进行过滤,但我希望它只是一个简单的布尔值,如果我的布尔值变量@assoc = 1
,那么它只会显示关联,如果@assoc = 0
,那么它不会显示关联。
我正在尝试这个查询,但在等于Incorrect syntax near '='.
和FROMIncorrect syntax near 'from'. Expecting CONVERSATION.
中出现错误
declare @assoc BIT = 1
set @assoc = (select case @assoc = 1 THEN u_function = 'associate' ELSE u_function != 'associate' END from cm3)
如果我的布尔变量@assoc=1,它将只显示关联,如果@assoc=0,它将不显示关联。
您似乎想要一个带有where子句的查询,该子句基于@assoc变量:
select *
from cm3
where (@assoc = 1 and u_function = 'Associate')
or (@assoc = 0 and u_function <> 'Associate');
- 函数是一个保留关键字
- 要将值分配给@assoc,我建议这样做:
DECLARE @assoc BIT = 1
SELECT @assoc = CASE
WHEN pfunction = 'Associate'
THEN 1
ELSE 0
END
FROM cm3
SELECT @assoc
用于测试结果的脚本是:
CREATE TABLE cm3 (
name VARCHAR(20)
,teamleader VARCHAR(20)
,coordinator VARCHAR(20)
,manager VARCHAR(20)
,pfunction VARCHAR(20)
)
INSERT INTO cm3
VALUES (
'Tony'
,'Arthur'
,'George'
,'Mary'
,'Sales'
)
,(
'Trisha '
,'Hannah '
,'Hannah '
,'Andrew '
,'Associate'
)
DECLARE @assoc BIT = 1
SELECT @assoc = CASE
WHEN pfunction = 'Associate'
THEN 1
ELSE 0
END
FROM cm3
SELECT @assoc
DROP TABLE cm3
结果是1