当我使用下面的代码时(它来自Oracle人员,并且他说没有理由不能工作......)我被告知最后的语法不正确')& #39 ;.任何想法我怎么能改变这个" SQL适当"?我的想法是它不喜欢最后一个选择语句。
select
*
from
CPINInvest
where
[Case ID||] not in
(
select [Case ID||]
from
(
select [Case ID||], count(*)
from CPINComm140
where [Role CD||]='PRI||'
group by [Case ID||]
having count(*)=1
)
)
答案 0 :(得分:0)
可以缩短。
select * from CPINInvest
where [Case ID||] not in (
select [Case ID||]
from CPINComm140
where [Role CD||]='PRI||'
group by [Case ID||]
having count(*)=1
);
但严重的是,管道在字段中?育!
原始查询失败的原因是:
1)count(*)需要别名。例如[total]
2)tsql有一个奇怪的要求,即某些子查询需要别名
答案 1 :(得分:0)
sql喜欢你为你的子查询提供别名,即使它们没有被使用。这可行,但@LukStorms更短的版本更好。
select *
from CPINInvest
where
[Case ID||] not in
(
select [Case ID||]
from
(
select [Case ID||], count(*)
from CPINComm140
where [Role CD||]='PRI||'
group by [Case ID||]
having count(*)=1
) x
) y
答案 2 :(得分:0)
使用以下查询。您忘记在子表中添加别名。
select
*
from
CPINInvest
where
[Case ID||] not in
(
select [Case ID||]
from
(
select [Case ID||], count(*)
from CPINComm140
where [Role CD||]='PRI||'
group by [Case ID||]
having count(*)=1
)t
)