【问题标题】:case when clause in sql query in db2db2中sql查询中的case when子句
【发布时间】:2020-03-05 18:47:53
【问题描述】:

我有一个 db2/AS400 数据库,我正在尝试执行以下查询:

SELECT *
FROM user
WHERE id IN (
    CASE 
     WHEN 1=1 THEN
        (SELECT id
        FROM user AS userInner
        WHERE userInner.salary < 10)
     ELSE
        (SELECT id
        FROM user AS userInner
        WHERE userInner.salary > 20)
    END
)

1=1 条件取决于其他条件,但对于这个简单的示例来说没问题。但是我得到的错误如下:

SQL 错误 [21000]:[SQL0811] SELECT 的结果超过一行。

如何使用 case when 或其他方式来获得具有多个结果的 sql_statement 条件?

谢谢

【问题讨论】:

  • 请提供样本数据和期望的结果。

标签: sql db2-400


【解决方案1】:

我认为你不需要CASE
你可以这样做:

SELECT *
FROM user
WHERE id IN (
  SELECT id FROM user
  WHERE (1=1 AND userInner.salary < 10)
     OR (1<>1 AND userInner.salary > 20)
)

当然,1=1 必须替换为您的实际情况,1&lt;&gt;1 替换为相反的情况。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2017-05-30
    • 1970-01-01
    • 2021-09-13
    • 2022-12-15
    • 2013-03-25
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多