SQL Server:在CASE语句中设置一个变量

时间:2013-11-26 16:59:09

标签: sql-server tsql

是否可以在case语句中设置变量?我的代码不起作用。谢谢大家。

CREATE PROCEDURE spReport
@q1 INT,
@q2 INT
AS
BEGIN

-- Dates for the 2 different quarters to be viewed
DECLARE @StartDateQ1 DATETIME
DECLARE @EndDateQ1 DATETIME
DECLARE @StartDateQ2 DATETIME
DECLARE @EndDateQ2 DATETIME

SELECT
CASE @q1
    WHEN 1 THEN SET @StartDateQ1 = '20130401'
END

2 个答案:

答案 0 :(得分:35)

您可以使用

SET @StartDateQ1 = CASE @q1
                     WHEN 1 THEN '20130401'
                   END 

根据CASE表达式设置单个变量的值。

如果您的真实逻辑更复杂(例如需要在条件中设置多个变量),请改为IF ... ELSE

CASE表达式不是控制构造的流程。

答案 1 :(得分:1)

以下是使用IF语句解决此问题的另一种方法:

SELECT avg(students_subject.nota) as avg, students.name
FROM students_subject
left JOIN studentsON students.id=students_subject.id_alumno
GROUP BY students_subject.id_student 
HAVING avg > 8;