Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle:ORA-00936:缺少表达式,正在尝试将where语句添加到选定列_Sql_Oracle_Where - Fatal编程技术网

Sql Oracle:ORA-00936:缺少表达式,正在尝试将where语句添加到选定列

Sql Oracle:ORA-00936:缺少表达式,正在尝试将where语句添加到选定列,sql,oracle,where,Sql,Oracle,Where,我有一个SQL查询,它可以很好地从我们的数据库中获取过去两年的信息。当我尝试添加一个向SQL添加新条件的语句时,问题就出现了 where ASSIGNED_REP = 'PERSON, SOME', 也许我做得不对,但我从其中一个专栏中看到的是这样设置的: name_full AS ASSIGNED_REP, 所以我想如果我添加where语句,它应该只返回包含我给它的用户名的列的结果。但是,我得到了错误Oracle:ORA-00936:missing expression 在第4行添加了wh

我有一个SQL查询,它可以很好地从我们的数据库中获取过去两年的信息。当我尝试添加一个向SQL添加新条件的语句时,问题就出现了

where ASSIGNED_REP = 'PERSON, SOME',
也许我做得不对,但我从其中一个专栏中看到的是这样设置的:

name_full AS ASSIGNED_REP,
所以我想如果我添加where语句,它应该只返回包含我给它的用户名的列的结果。但是,我得到了错误
Oracle:ORA-00936:missing expression

在第4行添加了
where ASSIGNED_REP='PERSON,SOME'
之前,我的SQL一直运行良好

我是SQL新手,所以我确信我遗漏了一些东西

完整SQL:

select 
ccc.BID AS B_ID,
TTTT,
name_full AS ASSIGNED_REP where ASSIGNED_REP = 'PERSON, SOME', /* issue is here */
bbb.CUID,
bbb.BNN,
bbb.PGN,
ccc.TYP_CD AS CLM_TYP,
ccc.C_TYP AS SCLM_TYP,
C_DATE,
NEXT_DATE,
SUM(ccc.LINE) AS line_items,
SUM(ccc.AMT) AS c_amount,
SUM(ccc.CO_RSLVD) AS Z_RSLVD,
SUM(ccc.CU_RSLVD) AS C_RSVLD,
ccc.STATUS_TYP AS STATUS,
DATE_FOLLOW_UP,
bbb.STATE
from bstatus bbb
join display_view ccc on ccc.bnn = bbb.bn
left join user_profile up on uuu.zz_id = ccc.ASSIGNED_USER_ID
where ccc.C_DATE >= (sysdate - 730)
/* Also tried */
/* and ASSIGNED_REP = 'PERSON, SOME' */
group by ccc.BID,
TTTT,
uuu.name_full,
bbb.CUID,
bbb.BAN,
bbb.PGN,
ccc.TYP_CD,
ccc.C_TYP,
C_DATE,
NEXT_DATE,
ccc.STATUS_TYP,
DATE_FOLLOW_UP,
bbb.STATE

你在正确的轨道上。这里要做的是添加到现有的WHERE子句中

SELECT ccc.BID AS B_ID
    ,TTTT
    ,ASSIGNED_REP
    ,bbb.CUID
    ,bbb.BNN
    ,bbb.PGN
    ,ccc.TYP_CD AS CLM_TYP
    ,ccc.C_TYP AS SCLM_TYP
    ,C_DATE
    ,NEXT_DATE
    ,SUM(ccc.LINE) AS line_items
    ,SUM(ccc.AMT) AS c_amount
    ,SUM(ccc.CO_RSLVD) AS Z_RSLVD
    ,SUM(ccc.CU_RSLVD) AS C_RSVLD
    ,ccc.STATUS_TYP AS STATUS
    ,DATE_FOLLOW_UP
    ,bbb.STATE
FROM bstatus bbb
    JOIN display_view ccc ON ccc.bnn = bbb.bn
    LEFT JOIN user_profile up ON uuu.zz_id = ccc.ASSIGNED_USER_ID
WHERE ccc.C_DATE >= (sysdate - 730)
    AND name_full = 'PERSON, SOME'
GROUP BY ccc.BID
    ,TTTT
    ,uuu.name_full
    ,bbb.CUID
    ,bbb.BAN
    ,bbb.PGN
    ,ccc.TYP_CD
    ,ccc.C_TYP
    ,C_DATE
    ,NEXT_DATE
    ,ccc.STATUS_TYP
    ,DATE_FOLLOW_UP
    ,bbb.STATE

现在,您将只获得名为
person的人过去两年的票证,有些人的查询结构是。你不能有一个以上的<代码> < < /代码> CaluS1,它不属于选择列表的中间。

要添加另一个条件,请将其添加到现有的
where
子句中:

select 
ccc.BID AS B_ID,
TTTT,
uuu.name_full AS ASSIGNED_REP,
...
where ccc.C_DATE >= (sysdate - 730)
and uuu.name_full = 'PERSON, SOME'
group by ccc.BID,
...
请注意,在where子句中不能使用
ASSIGNED_REP
别名,必须使用原始列名。与上述内容相关的文件还包括(重点补充):

c_别名

指定列表达式的别名。Oracle数据库将在结果集的列标题中使用此别名。
AS
关键字是可选的。在查询期间,别名有效地重命名了选择列表项别名可以在order\u by\u子句中使用,但不能在查询中的其他子句中使用。

因此,您可以按分配的_REP
排序,但不能在
where
子句或其他任何地方使用它



1我正在忽略子查询…

使用
而不是
。请显示完整的状态。您不能使用
where
中的
select
子句中的别名!您不能基于别名添加WHERE条件,但需要参考以下列:
WHERE name\u full=…
可能的重复项可能是结尾处的额外逗号?也许你想用别名?可能您正在多次键入
where
?在发布整个sql语句之前,您将得到很多可能的结果。这看起来像是成功了。我的查询将以所需的结果运行。非常感谢你。我的主要问题是使用了错误的列名引用。我应该用全名而不是指定的代表。我以前也试过用AND语句,但列名不对。谢谢Alex。出于某种原因,我认为可以使用别名。我不知道我的问题就在这里。@Mike SMT-我已经强调了文档中的相关部分。别担心,这是个常见的错误(8-)谢谢。我选择了你的答案,因为它解释了为什么我所做的不起作用。非常感谢。