【发布时间】:2020-02-13 01:17:53
【问题描述】:
我正在努力处理 SELECT 语句中的子查询。我收到一个错误,缺少 FROM 表达式 (ORA-00923)。
我希望将计数结果放在一行中,因此我尝试在 SELECT 语句中使用子查询,但似乎 SQL 无法识别子查询中的表。
主 FROM 语句中的子查询本身就可以正常工作。
我不知道问题出在哪里。
SELECT RETDATA.DATETIME AS "Date",
(SELECT COUNT(RET.EAN)
FROM RETDATA RET
WHERE RET.GOODTYPE = 'A-goods') AS 'A-goods',
(SELECT COUNT(RET.EAN)
FROM RETDATA RET
WHERE RET.GOODTYPE = 'B-goods') AS 'B-goods',
(SELECT COUNT(RET.EAN)
FROM RETDATA RET
WHERE RET.GOODTYPE = 'C-goods') AS 'C-goods',
(SELECT COUNT(RET.EAN)
FROM RETDATA RET
WHERE RET.WAREHOUSE = 'Bring (Norway)') AS 'Norway_returns',
(SELECT COUNT(RET.EAN)
FROM RETDATA RET
WHERE RET.WAREHOUSE = 'Hermes') AS 'Hermes_returns'
FROM (SELECT TRUNC(V_D."DateTime") AS DATETIME,
V_D2."ProductReference" AS EAN,
CASE WHEN V_D3."Name" = 'OK (A-Item)' THEN 'A-goods'
WHEN V_D3."Name" IN ('Used','Dirty') THEN 'B-goods'
ELSE 'C-goods' END AS GOODTYPE,
V_D6."Name" AS WAREHOUSE
FROM REPORT.V_PORTALDATAORDERS_SALESORDER V_P
JOIN REPORT.V_DATARETURNS_RETURN V_D ON V_P."OrderNumberExternal"=V_D."OrderReference"
JOIN REPORT.V_DATARETURNS_RETURNSTATUS V_D1 ON V_D."ReturnStatusId"=V_D1."Id"
JOIN REPORT.V_DATARETURNS_RETURNLINE V_D2 ON V_D."Id"=V_D2."ReturnId"
JOIN REPORT.V_DATARETURNS_RETURNCONDITION V_D3 ON V_D2."ReturnConditionId"=V_D3."Id"
JOIN REPORT.V_DATAGLOBAL_WORKSTATION V_D5 ON V_D2."WorkstationId"=V_D5."Id"
JOIN REPORT.V_DATAGLOBAL_WAREHOUSE V_D6 ON V_D5."WarehouseId"=V_D6."Id"
WHERE V_P."CompanyId" = 3
AND V_D1."Label" in ('Processed', 'New')
AND TRUNC(V_D."DateTimeDone") = TO_CHAR(sysdate-1, 'YYYY-MM-DD')) RETDATA
【问题讨论】:
-
AS 'A-goods',是无效的 SQL。标识符需要用双引号括起来,而不是单引号。
标签: sql select oracle11g subquery