在SQL 2008查询中,将case when结果应用于where条件可以通过子查询或者使用派生表来实现。
方法一:使用子查询 可以将case when语句作为子查询的一部分,并将其结果用作where条件。例如,假设我们有一个表格名为"employees",其中包含员工的姓名和薪水信息。我们想要查询薪水大于等于5000的员工信息,但是对于薪水大于等于10000的员工,我们想要将薪水显示为"高薪",可以使用以下查询:
SELECT name,
CASE
WHEN salary >= 10000 THEN '高薪'
ELSE CAST(salary AS VARCHAR(10))
END AS salary
FROM employees
WHERE CASE
WHEN salary >= 10000 THEN '高薪'
ELSE CAST(salary AS VARCHAR(10))
END >= '5000';
在上述查询中,我们使用了两次相同的case when语句,一次用于选择显示的薪水,一次用于where条件。
方法二:使用派生表 另一种方法是使用派生表,将case when语句的结果作为派生表的一部分,并在主查询中引用该派生表。以下是示例查询:
SELECT name, salary
FROM (
SELECT name,
CASE
WHEN salary >= 10000 THEN '高薪'
ELSE CAST(salary AS VARCHAR(10))
END AS salary
FROM employees
) AS derived_table
WHERE derived_table.salary >= '5000';
在上述查询中,我们首先创建了一个派生表,其中包含了case when语句的结果作为新的列"salary"。然后,在主查询中引用了这个派生表,并在where条件中使用了该派生表的"salary"列。
无论是使用子查询还是派生表,都可以将case when语句的结果应用于SQL 2008查询中的where条件。这样可以根据特定条件动态地过滤查询结果。