Jon*_*nas 3 sql sql-server case where
是否可以通过使用子句中CASE表达式的结果表达式(weight_class)来过滤SQL Server中的记录WHERE?我无法让它工作,因为我收到一个错误说:
列名称'weight_class'无效
码:
SELECT
first_name, last_name,
weight_class = CASE
WHEN weight < 172 THEN 'Welterweight'
WHEN weight <= 192 THEN 'Middleweight'
WHEN weight <= 214 THEN 'Light heavyweight'
WHEN weight <= 220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END
FROM
athletes
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的:
SELECT
first_name, last_name,
weight_class = CASE
WHEN weight < 172 THEN 'Welterweight'
WHEN weight <= 192 THEN 'Middleweight'
WHEN weight <= 214 THEN 'Light heavyweight'
WHEN weight <= 220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END
FROM
athletes
WHERE
weight_class = 'Cruiserweight'
Run Code Online (Sandbox Code Playgroud)
SQL-Server需要一个表别名:
SELECT * from
(
SELECT first_name, last_name,
CASE
WHEN weight<172 THEN 'Welterweight'
WHEN weight<=192 THEN 'Middleweight'
WHEN weight<=214 THEN 'Light heavyweight'
WHEN weight<=220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END AS weight_class
FROM athletes
) as t
WHERE weight_class = 'Cruiserweight'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13454 次 |
| 最近记录: |