通过在 DB2 中使用 CASE 语句来区分顺序失败
Distinct failing with order by having CASE statment in DB2
我在从 table
获取不同记录时遇到问题
我的查询:
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
ORDER BY
CASE WHEN name LIKE 'S%' THEN 0 else 1 end,name
错误:[SQL01214]按表达式排序无效
错误详情:https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.1.0/com.ibm.db2.udb.msg.doc/doc/sql0214.htm
我尝试编写子查询和相关子查询,但没有成功
需要帮助来获得备用 SQL 查询..
根据您提供的documentation link from IBM,您的错误似乎是由以下情况引起的:
DISTINCT is specified in the select clause and the expression cannot be matched exactly with an expression in the select list. This reason code occurs only when clause-type is ORDER BY.
换句话说,您在 name
字段中使用了 DISTINCT
,但随后又尝试在 ORDER BY
子句中使用 name
。
您可以尝试以下子查询来解决 DISTINCT
关键字的潜在问题:
SELECT t.name
FROM
(
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
) t
ORDER BY
CASE WHEN t.name LIKE 'S%' THEN 0 else 1 end, t.name
使用通用 table 表达式按不同 select 中的 case 语句排序。
with cte as (
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
)
select * from cte
ORDER BY
CASE WHEN name LIKE 'S%' THEN 0 else 1 end,name
我在从 table
获取不同记录时遇到问题我的查询:
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
ORDER BY
CASE WHEN name LIKE 'S%' THEN 0 else 1 end,name
错误:[SQL01214]按表达式排序无效
错误详情:https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.1.0/com.ibm.db2.udb.msg.doc/doc/sql0214.htm
我尝试编写子查询和相关子查询,但没有成功
需要帮助来获得备用 SQL 查询..
根据您提供的documentation link from IBM,您的错误似乎是由以下情况引起的:
DISTINCT is specified in the select clause and the expression cannot be matched exactly with an expression in the select list. This reason code occurs only when clause-type is ORDER BY.
换句话说,您在 name
字段中使用了 DISTINCT
,但随后又尝试在 ORDER BY
子句中使用 name
。
您可以尝试以下子查询来解决 DISTINCT
关键字的潜在问题:
SELECT t.name
FROM
(
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
) t
ORDER BY
CASE WHEN t.name LIKE 'S%' THEN 0 else 1 end, t.name
使用通用 table 表达式按不同 select 中的 case 语句排序。
with cte as (
SELECT DISTINCT name FROM employee WHERE name LIKE '%S%'
)
select * from cte
ORDER BY
CASE WHEN name LIKE 'S%' THEN 0 else 1 end,name