我想实现这样的目标:
SELECT
(CASE WHEN ...) AS FieldA,
FieldA + 20 AS FieldB
FROM Tbl
假设我用“...”替换了一个又长又复杂的CASE语句,那么在选择FieldB时我不想重复它
并使用别名 FieldA
代替。
请注意,这将返回多行,因此 SELECT
语句之外的 DECLARE
/SET
对于我的情况来说是不好的。
最佳答案
解决方法是使用子查询:
SELECT
FieldA,
FieldA + 20 AS FieldB
FROM (
SELECT
(CASE WHEN ...) AS FieldA
FROM Tbl
) t
<小时/>
为了提高可读性,您还可以使用 CTE
:
WITH t AS (
SELECT
(CASE WHEN ...) AS FieldA
FROM Tbl
)
SELECT
FieldA,
FieldA + 20 AS FieldB
FROM
t
关于sql - 在 SQL SELECT 语句中重用别名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446843/