sql - SQL 查询问题中的案例语句
问题描述
我正在尝试运行 SQL 查询,但运行时发生错误。
错误:
[代码:-811,SQL 状态:21000]
标量全查询、SELECT INTO 语句或 VALUES INTO 语句的结果超过一行
。SQLCODE=-811,SQLSTATE=21000,DRIVER=4.19.49
这是我试图运行的 SQL 查询,我认为我的CASE
语句有问题,我的解决方案已经用完了。请帮忙,非常感谢!
SELECT
ES.SHPMNT_REF,
(CASE
WHEN (ES.SERVICE_PROVIDER_NAME) IS NULL
THEN (SELECT BRDB.EXPORT_ONHAND.SERVICE_PROVIDER_NAME
FROM BRDB.EXPORT_ONHAND
WHERE BRDB.EXPORT_ONHAND.SHPMNT_REF = ES.SHPMNT_REF)
ELSE (ES.SERVICE_PROVIDER_NAME)
END) AS SP
FROM
BRDB.EXPORT_SHIPMENT ES
WHERE
ES.DATE_CREATE > CURRENT TIMESTAMP - 30 DAYS
解决方案
我想这就是你所追求的。加入您可能需要的表数据,然后让 COALESCE 检查 null 并获取其他数据(如果是)。
SELECT
ES.SHPMNT_REF,
COALESCE(ES.SERVICE_PROVIDER_NAME, OH.SERVICE_PROVIDER_NAME) AS SP
FROM BRDB.EXPORT_SHIPMENT ES
LEFT JOIN BRDB.EXPORT_ONHAND AS OH
ON ES.SHPMNT_REF = OH.SHPMNT_REF
WHERE
ES.DATE_CREATE > CURRENT TIMESTAMP - 30 DAYS
推荐阅读
- python - 将图像划分为块
- javascript - 如果检测到颜色改变,Jquery会立即改变文本的颜色
- python - 如何将硒屏幕截图直接保存/上传到第三方?Discord/Imgur/其他 Python3
- amazon-web-services - AWS ECS DescribeContainerInstances 由于 accountId 不匹配而生成 InvalidParameterException
- sharepoint - Sharepoint 项目多级审批
- laravel - Laravel 与 OR 和 WHERE 从原始查询到 Eloquent
- c# - AES解密的前16个字节是垃圾
- r - 按日期范围对数据表进行子集化
- c# - 使用正则表达式抓取多个匹配的字符串
- laravel - Laravel 在数据库中显示 0 而不是保存的值