0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
1 | |
Суммирование по условию20.03.2013, 16:54. Показов 14430. Ответов 14
Метки нет (Все метки)
В FastReport сделал отчет-накладную на перемещение оборудования. Поля - наименование, ID , количество, номер поставки, дата поставки. Если у оборудования разный ID, то все ок, каждое наименование выводится в отдельной строке.
Хотелось бы сделать так, что если в отчет попадает несколько одинаковых наименований, то чтобы они выводились не каждый в отдельную строку, а в одну и количество ставилось соответствующее. Я так понимаю нужно написать условие и суммирование, но как правильно не знаю, с SQL мало знаком. Кто знает - подскажите пожалуйста.
0
|
20.03.2013, 16:54 | |
Ответы с готовыми решениями:
14
Суммирование по условию Суммирование по условию Суммирование по условию Суммирование по условию |
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
20.03.2013, 17:21 [ТС] | 3 |
а если применительно к моему запросу, подскажете? не могу догнать
SELECT t.hwid, h.invoicen, h.invoiced, t.modeln, t.count, t.modelid, a.apvalue1, t.price2, t.amodeln FROM tmp t INNER JOIN hardware h ON (t.hwid=h.hwid) LEFT OUTER JOIN apmodel a ON (t.modelid=a.modelid) modeln - это наименование модели count - количество modelid - код модели
0
|
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
21.03.2013, 17:47 [ТС] | 4 |
дошел до такого
SELECT t.hwid, h.invoicen, h.invoiced, t.modeln,SUM(t.count), t.modelid, a.apvalue1, SUM(t.price2), t.amodeln FROM tmp t INNER JOIN hardware h ON (t.hwid=h.hwid) LEFT OUTER JOIN apmodel a ON (t.modelid=a.modelid) group by t.modelid Но выскакивает ошибка SQL: GROUP BY clause is missing or invalid
0
|
Футболист
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
|
||||||
23.03.2013, 05:10 | 5 | |||||
maybe?
0
|
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
|
|
23.03.2013, 06:25 | 6 |
Стоит почитать про групповые запросы. Коротко: берём обычный запрос; дописываем группировку -- group by: записи группируются по одинаковым значениям перечисленных полей; каждой такой группе соответствует одна запись результирующего запроса. В эту запись входят поля из списка group by и групповые функции прочих полей. Стнадартные групповые функции -- count, summ, min, max. Нормальные СУБД позволяют дописывать свои; насчёт MySQL не знаю.
0
|
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
25.03.2013, 09:59 [ТС] | 7 |
нет, ошибка та же самая вылетает
Добавлено через 14 минут а вот если в GROUP BY перечислить все поля, то ошибка пропадает GROUP BY t.hwid, h.invoicen, h.invoiced, t.modeln,t.modelid, a.apvalue1,t.amodeln Только запрос не работает так как хотелось бы
0
|
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
25.03.2013, 11:15 [ТС] | 9 |
Ты имеешь в виду чего я жду от запроса? В первом сообщении я описывал что требуется.
Если у оборудования разный modelid, то каждое наименование выводится в отдельной строке. Хотелось бы сделать так, что если в отчет попадает несколько одинаковых наименований, то есть устройств с одним и тем же modelid, то чтобы они выводились не каждый в отдельную строку, а в одну, и количество ставилось соответствующее и цена суммировалось.
0
|
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
25.03.2013, 11:30 [ТС] | 11 |
Выбрал два одинаковых устройства - они вывелись все равно в разных строках. по моему скромному мнению это происходит из-за того, что там не укальные поля в запросе и нужно составить подзапросом как-то, но повторюсь - в SQL я не силен
0
|
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
25.03.2013, 12:53 [ТС] | 13 |
там поля
hwid - паспорт(уникальное для каждого устройства) invoicen - номер накладной invoiced - дата накладной modeln - наименование модели count - количество modelid - код модели apvalue1 - доп.параметры устройства price2 - цена amodeln - наименование для бухгалтерии по идее кроме modelid все остальные поля и не должны совпадать. Или тогда группировка не будет работать?
0
|
2731 / 1812 / 197
Регистрация: 05.06.2011
Сообщений: 5,236
|
|
25.03.2013, 13:32 | 14 |
Пишу с телефона, возможны глюки. Ну сам посуди: если собрать модель, что ты хочешь видеть в поле, скажем, hwid? Надо эти поля вообще исключить, оставить модель, по которой группировка, и группируемые поля. Остальные убрать в другой запрос и как-то показывать отдельно.
0
|
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 9
|
|
25.03.2013, 14:36 [ТС] | 15 |
Скорей всего ты прав, только я так понимаю что по уникальному полю hwid происходит связь таблиц h и t, а так-то в принципе мне и не нужно выводить информацию из этого поля в мой отчет
Результат запроса у меня выводится в таблицу по столбцам - наименование, номер и дата накладной, количество, цена, размер и вес. Если я удалю к примеру из запроса наименование, то я так понимаю что и вывести в таблицу я его не смогу, так? Добавлено через 59 минут Я сейчас попробовал убрать из запроса t.hwid и вроде заработало - во всяком случае вывелась одна строка (одинаковых устройств было выбрано два). Теперь осталось придумать как правильно выводить информацию о количестве и сумме. До этого выводилось с помощью [AdoQuery1."t.count"]
0
|
25.03.2013, 14:36 | |
25.03.2013, 14:36 | |
Помогаю со студенческими работами здесь
15
Суммирование по условию сложное суммирование по условию Суммирование ячеек по условию Суммирование в двумерном массиве по условию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |