2013-04-05 3 views
0

Я пытаюсь посчитать два столбца с помощью следующего запроса:Два Подсчеты в трех таблицах

select distinct [District], 
    count (Distinct [Student Identifier Statewide California]) 
     as '11-12 Enrollment', 
    (select count (Distinct IncdtKey) 
From [dbo].[DisciplineStudentFile1112] 
where GrdLvLKey in ('15', '01', '02', '03', '04', 
         '05', '06', '07', '08', '09', 
         '10', '11', '12', '18', '19')) as Total_Incidents 
From 
    dbo.SSID1112StudentEnrollmentRecords with (nolock) 
inner join 
    [dbo].[SchoolDetail] on CDSCode = dbo.SSID1112StudentEnrollmentRecords.CDSOrig 
where 
    [EnrollStatCodeOrig] like '10' 
and 
    [Grade Level Code] in ('PS', 'KN', '01', '02', '03', 
         '04', '05', '06', '07', '08', 
         '09', '10', '11', '12', 'UE', 'US') 
group by [District] 
order by [District] 

Моих результатов:

District  11-12 Enrollment Total_Incidents 
AB Unified   20662    896371 
CE Unified   5387     896371 
DR Unified   526     896371 
FJ Unified   1506     896371 
KT Unified   8415     896371 

Я не могу понять, как получить индивидуальные счетчики в столбце Total_Incidents вместо общего количества 896371?

+0

Привет, вы можете указать имя своего менеджера баз данных? – jsedano

+0

Обычно для получения индивидуальных счетов требуется предложение 'group by'. Вы пробовали 'group by [Total Incidents]'? – 9000

+0

Спасибо anakata. Это SQL Server management Studio – user2250917

ответ

0

Простой подход соотносить подзапрос с внешним запросом:

select distinct SD.District, 
    count (distinct SER.[Student Identifier Statewide California]) as [11-12 Enrollment], 
    (select count(distinct DSF.IncdtKey) from dbo.DisciplineStudentFile1112 as DSF 
    where DSF.GrdLvLKey in ('15', '01', '02', '03', '04', '05', '06', '07', '08', '09', 
     '10', '11', '12', '18', '19') and -- Note additional condition here. 
     DSF.District = SD.District) as Total_Incidents 
from dbo.SSID1112StudentEnrollmentRecords as SER with (nolock) inner join 
    dbo.SchoolDetail as SD on SD.CDSCode = SER.CDSOrig 
where SER.EnrollStatCodeOrig like '10' and 
    [Grade Level Code] in ('PS', 'KN', '01', '02', '03', '04', '05', '06', '07', '08', 
    '09', '10', '11', '12', 'UE', 'US') 
group by SD.District 
order by SD.District 

Я сделал несколько предположений о схемах таблицы. Я бы рекомендовал, чтобы при использовании объединений вы предоставляли псевдоним для каждой таблицы и использовали псевдоним для каждой ссылки, чтобы избежать путаницы.

Альтернативным решением было бы использовать другое соединение с DisciplineStudentFile1112, а затем суммировать результаты, используя GROUP BY.

+0

HABO Большое вам спасибо. Ваше решение отлично работало. И спасибо за то, что я показал корреляционные шаги. – user2250917

Смежные вопросы