Sql 案例语句错误不能 select 多于一列
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;
我需要从 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;