2015-05-21 2 views
0

У меня есть общее число, которое нужно получить из таблиц SQL-сервера, которые связаны с подсчетами подсети, и у меня возникли проблемы с выяснением того, как выполнить вложение, какая-либо помощь будет назначена.Вложенная сумма SQL-запрос

Таблицы (Примечание: обрезается до полезных данных)

PrintJob - ID, DEPT, CopyCount имеет много данные Фирменные реквизиты (отметьте его другой счетчик копий) Выходные данные - ID, JobId, CopyCount имеет много pageDatas PageData - ImprintID, индекс, ImpressionCount

Теперь для каждого DEPT мне нужно получить суммы (PrintJob.CopyCount * сумма его (imprint.CopyCount * сумма PageData.ImpressionCount его (IMPRINT в)))

Итак, для каждого отпечатка необходимо, чтобы все показатели Impression страницы были суммированы, а затем умножены на CopyCount отпечатка.

Эта сумма за каждый отпечаток затем может быть суммирована с каждым PrintJob, чтобы указать количество копий отпечатка на Printjob, чтобы их можно было умножить на PrintJob.CopyCount, чтобы дать общее количество отпечатков на каждое задание.

Это можно затем суммировать как каждое задание на печать для каждого отдела, чтобы дать итоговую таблицу результатов, но как я могу получить это эффективно в одном запросе?

SAMPLE DATA

CREATE TABLE PrintJob 
(
ID varchar(10), 
DEPT varchar(10), 
CopyCount int 
); 

CREATE TABLE Imprint 
(
ID varchar(10), 
JobId varchar(10), 
CopyCount int 
); 

CREATE TABLE PageData 
(
ImprintID varchar(10), 
[Index] int, 
ImpressionCount int 
); 

INSERT INTO PrintJob (ID, DEPT, CopyCount) 
Values 
('J1','D1',2), 
('J2','D1',1), 
('J3','D2',5), 
('J4','D2',4) 
; 

INSERT INTO Imprint (ID, JobId, CopyCount) 
Values 
('I1','J1',1), 
('I2','J1',2), 
('I3','J2',1), 
('I4','J3',2), 
('I5','J4',2), 
('I6','J4',2) 
; 

INSERT INTO PageData (ImprintID, [Index], ImpressionCount) 
Values 
('I1',1,1), 
('I1',2,3), 
('I1',3,1), 
('I2',1,1), 
('I3',1,1), 
('I3',2,2), 
('I4',1,1), 
('I4',2,1), 
('I5',1,1), 
('I6',1,5) 
; 
+0

WITE выборки данных ... –

+0

Пожалуйста, измените вопрос, чтобы включить соответствующие таблицы DDL, некоторые примеры данных (предпочтительно в качестве операторов DML) и желаемого вывода. –

ответ

0

Если я прав, то Вы имеете в виду это:

select j.DEPT, sum(j.CopyCount * i.SubCount) TotalCount 
from PrintJob j 
join (
    select i.JobId, sum(i.CopyCount * p.ICountSum) SubCount 
    from Imprint i 
     join (
      select ImprintID, SUM(ImpressionCount) ICountSum 
      from PageData 
      group by ImprintID) p on p.ImprintID= i.ID 
    group by i.JobId) i on i.JobId = j.ID 
group by j.DEPT 
Смежные вопросы