|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.10.2009, 20:00 | #1 |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
Помогите составить запрос, остатков и оборотов за период, с группировками и...
Помогите составить SQL запрос (MS SQL 2005), остатков и оборотов за период, с группировками и суммами следующего вида:
Никак не въеду, как это сделать.. Заранее спасибо. Последний раз редактировалось BOZKURT; 14.10.2009 в 20:05. |
14.10.2009, 20:12 | #2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
пока не будет описания структуры данных (движухи и самих остатков) говорить не о чем
максимум что могу - написать 7 юнионов |
14.10.2009, 20:23 | #3 |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
Есть таблица движений (некий аналог регистра остатков и оборотов 1с).
В нем имеются следующие поля: _ID - ключ, автоинкрементное поле (bigint) _OPERATION_ID - идентификатор операции (движения) _DOCUMENT_ID - идентификатор документа (которое добавило данное движение) _PERIOD - период движения (DateTime) _BRANCH_ID - организация ACCOUNTABLE_PERSON_TYPE_ID - тип подотчетника (у меня их два: организация или сотрудник) ACCOUNTABLE_PERSON_ID - идентификатор подотчетника INSURANCE_CLASS_ID - идентификатор класса страхования SERIES_ID - идентификатор серии бланков строгой отчетности BSO_NUMBER - номер бланка СО COUNT - количество (1 или -1, в зависимости от операции) Просто остатки я получил без проблем, а вот прицепить туда обороты не получается...( |
14.10.2009, 20:27 | #4 |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
Вот мой текущий запрос:
Код:
|
14.10.2009, 21:54 | #5 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
ну запрос этот просто издевательство как минимум в плане чтения
и сам запрос - это только подытоги? предлагаю пока писать без расшифровки (т.е. пока без слияния с SPR_...) а в МССКЛ2005 есть group by rollup / grouping_id() ? Последний раз редактировалось soleil@mmc; 14.10.2009 в 22:16. |
14.10.2009, 22:24 | #6 |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
Да, поддерживает rollup.
Нетолько подитоги, по желанию пользователя я должен расшифровать вплоть до номера БСО. Ну за чтение запроса, звиняйте, я замучался уже его приводить к читабельному виду, руки надо оторвать MS-вцам за такое форматирование в интерпрайс менеджере..)) Код:
Т.е. в этом запросе, я получаю остатки не на дату, а вообще, что осталось на момент выполнения запроса (условие по периоду потом сделаю). Условие "WHERE 1=1" служит ключевым выражением, для замены на динамические условия запроса (по выбранным параметрам пользователя). Последний раз редактировалось BOZKURT; 14.10.2009 в 22:42. Причина: администрация, такие вопросы задаёте, аж неудобно отвечать... |
14.10.2009, 22:43 | #7 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
уже лучше
давай я тебе завтра точно все нарисую а сейчас помедитирую над тем что дает вот это кстати, и зачем тебе дистинкт в группбае? Код:
а у тебя обороты и остатки в одной таблице? если так, то может стоит с нуля нормально написать с учетом остатков?! и что там в СК кроме бабла еще можно приходовать/расходовать? Последний раз редактировалось soleil@mmc; 14.10.2009 в 22:51. |
14.10.2009, 22:49 | #8 |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
ок, я тоже уже никакой, спать охота..))
согласен с дистинктом, недосмотрел. спасибо! переделал твой запрос, вот так на MSSQL2005 не вызывает эксепшена: Код:
(SUM(COUNT) > 0) [/CODE] ... ) апд: Остатки и обороты в одной таблице. Кстати, хорошая идея, сделать отдельную оборотную (приход и расход = 2 таблицы, надо подумать) таблицу, просто не хотелось чтобы БД раздувалась, обороты у СК большие.. Кроме бабла СК, меня больше ничего не интересует, да и нет у них больше ничего..)) Последний раз редактировалось BOZKURT; 15.10.2009 в 10:14. |
15.10.2009, 00:05 | #9 | |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
Цитата:
я такого не предлагал оставляй как есть я спрашивал про остатки: видимо, остатки ты получаешь суммированием всех приходов/расходов на начало периода? т.е. остаток расчетный, а не хранимый где-то еще просто там остатки в штуках, а не в тысячах/миллионах/копейках |
|
15.10.2009, 09:35 | #10 | |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
Цитата:
В штуках конечно, это же бланки. А полисы с суммами потом буду в другом регистре учитывать. Получается что то вроде (1С) Регистр.ПартииБСО и Регистр.ПартииПолисов. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу составить запрос | bullvinkle | SQL, базы данных | 2 | 04.10.2009 22:55 |
Помогите, кому не жалко, составить запрос | ГиТ | SQL, базы данных | 9 | 07.09.2009 07:05 |
помогите составить SQL запрос!!!! | MAKSA | БД в Delphi | 12 | 07.08.2009 11:12 |
Помогите составить запрос или перепроектировать БД | Neurotechnic | БД в Delphi | 1 | 27.07.2009 10:51 |
Запрос на подсчет записей за период | Luna_13 | БД в Delphi | 3 | 13.10.2008 23:58 |