Oracle SQL多表
一般来说,我对SQL还很熟悉,所以这可能不是一个措辞最好的问题。我想从不同的表中获取列。它们没有任何公共列,但有第三个表,其中包含能够将它们链接在一起的信息 这就是我一直尝试的方式:Oracle SQL多表,sql,oracle,Sql,Oracle,一般来说,我对SQL还很熟悉,所以这可能不是一个措辞最好的问题。我想从不同的表中获取列。它们没有任何公共列,但有第三个表,其中包含能够将它们链接在一起的信息 这就是我一直尝试的方式: SELECT CI_SA.ACCT_ID, CI_SA.EXPIRE_DT WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17', CI_SP.SP_TYPE_CD WHERE SP_TYPE_CD='G-RES' FROM CI_SA I
SELECT
CI_SA.ACCT_ID,
CI_SA.EXPIRE_DT WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17',
CI_SP.SP_TYPE_CD WHERE SP_TYPE_CD='G-RES'
FROM CI_SA
INNER JOIN CI_SA ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND CI_SP.SP_ID =
CI_SA_SP.SP_ID
这就是我得到的回报:
ORA-00923:未在预期位置找到FROM关键字
92300000-未在预期位置找到FROM关键字
*原因:
*行动:
第3行第18列出现错误
任何人都可以告诉我哪里出错了?表格中的where条件应该在后面 例如,从选项卡1中选择*,其中 试着这样做:
SELECT
CI_SA.ACCT_ID,
CI_SA.EXPIRE_DT ,
CI_SP.SP_TYPE_CD
FROM CI_SA
INNER JOIN CI_SA ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND CI_SP.SP_ID =
CI_SA_SP.SP_ID
WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17'
and SP_TYPE_CD='G-RES'
同样作为用户artur通知,您是否加入CI_SA?还是西萨普?如果CI_SA您也添加了别名,如下所示:
内部连接CI_SA CI_SA_SP…where子句应位于末尾:
SELECT
CI_SA.ACCT_ID,
CI_SA.EXPIRE_DT ,
CI_SP.SP_TYPE_CD
FROM CI_SA
INNER JOIN CI_SA ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND CI_SP.SP_ID =
CI_SA_SP.SP_ID
WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17' and SP_TYPE_CD='G-RES'
WHERE子句位于FROM之后,并且每次选择仅显示一次
也许你打算:
SELECT CI_SA.ACCT_ID, CI_SA.EXPIRE_DT, CI_SP.SP_TYPE_CD
FROM CI_SA INNER JOIN
CI_SA_SP
ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND
CI_SP.SP_ID = CI_SA_SP.SP_ID
WHERE CI_SA.EXPIRE_DT BETWEEN DATE '2017-04-15' AND DATE '2017-04-30' AND
CI_SP.SP_TYPE_CD = 'G-RES';
此外,这修复了FROM子句,因此它引用了CI_SA_SP。另外,我强烈建议使用ISO标准日期格式,因此这将使用日期关键字。首先“选择”,然后“从”,最后“从哪里”。只允许使用一个“WHERE”子句。
联接中的重复CI_SA。除了其他人所说的以外,你还应该使用别名。where子句位于错误的位置,您还需要正确地联接表。我想你想要的是:
SELECT CI_SA.ACCT_ID,
CI_SA.EXPIRE_DT WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17',
CI_SP.SP_TYPE_CD WHERE SP_TYPE_CD='G-RES'
FROM CI_SA
INNER JOIN CI_SA_SP ON CI_SA.SA_ID = CI_SA_SP.SA_ID
INNER JOIN CI_SP ON CI_SP.SP_ID = CI_SA_SP.SP_ID
WHERE CI_SA.EXPIRE_DT BETWEEN TO_DATE('01/04/2017', 'DD/MM/YYYY') AND TO_DATE('30/04/2017', 'DD/MM/YYYY')
AND CI_SP.SP_TYPE_CD = 'G-RES';
编辑您的问题并提供示例数据和所需结果。您的语法与标准SQL相去甚远,其意图尚不清楚。感谢您的澄清!我假设我能够将连接分组在一起,但事实并非如此。现在一切正常运转