使用子查询时出错

时间:2017-03-02 16:35:56

标签: sql sql-server tsql

我需要一个输出来显示此查询中的TripName,[Type],FirstName,LastName和[NumberOfGuides],但是我收到一条错误说明:

  

"消息512,级别16,状态1,行2子查询返回的值超过1   值。当子查询遵循=,!=,<,< =,

时,不允许这样做      
    

,> =或当子查询用作表达式时。"

  
select TripName, [Type], FirstName, LastName, (select count(*)
from Guide g, TripGuide tr, Trip t 
where g.GuideNum = tr.GuideNum and t.TripID = tr.TripID
group by TripName, Type 
having count(*) > 1 ) as [NumberOfGuides]
from Guide, Trip
order by NumberOfGuides desc

2 个答案:

答案 0 :(得分:0)

即使我无法完全解读您的查询,也要从子查询中移出count

select TripName, [Type], FirstName, LastName, count(
    select *
    from Guide g, TripGuide tr, Trip t
    where g.GuideNum = tr.GuideNum and t.TripID = tr.TripID
    group by TripName, Type
    having count(*) > 1 ) as [NumberOfGuides]
from Guide, Trip
order by NumberOfGuides desc

除此之外,子查询中似乎存在逻辑错误,因为没有与顶部查询的链接。

所以我想列NumberOfGuides总是报告相同的值。

答案 1 :(得分:0)

我不明白显示指南数量的要求,您已经显示了可用的指南名称。通常对于这种结果列,指南的数量将为1,因为该行程将只有1个指南,该名称可用。如果您可以向我们提供您所期望的要求目标和样本所需结果,那将对您有所帮助。