Группировка данных

andrey1981

Всем доброе время суток,при составления запроса столкнулся с необходимостью выводить только уникальные значения, а объем одинаковых продуктов суммировать.написал простенький запросSELECT DISTINCTROW Reestr.[Invoice Date], Reestr.Location, Reestr.Route, Reestr.ITMCL, SKU.BRAND, Sum([qty]*[multipl]) AS Qt, Reestr.Txn, Reestr.[Prof ID] INTO DSR_dataFROM (Reestr INNER JOIN SKU ON Reestr.Item = SKU.item_id) INNER JOIN SRoutes ON Reestr.Route = SRoutes.Route_nameGROUP BY Reestr.[Invoice Date], Reestr.Location, Reestr.Route, Reestr.ITMCL, SKU.BRAND, Reestr.Txn, Reestr.[Prof ID]HAVING (((Reestr.Txn)<>"БО" And (Reestr.Txn)<>"Возвр"));но суммирует криво, с чем это может быть связано?заранее благодарен
8 ответов

andrey1981

andrey1981,что такое "но суммирует криво" можно только догадываться.Как предположение:в Group By засунуто слишком много полей, в результате чего требуемая группа разбита и, соответственно, нужных сумм не получить.


andrey1981

mds_world,сумма по группированным и не группированным данным разная.сколько полей можно группировать? или группировать по самому детализированному?


andrey1981

andrey1981,похоже, что вы не совсем точно представляете себе понятие группировки. Хотя ничего мистического в ней нет. Это всего лишь способ представления данных. Но по определенным правилам. В частности, для каждого набора группируюших полей (перечисленных в предложении Group By) в выходном запросе будет только одна строка. Для полей не перечисленных в Group By возможно представление только в виде агрегатных функций (Sum, Max, Min, First и др). Вот, собственно говоря и все. Но из этого много разных следствий. Вам нужно точно определиться для какого набора показателей нужна сумма. И вот только этот набор полей засунуть в Group By. Остальные поля, если их хочется видеть в результирующем наборе, должны быть под какими-то агрегатными функциями.


andrey1981

mds_world,похоже я никак не могу поставить никакую агрегатную функцию, на те поля, которые хочу видеть, но которые не группируются, т.е. Location, Route, ITMCL, TXN и Prof ID


andrey1981

Попробуйте First, Max, Min. И др.


andrey1981

Кстати, Distinctrow выглядит здесь совершенно излишним.


andrey1981

mds_world,перепробовал все, ни один из агрегантов не подходит, ругается.данных очень много, pivot в Excele не может втянуть все данные, пишет ресурсов, что не хватает, поэтому и решил сгруппировать


andrey1981

перепробовал все, ни один из агрегантов не подходит, ругается.
А как ругается? Набор у него широченный.Покажите свой запрос здесь. Тот, который не идет, с меньшим количеством полей группировки чем в запросе из первого сообщения. И на какие "агреганты" ругается? И как ругается тоже укажите.