繁体   English   中英

Sql Case语句错误无法选择多个列

[英]Sql Case Statement Error Cannot select More Than one Column

我需要从Case语句中的SQL Select语句获取供应商ID。 A.SUPPLIER_ID放入Select语句后,出现错误。 这个怎么做?

Select 
       CASE 
         WHEN  TYPE = 1 THEN 
           (
              SELECT A.name 
              from BIZZXE_V2_SCH.SUPPLIERS A
              where A.SUPPLIER_ID = 30
           ) 
        ELSE
          (
            SELECT A.name 
            from BIZZXE_V2_SCH.STOCK_SUPPLIER A
            where A.SUPPLIER_ID = 31
          )
        END name
from DUAL;

您不能将完整的查询放入case语句中。 但这应该有效

SELECT name
from BIZZXE_V2_SCH.SUPPLIERS
where SUPPLIER_ID = 30 and TYPE = 1
union all
SELECT name
from BIZZXE_V2_SCH.STOCK_SUPPLIER
where SUPPLIER_ID = 31 and TYPE <> 1

您应该能够像这样在WHERE语句中处理此问题。

SELECT A.name 
FROM BIZZXE_V2_SCH.STOCK_SUPPLIER A
WHERE (A.SUPPLIER_ID = 30 AND TYPE = 1) OR
A.SUPPLIER_ID = 31

使用IF/ELSE语句

DECLARE @type NUMBER;
SELECT TYPE INTO @type FROM DUAL; -- Make sure it always returns one row

IF @type = 1 THEN
    SELECT A.name 
    FROM BIZZXE_V2_SCH.SUPPLIERS A
    WHERE A.SUPPLIER_ID = 30;
ELSE
    SELECT A.name 
    FROM BIZZXE_V2_SCH.STOCK_SUPPLIER A
    WHERE A.SUPPLIER_ID = 31
END IF;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM