我有一个表,有3列ID,名称,楼层和天花板。我需要构建一个select语句来连接或不连接下限和上限的值。如果地板和天花板相同,那么我只需要返回Floor,但如果它们不同,我希望将列连接为范围列。
以下是示例数据:
ID | Name | Floor | Ceiling
---------------------------
1 name1 1 2
2 name2 5 5
3 name3 7 9该语句应返回以下内容:
ID | Name | Range
-----------------
1 name1 1-2
2 name2 5
3 name3 7-9这是我到目前为止的声明,我做错了什么?
SELECT name,
(CASE
WHEN floor != ceiling THEN CONCAT(floor, '-', ceiling) AS range
ELSE floor AS range
END)
FROM tablename任何帮助都将不胜感激!
谢谢!
发布于 2020-05-15 01:34:50
你已经很接近了。您不需要将AS range放在CASE表达式中,而是放在表达式的末尾。
SELECT name,
CASE
WHEN floor != ceiling THEN CONCAT(floor, '-', ceiling)
ELSE floor
END AS range
FROM tablename发布于 2020-05-15 01:35:49
您应该将别名range放在CASE子句之外,如下所示:
SELECT name,
(CASE
WHEN floor != ceiling THEN CONCAT(floor, '-', ceiling)
ELSE floor
END) AS range
FROM tablename;https://stackoverflow.com/questions/61803560
复制相似问题