SQL Server 2012를 사용하여 프로 시저를 작성하고 있으며이 select 문을 실행하려고 할 때이 오류가 발생합니다.
하위 쿼리가 둘 이상의 값을 반환했습니다. 하위 쿼리가 =,! =, <, <=,>,> = 뒤에 오는 경우 또는 하위 쿼리가 표현식으로 사용되는 경우에는 허용되지 않습니다.
나는 그것이 절의 Select
진술 과 관련이 있다고 생각 where
하지만 너무 확실하지 않습니다.
절차:
select top 100
Team.ID,
Team.Name,
sum(Results.Points) as PointsTotal
from
Results
inner join
Teamon Results.TeamID = Team.ID
where
Results.TeamID = Team.ID
and Results.Date > DATEADD(YY, -1, GETDATE())
and Results.Date <> (Select Min(Date)
from Results
Inner join Competition on Competition.ID = Results.CompetitionID
Inner join Team on Team.ID = Results.TeamID
where CompetitionID = 3
and TeamID = Team.ID
and Date > (DATEADD(YY, -1, GETDATE()))
group by Team.Name
Having Count(Competition.ID) > 1)
group by
Team.ID, Team.Name
order by
PointsTotal desc
WHERE 절이 Team.Name별로 그룹화되고 MIN (Date)을 선택하기 때문에 각 팀의 최소 날짜를 반환합니다 (다른 기준도 기준). <> 연산자를 사용하는 경우 해당 연산자의 다른쪽에 하나의 값만있을 수 있습니다. 둘 이상의 값이 필요한 경우 대신 NOT IN 연산자를 사용하십시오.
개별 팀이 최소 날짜와 일치해야하는 경우 TeamId 및 MinimumDate에 대한 하위 쿼리에 LEFT JOIN을 수행 한 다음 WHERE 절에서 조인하는 필드 중 하나가 NULL인지 확인합니다 ( 이는 조인 조건이 하위 쿼리와 일치하지 않음을 나타내며 해당 팀 및 최소 날짜가있는 모든 레코드를 필터링합니다. 쿼리는 다음과 같습니다.
select top 100 Team.ID,
Team.Name,
sum(Results.Points) as PointsTotal
from Results
inner join Team on Results.TeamID = Team.ID
left join (
Select Team.Id, Min(Date) AS MinDate
from Results
Inner join Competition on Competition.ID = Results.CompetitionID
Inner join Team on Team.ID = Results.TeamID
where CompetitionID = 3
and TeamID = Team.ID
and Date > (DATEADD(YY, -1, GETDATE()))
group by Team.ID
Having Count(Competition.ID) > 1
) MinimumDateQuery ON
Results.TeamID = MinimumDateQuery.Id AND
Results.Date = MinimumDateQuery.MinDate
where Results.Date > DATEADD(YY, -1, GETDATE())
and MinimumDateQuery.Id IS NULL
group by Team.ID, Team.Name
order by PointsTotal desc
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다