我正在尝试翻译我的查询,类似于下面的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中实现它?
答案 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