Сводная таблица: убрать подитоги и итоги

SergeySV
Дата: 27.11.2006 15:19:00
Поднимаю ту же тему: http://www.sql.ru/forum/actualthread.aspx?tid=271516&hl=%f1%e2%ee%e4%ed%e0%ff+%f2%e0%e1%eb%e8%f6%e0


Таблица с курсами валют: Дата, Валюта, Курс
запрос для "формы-сводная таблица" такой -
SELECT     TOP 1000 Дата, Валюта, СПОТ
FROM         dbo.[Курсы валют]
ORDER BY Дата DESC, Валюта
Получаем в итоге вот такую бяку (файл приложен).
Как Вы понимаете у меня вообще не может быть никаких итогово и подитогов - курс по одной валюте и за одну дату может быть ТОЛЬКО один.
Есть какой-нибудь способ переубедить PivotTable и убрать эти подитоги, которые на картинке обведены красными кружками.
Программист-Любитель
Дата: 27.11.2006 15:25:44
Рабочих валют обычно меньшне чем дат - логичнее иметь валбты столбцы и даты - строки.

Я всегда для этого пользуюсь самодельными "сводными" запросами.
SergeySV
Дата: 27.11.2006 15:30:13
А вид формы - табличный?!

Да, я так тоже хотел сделать, по старинке выбрал тип запроса сводный и попал в Pivot, вот и решил в нем разобраться... видимо придется возвращаться к старине.
Программист-Любитель
Дата: 27.11.2006 15:52:18
Табличный разумеется.
SergeySV
Дата: 27.11.2006 16:02:04
Ага, прикольно, красивенько так

Если не сложно, глянь на запрос, что-то ругается на первую строку и на около PIVOT:
TRANSFORM SUM(СПОТ) AS ddd
SELECT     Дата 
FROM          dbo.[Курсы валют]
GROUP BY Дата 
PIVOT Валюта
никак не могу сообразить что Access-adp не нравится, то ли русское имя в столбце, то ли еще что и почему на PIVOT еще ругается.
Программист-Любитель
Дата: 27.11.2006 17:14:47
В ADP пайвотов нету. Совсем.

Генерить автоматически, или, если ключевые справочники стаблильные - руками один раз написать.
SergeySV
Дата: 27.11.2006 17:41:03
Ой, действительно нет... как же они без перекрестных таблиц обходятся

По валютам он в принципе стабилен, по датам нет - можно конечно и генерить, не знаю правда на скоко затратно это по времени будет, надо будет сворганить запрос, посмотреть
SergeySV
Дата: 27.11.2006 17:46:14
Ну типа такого сделал:
SELECT     Дата,
                 SUM(CASE WHEN [Валюта] = N'USD' THEN [СПОТ] ELSE 0 END) AS Val_USD, 
                 SUM(CASE WHEN [Валюта] = N'EUR' THEN [СПОТ] ELSE 0 END) AS Val_EUR
FROM         dbo.[Курсы валют]
GROUP BY Дата
ORDER BY Дата DESC
работает пока довольно шустро, попробуем вбить все валюты...
Программист-Любитель
Дата: 28.11.2006 09:05:53
Работать будет быстро и при 20 валютах с глубиной архива 2-3 года.

Почему SUM ? Курсы суммировать бессмысленно.

Почему Val_<Ccy> ? Из первоначального описания следует что это "Спот", логичнее Spot_USD или USD_Spot или _Rate. val от value может быть значением чего угодно, Spot или Rate - курсом/ставкой.
SergeySV
Дата: 28.11.2006 09:43:25
Функцию и название столбцов взял пока первое что в голову пришло.
Насчет SUM ты конечно прав, суммировать тут нечего, тут вообще агрегировать то нечего. Весь вопрос что использовать? В mdb есть First, Last, а в adp что можно менее ресурсоемкое подобрать - Min, Max?