У меня есть две таблицы в SQL Server 2008 создается следующим:Добавление общей строки в нижней части в запросе SQL Server
CompletedRecordsFinal
:
IF OBJECT_Id('tempdb..#CompletedRecordsFinal') IS NOT NULL
DROP TABLE #CompletedRecordsFinal
SELECT
C1, C2, C3, COUNT(distinct Id) as TotalRecords
INTO
#CompletedRecordsFinal
FROM
#CompletedRecords
GROUP BY
C1, C2, C3
Пример результата:
C1 C2 C3 TotalRecords
A B 1 50
A B 2 100
WaitRecordsFinal
:
IF OBJECT_Id('tempdb..#WaitRecordsFinal') IS NOT NULL
DROP TABLE #WaitRecordsFinal
SELECT
C1, C2, C3, COUNT(distinct Id) as TotalWaitRecords
INTO
#WaitRecordsFinal
FROM
#WaitRecords
GROUP BY
C1, C2, C3
Пример результат:
C1 C2 C3 TotalWaitRecords
A B 1 20
A B 2 30
Я использую эти таблицы с левым внешним соединением, как:
SELECT
w.C1, C.C2, w.C3, TotalWaitRecords, TotalRecords
FROM
#WaitingRecordsFinal w
LEFT OUTER JOIN
#CompletedRecordsFinal c ON c.C1 = w.C1
AND c.C2 = w.C2
AND c.C3 = w.C3
То, что я хочу, чтобы добавить общую строку в нижней части, и я не мог управлять им. Я чувствую, что я рядом, но ничего не работало, как я этого хотел. Мне нужно что-то вроде (не работает):
SELECT
w.C1, C.C2, w.C3, TotalWaitRecords, TotalRecords
FROM
#WaitingRecordsFinal w
LEFT OUTER JOIN
#CompletedRecordsFinal c ON c.C1 = w.C1
AND c.C2 = w.C2
AND c.C3 = w.C3
UNION
SELECT
C1 = 'Total', C2 = 'Total', C3 = -1, TotalWaitRecords, TotalRecords
FROM
#WaitingRecordsFinal w
LEFT OUTER JOIN
#CompletedRecordsFinal c ON c.C1 = w.C1
AND c.C2 = w.C2
AND c.C3 = w.C3
Пример вывода о том, что я хочу:
C1 C2 C3 TotalRecords TotalWaitRecords
A B 1 50 20
A B 2 100 30
Total Total -1 150 50
Любая помощь будет оценена.
EDIT: Моя проблема немного отличается от той, которая указана как дублирующий предмет. Основная проблема: у меня есть 3 столбца для группы. Поэтому, когда я group by C1, C2, C3, with rollup
я вижу, что:
.....
X B -1 300 500
X Total -1 300 500
.....
A B -1 56 47
A Total -1 56 47
Total Total -1 356 547
Я просто нужен самый нижний ряд, а не в других. Поэтому это решение не помогает. Как я могу избавиться от других, кроме самого нижнего Total Total one?
Add после того, как группу С1, С2, С3 С ROLLUP – mxix
TotalWaitRecords Column/TotalRecords недопустим в списке выбора, поскольку он не содержится ни агрегатной функции или предложения GROUP BY. –
Возможный дубликат [Добавить итоговую строку с итогами] (http://stackoverflow.com/questions/17934318/add-a-summary-row-with-totals) –