如何在Case When语句中使用条件语句?

时间:2017-01-20 10:36:16

标签: sql sql-server

我正在尝试翻译我的查询,类似于下面的C#语句:

var result = Data.Where(r=> r.Year = 2017 
       && ( unit ==00000000-0000-0000-0000-000000000000" ? true: unit == r.UnitId);

下面是查询我试图放入表值函数但在case语句中得到错误=运算符。

SELECT * From ReportData
WHERE       
  Year = @year 
  AND
  (CASE @unit
      WHEN '00000000-0000-0000-0000-000000000000' THEN 1
    ELSE  @unit = UnitId
    END
  )

是否可以在sql的case语句块中放入条件? 有没有办法在SQL中实现它?

3 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个:

SELECT * 
FROM   ReportData
WHERE  Year = @year 
  AND  (UnitId = @unit OR @unit IS NULL)
SQL中的

CASE与C#中的if不起作用;它只返回一个原子值。

答案 1 :(得分:1)

尝试使用您自己的查询可以通过以下简单更改来实现:

{{1}}

答案 2 :(得分:0)

试试这种方式

SELECT * From ReportData
WHERE       
  Year = @year 
  AND
  (CASE @unit
      WHEN '00000000-0000-0000-0000-000000000000' THEN 1
    ELSE  @unit 
    END
  )= UnitId