2016-01-27 4 views
-3

Я использовал эту таблицу Temp, чтобы вернуть общее количество проблем с SOlved и общее количество ожидающих дел из той же таблицы, сгруппированной по DIstrict, например.Почему мой запрос не возвращает правильные результаты?

District TotalSolvedCases TotalPendingCases 
A    3    1 
B    8    6 
C    7    1 

Я сделал это, но это не возвращает правильный результат

SELECT * 
INTO #Table1 
FROM (
    SELECT COUNT(Cases.pk_Cases_CaseID) TotalCases, 
      Districts.DistrictName 
    FROM Cases 
    INNER JOIN ConcernedOffices ON ConcernedOffices.pk_ConcernedOffices_ID = Cases.fk_ConcernedOffices_Cases_ConcernedOfficeID 
    INNER JOIN Districts ON Districts.pk_Districts_DistrictID = ConcernedOffices.fk_Districts_ConcernedOffices_DistrictID 
    INNER JOIN CaseHearings ON CaseHearings.fk_Cases_CaseHearings_CaseID = Cases.pk_Cases_CaseID 
    WHERE CaseHearings.IsClosingDate = 1 
    GROUP BY Districts.DistrictName 
) d 

SELECT * 
INTO #Table2 
FROM (
    SELECT COUNT(Cases.pk_Cases_CaseID) TotalPedningCases, 
      Districts.DistrictName 
    FROM Cases 
    INNER JOIN ConcernedOffices ON ConcernedOffices.pk_ConcernedOffices_ID = Cases.fk_ConcernedOffices_Cases_ConcernedOfficeID 
    INNER JOIN Districts ON Districts.pk_Districts_DistrictID = ConcernedOffices.fk_Districts_ConcernedOffices_DistrictID 
    INNER JOIN CaseHearings ON CaseHearings.fk_Cases_CaseHearings_CaseID = Cases.pk_Cases_CaseID 
    WHERE CaseHearings.IsClosingDate = 0 
    GROUP BY Districts.DistrictName 
) d 

SELECT #Table1.TotalCases AS TotalSolvedCases, 
     #Table2.TotalPedningCases, 
     #Table1.DistrictName 
FROM #Table1 
INNER JOIN #Table2 ON #Table2.DistrictName = #Table1.DistrictName 
GROUP BY #Table1.TotalCases, 
     #Table2.TotalPedningCases, 
     #Table1.DistrictName 
+0

Вы можете разместить фактическое таблицы данных (с DDL), текущий результат и ожидаемый результат? – Max

+0

Ответ не правильный. Вы действительно думаете, что можем помочь вам на этом? – Paparazzi

+0

@Frisbee не надоело, это сделано – user5820210

ответ

4

Вам нужно только один SELECT, используйте case выражения, чтобы сделать условный подсчет:

SELECT COUNT(case when CaseHearings.IsClosingDate = 1 then 1 end) TotalCases, 
     COUNT(case when CaseHearings.IsClosingDate = 0 then 1 end) TotalPedningCases, 
     Districts.DistrictName 
FROM Cases 
INNER JOIN ConcernedOffices ON ConcernedOffices.pk_ConcernedOffices_ID = Cases.fk_ConcernedOffices_Cases_ConcernedOfficeID 
INNER JOIN Districts ON Districts.pk_Districts_DistrictID = ConcernedOffices.fk_Districts_ConcernedOffices_DistrictID 
INNER JOIN CaseHearings ON CaseHearings.fk_Cases_CaseHearings_CaseID = Cases.pk_Cases_CaseID 
GROUP BY Districts.DistrictName 
+0

спасибо, сэр, да, я сделал это, но для своей практики и обучения я хочу достичь этого через таблицы Temp, и я не могу – user5820210

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