SQL 带参数的案例陈述

SQL Case Statement with parameters

我有以下 SQL 这将给我一份工作描述和部门输出:

declare @JOB_DESC nvarchar (50)
declare @DEPARTMENT nvarchar (50)
declare @Initials nvarchar (50)

select case 
@Initials = 'XBF' then (@JOB_DESC = 'Partner', @DEPARTMENT = '_Banking and Finance'),
@Initials = 'XMA' then (@JOB_DESC = 'Partner', @DEPARTMENT = '_Disputes'),

else

SELECT @JOB_DESC = u.NAME, @DEPARTMENT = u.PracticeAreaName
FROM USERS u where u.USERID = @Initials

select @JOB_DESC
select @DEPARTMENT

所以如果首字母是 XBF 或 XMA,我基本上想强制使用职位描述和部门,否则我想从普通用户那里获得我的输出 table,但这对我不起作用,并且我很难在网上找到合适的 SQL。 Management Studio 在引用 case 语句中的第一个 '=' 时说 'Incorrect Syntax near '='' ....感谢任何帮助....

只需使用 IF...ELSE 即可 - 没有什么比 CASE 语句更容易了。

IF @Initials = 'XBF'
BEGIN
    SELECT 'Partner' AS JOB_DESC, '_Banking and Finance' AS DEPARTMENT
END
ELSE IF @Initials = 'XMA'
BEGIN
    SELECT 'Partner' AS JOB_DESC, '_Disputes' AS DEPARTMENT
END
ELSE
BEGIN
    SELECT u.NAME AS JOB_DESC, u.PracticeAreaName AS DEPARTMENT
    FROM USERS u where u.USERID = @Initials
END

如果您希望将它们作为变量,则使用类似的代码

declare @JOB_DESC nvarchar (50)
declare @DEPARTMENT nvarchar (50)

IF @Initials = 'XBF'
BEGIN
    SELECT @JOB_DESC = 'Partner', @DEPARTMENT = '_Banking and Finance'
END
ELSE IF @Initials = 'XMA'
BEGIN
    SELECT @JOB_DESC = 'Partner', @DEPARTMENT = '_Disputes' 
END
ELSE
BEGIN
    SELECT @JOB_DESC = u.NAME, @DEPARTMENT = u.PracticeAreaName 
    FROM USERS u where u.USERID = @Initials
END

select @JOB_DESC
select @DEPARTMENT