同一 select SQL 中不同行的不同情况
Different case conditions on different rows in same select SQL
我想做以下事情
Sel column1,
(CASE WHEN column1=x then 1
ELSE
2
end) AS Key1,
(CASE WHEN column2 =y then 1
CASE WHEN column2 = z then 2
ELSE
3
END) AS Key2
FROM table x
但它给了我语法错误,应该是整数和 'CASE' 关键字之间的 'END' 关键字。 ,关于如何做到这一点的任何线索?如何在同一个 select 上使用多个 case when?我不想使用子查询和内部联接。
谢谢
试试这个。你在声明中写了额外的case
。
此行出错
CASE WHEN column2 = z then 2
正确查询
Sel column1,
(CASE WHEN column1=x then 1
ELSE
2
end) AS Key1,
CASE WHEN column2 =y then 1
WHEN column2 = z then 2
ELSE
3
END) AS Key2
FROM table x
在 CASE
表达式中使用多个 WHEN
条件时,语法为:
CASE
WHEN <condition> THEN <result>
WHEN <condition> THEN <result>
ELSE
END
在您的情况下,您必须删除第二个 CASE
表达式中的第二个 CASE
关键字:
SELECT
column1,
(CASE
WHEN column1 = x THEN 1
ELSE 2
END) AS Key1,
(CASE
WHEN column2 = y THEN 1
WHEN column2 = z THEN 2
ELSE 3
END) AS Key2
FROM tableX
正如 XING 已经回答的那样,问题是您原始查询中的一个额外 CASE。
您还可以使用另一种不太冗余的 CASE 语法(您不需要一遍又一遍地重复列的名称)。
SELECT column1,
CASE column1
WHEN x THEN 1
ELSE 2
END AS Key1,
CASE column2
WHEN y then 1
WHEN z then 2
ELSE 3
END AS Key2
FROM table x
我想做以下事情
Sel column1,
(CASE WHEN column1=x then 1
ELSE
2
end) AS Key1,
(CASE WHEN column2 =y then 1
CASE WHEN column2 = z then 2
ELSE
3
END) AS Key2
FROM table x
但它给了我语法错误,应该是整数和 'CASE' 关键字之间的 'END' 关键字。 ,关于如何做到这一点的任何线索?如何在同一个 select 上使用多个 case when?我不想使用子查询和内部联接。
谢谢
试试这个。你在声明中写了额外的case
。
此行出错
CASE WHEN column2 = z then 2
正确查询
Sel column1,
(CASE WHEN column1=x then 1
ELSE
2
end) AS Key1,
CASE WHEN column2 =y then 1
WHEN column2 = z then 2
ELSE
3
END) AS Key2
FROM table x
在 CASE
表达式中使用多个 WHEN
条件时,语法为:
CASE
WHEN <condition> THEN <result>
WHEN <condition> THEN <result>
ELSE
END
在您的情况下,您必须删除第二个 CASE
表达式中的第二个 CASE
关键字:
SELECT
column1,
(CASE
WHEN column1 = x THEN 1
ELSE 2
END) AS Key1,
(CASE
WHEN column2 = y THEN 1
WHEN column2 = z THEN 2
ELSE 3
END) AS Key2
FROM tableX
正如 XING 已经回答的那样,问题是您原始查询中的一个额外 CASE。
您还可以使用另一种不太冗余的 CASE 语法(您不需要一遍又一遍地重复列的名称)。
SELECT column1,
CASE column1
WHEN x THEN 1
ELSE 2
END AS Key1,
CASE column2
WHEN y then 1
WHEN z then 2
ELSE 3
END AS Key2
FROM table x