|
Не могу реализовать в запросе | ☑ | ||
---|---|---|---|---|
0
abbas
24.06.14
✎
15:28
|
Доброе время суток, У меня есть запрос и выводит такое,
ДАТА | ВидРасчета | Результат | 01.07.14| Квартальная премия | 15000 | 01.04.14| Квартальная премия | 10000 | 01.01.14| Квартальная премия | 5000 | Начисления идет каждый квартал,хочу реализовать в запросе такое, чтоб выдавал такой результат ДАТА | ВидРасчета | Результат | 01.07.14| Квартальная премия | 15000 | 01.06.14| Квартальная премия | 10000 | 01.05.14| Квартальная премия | 10000 | 01.04.14| Квартальная премия | 10000 | 01.03.14| Квартальная премия | 5000 | 01.02.14| Квартальная премия | 5000 | 01.01.14| Квартальная премия | 5000 | Чтоб пустые, то есть месяца в которых не было поступления, были заполнены, помогите реализовать, начального запроса нет, подкиньте идею как реализовать |
|||
1
Nenaviwu1c20
24.06.14
✎
15:29
|
"ВЫБРАТЬ
| 0 КАК Цифра |ПОМЕСТИТЬ ТабЦифр | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 1 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 2 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 3 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 4 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 5 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 6 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 7 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 8 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | 9 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День |ПОМЕСТИТЬ ТабДней |ИЗ | ТабЦифр КАК ТабЦифр1, | ТабЦифр КАК ТабЦифр2, | ТабЦифр КАК ТабЦифр3, | ТабЦифр КАК ТабЦифр4 |ГДЕ | ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &ДатаКон | |ИНДЕКСИРОВАТЬ ПО | День |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КОНЕЦПЕРИОДА(ТабДней.День, ДЕНЬ) КАК День |ИЗ | ТабДней КАК ТабДней"; |
|||
2
Nenaviwu1c20
24.06.14
✎
15:30
|
а к этой таблице по левому соединению лепи свои данные
|
|||
3
Nenaviwu1c20
24.06.14
✎
15:30
|
соединя по периодам
|
|||
4
abbas
24.06.14
✎
15:33
|
я получу тогда
ДАТА | ВидРасчета | Результат | 01.07.14| Квартальная премия | 15000 | 01.06.14| Квартальная премия | | 01.05.14| Квартальная премия | | 01.04.14| Квартальная премия | 10000 | 01.03.14| Квартальная премия | | 01.02.14| Квартальная премия | | 01.01.14| Квартальная премия | 5000 | |
|||
5
abbas
24.06.14
✎
15:33
|
Как заполнить Результат значение которого будет NULL
|
|||
6
Nenaviwu1c20
24.06.14
✎
15:35
|
Сотря чем заполнить МОжно в запросе указать ЕСТЬNULL(Рультат, 0)
|
|||
7
1sik
24.06.14
✎
15:35
|
естьnull(Значение,0)
|
|||
8
Nenaviwu1c20
24.06.14
✎
15:36
|
Я просто логику заполнения не вполне понимаю.Попробуй описать что тебе надо.
|
|||
9
Nenaviwu1c20
24.06.14
✎
15:37
|
кстати запрос который я опубликовал в днях выводит.Его в месяцы нужно будет переписать.Либо из Производственного календаря выбрать
|
|||
10
abbas
24.06.14
✎
15:39
|
Все правильно, просто мне нужен такой результат
ДАТА | ВидРасчета | Результат | 01.07.14| Квартальная премия | 15000 | 01.06.14| Квартальная премия | 10000 | 01.05.14| Квартальная премия | 10000 | 01.04.14| Квартальная премия | 10000 | 01.03.14| Квартальная премия | 5000 | 01.02.14| Квартальная премия | 5000 | 01.01.14| Квартальная премия | 5000 | |
|||
11
abbas
24.06.14
✎
15:39
|
А ВЫХОДИТ
|
|||
12
abbas
24.06.14
✎
15:39
|
ДАТА | ВидРасчета | Результат |
01.07.14| Квартальная премия | 15000 | 01.06.14| Квартальная премия | | 01.05.14| Квартальная премия | | 01.04.14| Квартальная премия | 10000 | 01.03.14| Квартальная премия | | 01.02.14| Квартальная премия | | 01.01.14| Квартальная премия | 5000 | |
|||
13
abbas
24.06.14
✎
15:41
|
Как мне заполнить пустые значения, которые пустые на цифры которые были в это квартале, то есть
как мне забить в эти строки 01.03.14| Квартальная премия | 0 | 01.02.14| Квартальная премия | 0 | тем что было в первом месяце (то есть цифрой 5000) 01.01.14| Квартальная премия | 5000 | Надеюсь что поняли меня... |
|||
14
Nenaviwu1c20
24.06.14
✎
15:42
|
Аббас гардаш Что вы хотите увидеть в тех месяцах в которых не было записей в вашей таблице?)
|
|||
15
Nenaviwu1c20
24.06.14
✎
15:43
|
аааа ясненько
|
|||
16
Nenaviwu1c20
24.06.14
✎
15:43
|
щас подумаю
|
|||
17
dj_serega
24.06.14
✎
15:43
|
(14) Видимо старые данные (за прошлые периоды).
Ему походу нужно повторять запись пока она не изменится. |
|||
18
abbas
24.06.14
✎
15:44
|
месяца в которых не было начисления, были заполнены предыдущим результатом
|
|||
19
Nenaviwu1c20
24.06.14
✎
15:52
|
Соединяй таблицу саму с сабой во вложенном запросе при условии что выбирается максимальная дата Меньше даты запроса где сумма больше нуля и потом обратно соединяй в основном запросе на выбор когда естьнулл = 0.Как то так...
|
|||
20
Nenaviwu1c20
24.06.14
✎
15:52
|
запрос дай я подкорректирую
|
|||
21
vicof
24.06.14
✎
16:52
|
(18) Нафига? Отчет неинформативным будет.
|
|||
22
Drac0
24.06.14
✎
17:24
|
(18) 0_o А может надо поделить начисления на 3 месяца?
|
|||
23
Bolik1979
24.06.14
✎
18:17
|
По аналогии со срезом последних на каждую дату
ВЫБРАТЬ ТЗ.дата КАК Дата, ТЗ.ВидРасчета, ТЗ.Результат ПОМЕСТИТЬ ВТТЗ ИЗ &ТЗ КАК ТЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МИНИМУМ(ВТТЗ.Дата) КАК ДатаНач, МАКСИМУМ(ВТТЗ.Дата) КАК ДатаКон ПОМЕСТИТЬ ВТДатыНачКон ИЗ ВТТЗ КАК ВТТЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 0 КАК Цифра ПОМЕСТИТЬ ТабЦифр ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(ВТДатыНачКон.ДатаНач, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День ПОМЕСТИТЬ ТабДней ИЗ ТабЦифр КАК ТабЦифр1, ТабЦифр КАК ТабЦифр2, ТабЦифр КАК ТабЦифр3, ТабЦифр КАК ТабЦифр4, ВТДатыНачКон КАК ВТДатыНачКон ГДЕ ДОБАВИТЬКДАТЕ(ВТДатыНачКон.ДатаНач, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= ВТДатыНачКон.ДатаКон ИНДЕКСИРОВАТЬ ПО День ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(ТабДней.День, МЕСЯЦ) КАК Месяц ПОМЕСТИТЬ ВТДаты ИЗ ТабДней КАК ТабДней ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Месяц, ВложенныйЗапрос.ВидРасчета, ВТТЗ.Результат ИЗ (ВЫБРАТЬ ВТДаты.Месяц КАК Месяц, МАКСИМУМ(ВТТЗ.Дата) КАК Дата, ВТТЗ.ВидРасчета КАК ВидРасчета ИЗ ВТДаты КАК ВТДаты ЛЕВОЕ СОЕДИНЕНИЕ ВТТЗ КАК ВТТЗ ПО ВТДаты.Месяц >= ВТТЗ.Дата СГРУППИРОВАТЬ ПО ВТДаты.Месяц, ВТТЗ.ВидРасчета) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ ВТТЗ КАК ВТТЗ ПО ВложенныйЗапрос.Дата = ВТТЗ.Дата И ВложенныйЗапрос.ВидРасчета = ВТТЗ.ВидРасчета |
|||
24
abbas
27.06.14
✎
13:46
|
ВЫБРАТЬ
ВложенныйЗапрос.ДатаНачала, ВзаиморасчетыПоЗПДанныеГрафика.Результат / 3 КАК Поле1 ИЗ (ВЫБРАТЬ НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ) КАК ДатаНачала ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ), МЕСЯЦ, -1) ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ), МЕСЯЦ, -2) ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ), МЕСЯЦ, -3) ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ), МЕСЯЦ, -4) ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ), МЕСЯЦ, -6) ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(_Отпускные_ЗП.ДатаНачала, МЕСЯЦ), МЕСЯЦ, -7) ИЗ Документ._Отпускные_ЗП КАК _Отпускные_ЗП ГДЕ _Отпускные_ЗП.Ссылка = &Ссылка) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ВзаиморасчетыПоЗП.ДанныеГрафика( ВидРасчета = &ВидРасчета И ФизЛицо = &ФизЛицо) КАК ВзаиморасчетыПоЗПДанныеГрафика ПО ВложенныйЗапрос.ДатаНачала = ВзаиморасчетыПоЗПДанныеГрафика.ПериодРегистрации |
|||
25
abbas
27.06.14
✎
13:46
|
Вот сам запрос
|
|||
26
abbas
27.06.14
✎
13:53
|
||||
27
abbas
27.06.14
✎
14:46
|
....................................................
|
|||
28
Ymryn
27.06.14
✎
15:15
|
(0) В гугл или яндекс "8.2 Остатки на каждый день". Уже приличное количество различных решений. Если это нужно для СКД то вообще делается через дополнение.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |