В настоящее время я использую MS Sql2000, хотя мы обсуждаем его обновление до 2005 года (если это повлияет на что-то, я предполагаю, что мне нужен достаточно стандартный SQL)
Один из наших продуктов отслеживает продажи из различныхотделы по всей стране.В настоящее время я запускаю 3 почти идентичных хранимых процедуры в Query Analyzer, а затем копирую результаты в Excel и трачу целый час на манипулирование ими в одной электронной таблице.
Я бы хотел придуматьрешение для объединения всех моих хранимых процедур, так что в итоге я получаю один объединенный набор данных, который я могу просто перейти в Excel и отправить заинтересованным сторонам по почте.
Решение, которое я начал придумывать, включало временную таблицу, где я сначала заполнил бы все сайты, а затем поочередно обновил бы это результатами каждого из запросов, которые я в настоящее время выполняю независимо, но у меня возникли всевозможные проблемы, поэтому я решил лучше начать заново и спроситьдля руководства и помощи от.
SQL является своего рода перефразированным, поэтому, пожалуйста, не обращайте внимания на простые синтаксические ошибки: -)
Будет значительно упрощенный набор данных;table site {id, location}
table salesEnquiry {siteId, custoemrId,
DepositDate, BalancePaidDate, Status}
--Status can be (0,1,2,3 for not started, deposit, completed,cancelled
И исходя из этого, я думаю о том, чтобы:
--Set up the Whole Table
declare @tmp TABLE (id, Site, Deposits, Completed, Cancelled)
insert into @tmp (id, site)
select id, site from site
update @tmp
set Deposits = (select count(customerId) from salesEnquiry
where DepositPaidDate >= @startOfMonth and DepositPaidDate <= @endOfMonth and status = 1)
** This is the point I get lost I think, as Im not sure how to relate total number of deposits taken against the tmpId's as not all departments will take a deposit each month.
Я бы затем повторил вышеописанную методологию для Завершенных и Отмененных клиентов, такУ меня есть финальная таблица, как показано ниже.
SiteId Location TotalDeposits TotalCompleted TotalCancelled
1 a 3 0 1
2 b 0 0 0
3 c 1 17 0
отредактировано для добавления данных образца + результат.** Извините, не могу понять форматирование **
Хорошо, надеюсь, это поможет.идентификатор сайта 1 a 2 b 3 c
salesEnquiry
id custId deposit complete status
1 1 10/05/2011 null 1
2 2 11/04/2011 11/05/2011 2
1 3 12/05/2011 null 1
1 4 13/05/2011 13/05/2011 2
3 5 14/05/2011 null 3
3 6 13/02/2011 13/05/2011 3
даст
SiteId Location Deposits Completed Cancelled
1 a 2 1 0
2 b 0 1 0
3 c 0 0 2