Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
relief Member Откуда: Сообщений: 1197 |
Привет Есть такие таблицы, которые заполненны определенными данными declare @weekDates table (week int, date date) declare @products table (productDivision nvarchar(30), productGroup nvarchar(30), model nvarchar(30)) declare @customers table (customerid int) declare @sales table (customerid int, saleAmount money, model nvarchar(30), saledate date) Как вывести сумму продаж по всем customerid, сгруппированным по week, потом по productDivision, потом по productGroup т.е. если у customerid = 1 продаж за week = 1 не было то надо показать: customerid = 1, все week, productDivision, productGroup и 0 в колонке сумма продаж |
4 апр 13, 10:55 [14134322] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Написать запрос, в котором соединить таблицы через join, использовать group by "по week, потом по productDivision, потом по productGroup" и SUM() для "сумму продаж" |
||
4 апр 13, 10:57 [14134343] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Естественно, нужно делать ltft join для sales Раз нужно показывать все сочетания customerid, week, productDivision, productGroup, то соответственно CROSS JOIN |
||
4 апр 13, 11:00 [14134368] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
просто Join нельзя. кэйс почему не работает. @StartDate = '01/01/2013' @EndDate = '01/03/2013' если к примеру за февраль продаж не будет, то данные недели показаны не будут. а надо показывать нули по всем неделям, дивизионам и группам |
||||
4 апр 13, 11:02 [14134390] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
|
||||
4 апр 13, 11:04 [14134408] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Религия не позволяет ?
Я так понимаю, что с типами JOIN-ов вы тоже не знакомы ? |
||||
4 апр 13, 11:04 [14134410] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
cross использую сейчас, но долго работает. думал есть другие варианты |
||||||
4 апр 13, 11:07 [14134433] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Если миллион записей кроссджойнить(т.е. умножить) еще с миллионом, то такой запрос не может быть быстрым |
||
4 апр 13, 11:11 [14134458] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
relief, Using Joins |
4 апр 13, 11:11 [14134459] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Или просто получается много данных, ведь даже для маленьких таблиц могут быть миллиарды строк в результатах. |
||
4 апр 13, 11:18 [14134514] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |