|
v8: Несложный запрос. Подскажите Что-то парюсь. | ☑ | ||
---|---|---|---|---|
0
temsa
05.12.13
✎
18:41
|
Есть РС
Измерения - Авто Спр - Шина спр Ресурс - Эксплутируется Булево Хочу вытащить Авто, Шина, Датаначала, ДатаОкончания (Эксплуатации) 1 Просто таблицу брать? 2 Взять срез последних? 3 Срез первых и срез последних объединить. Как это сделать? Я еще дальше буду обединять с другими таблицами еще.. |
|||
1
zak555
05.12.13
✎
18:43
|
даты это период ?
|
|||
2
temsa
05.12.13
✎
18:44
|
(1)Ага
|
|||
3
temsa
05.12.13
✎
18:46
|
признак начала это когда Эксплутируется Истина
а признак конца когда Эксплутируется Ложь |
|||
4
zak555
05.12.13
✎
18:46
|
так в твоём РС могут быть повторы
|
|||
5
zak555
05.12.13
✎
18:47
|
01.01 авто1 шина1 Истина
31.01 авто1 шина1 Ложь 01.03 авто1 шина1 Истина 31.03 авто1 шина1 Ложь |
|||
6
temsa
05.12.13
✎
18:48
|
(5) Предполагается что одна шина у одной машины живет всего лишь один раз.
Хотя бывает с одной машины на другой кидают. Очень редко. |
|||
7
1sik
05.12.13
✎
18:50
|
если правильно понял логику срез последних с условие ложь, потом срез с условием истина, вытащить из них периоды и соединить по двум измерениям. только условие накладывать надо именно в самой виртуальной таблице, а еще надо обработать те записи в которых ввод в эксплуатацию был а вывода не было.
|
|||
8
temsa
05.12.13
✎
18:53
|
(7) Точно понял. Но у меня что-то в запросе не получается.
пробовал МИНИМУМ(ШиныТССрезПоследних.Период) не работает. |
|||
9
1sik
05.12.13
✎
18:53
|
если одно колесо на одну машину один раз поставил потом сняли потом снова поставили но не сняли, то придется проверку запилить
|
|||
10
1sik
05.12.13
✎
18:54
|
давай сюда весь запрос
|
|||
11
temsa
05.12.13
✎
18:55
|
(9) Я пока этим не заморачиваюсь хотя отлично понимаю.
|
|||
12
temsa
05.12.13
✎
18:55
|
(10) так у меня в саомо начала в скд не идет ничего.. (((
|
|||
13
1sik
05.12.13
✎
18:57
|
я бы посоветовал все делать в консоле запросов, а уже потом добавлять в скд, так прозрачнее все.
|
|||
14
temsa
05.12.13
✎
19:00
|
ВЫБРАТЬ
ШиныТССрезПоследних.ТС, ШиныТССрезПоследних.Шина, ШиныТССрезПоследних.Период КАК Нач, ШиныТССрезПоследних1.Период КАК Кон ИЗ РегистрСведений.ШиныТС.СрезПоследних(, Эксплуатируется) КАК ШиныТССрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ШиныТС.СрезПоследних(, НЕ Эксплуатируется) КАК ШиныТССрезПоследних1 ПО ШиныТССрезПоследних.Шина = ШиныТССрезПоследних1.Шина И ШиныТССрезПоследних.ТС = ШиныТССрезПоследних1.ТС Ни хрена не выходит |
|||
15
mistеr
05.12.13
✎
19:01
|
(0) Полная аналогия с регистром РаботникиОрганизации. Посмотреть запросы к нему...
|
|||
16
temsa
05.12.13
✎
19:02
|
(13) Что удивительно в консоли выдал одну запись а в скд ничего.
|
|||
17
1sik
05.12.13
✎
19:06
|
а что выдают эти таблицы если их отдельно запускать?
|
|||
18
temsa
05.12.13
✎
19:07
|
уже продвинулся.
ВЫБРАТЬ ШиныТССрезПоследних.ТС, ШиныТССрезПоследних.Шина, ЕСТЬNULL(ШиныТССрезПоследних.Период,1) КАК Нач, ЕСТЬNULL(ШиныТССрезПоследних1.Период,1) КАК Кон ИЗ РегистрСведений.ШиныТС.СрезПоследних(, Эксплуатируется) КАК ШиныТССрезПоследних левое СОЕДИНЕНИЕ РегистрСведений.ШиныТС.СрезПоследних(, НЕ Эксплуатируется) КАК ШиныТССрезПоследних1 ПО ШиныТССрезПоследних.Шина = ШиныТССрезПоследних1.Шина И ШиныТССрезПоследних.ТС = ШиныТССрезПоследних1.ТС Выдало всю таблицу |
|||
19
temsa
05.12.13
✎
19:08
|
Что мне ставить вместо 1 тут:
ЕСТЬNULL(ШиныТССрезПоследних.Период,1) КАК Нач, ??? |
|||
20
1sik
05.12.13
✎
19:08
|
потому и советую с консоли начать, в скд надо еще правильно выводимые поля настроить
|
|||
21
temsa
05.12.13
✎
19:08
|
Блин мне еще надо вычислить разницу этих дат...в днях
|
|||
22
1sik
05.12.13
✎
19:10
|
что нибудь что будет легче потом обрабатывать , можно дату 2999 год, можно выводить булевное дополнительное поле, типа еще в эксплуатации, тут уж от задачи зависет
|
|||
23
1sik
05.12.13
✎
19:12
|
есть функция разность дат, только ее надо использовать тогда когда конечная есть . а на это есть функцию языка запросов выбор
|
|||
24
temsa
05.12.13
✎
19:17
|
(23) Спасибо за стремление помочь. НО разность дат и выбор я знаю. Проблема в том что это мой запрос должен сесть во временною таблицу с кторорй дальше надо будет пробег объединять и нормы пробега
|
|||
25
1sik
05.12.13
✎
19:21
|
а в чем проблема с помещением всего этого во временную, и разве без вт не обойтись?
|
|||
26
temsa
05.12.13
✎
20:06
|
ВЫБРАТЬ
ШиныТССрезПоследних.ТС, ШиныТССрезПоследних.Шина, ЕСТЬNULL(ШиныТССрезПоследних.Период,&Дата1) КАК Нач, ЕСТЬNULL(ШиныТССрезПоследних1.Период,&Дата1) КАК Кон ПОМЕСТИТЬ ВТ_ДатыЗамены ИЗ РегистрСведений.ШиныТС.СрезПоследних(, Эксплуатируется) КАК ШиныТССрезПоследних левое СОЕДИНЕНИЕ РегистрСведений.ШиныТС.СрезПоследних(, НЕ Эксплуатируется) КАК ШиныТССрезПоследних1 ПО ШиныТССрезПоследних.Шина = ШиныТССрезПоследних1.Шина И ШиныТССрезПоследних.ТС = ШиныТССрезПоследних1.ТС СГРУППИРОВАТЬ ПО ШиныТССрезПоследних.ТС, ШиныТССрезПоследних.Шина |
|||
27
temsa
05.12.13
✎
20:07
|
пишет
{ВнешняяОбработка.КонсольЗапросов_82.МодульОбъекта(55)}: Ошибка при вызове метода контекста (ВыполнитьПакет): {(4, 11)}: Поле не входит в группу "ШиныТССрезПоследних.Период" ЕСТЬNULL(<<?>>ШиныТССрезПоследних.Период,&Дата1) КАК Нач, |
|||
28
temsa
05.12.13
✎
20:53
|
Родил такой запрос.
Но только не сгруппировал по шинам. Как? ВЫБРАТЬ ШиныТССрезПоследних.ТС, ШиныТССрезПоследних.Шина, ЕСТЬNULL(ШиныТССрезПоследних.Период, &Дат) КАК Нач, ЕСТЬNULL(ШиныТССрезПоследних1.Период, &Дат) КАК Кон ПОМЕСТИТЬ ВТ_ДатыЗамен ИЗ РегистрСведений.ШиныТС.СрезПоследних(, Эксплуатируется) КАК ШиныТССрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШиныТС.СрезПоследних(, НЕ Эксплуатируется) КАК ШиныТССрезПоследних1 ПО ШиныТССрезПоследних.Шина = ШиныТССрезПоследних1.Шина И ШиныТССрезПоследних.ТС = ШиныТССрезПоследних1.ТС СГРУППИРОВАТЬ ПО ШиныТССрезПоследних.ТС, ШиныТССрезПоследних.Шина, ЕСТЬNULL(ШиныТССрезПоследних.Период, &Дат), ЕСТЬNULL(ШиныТССрезПоследних1.Период, &Дат) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ДатыЗамен.ТС, ВТ_ДатыЗамен.Шина, ВТ_ДатыЗамен.Нач, ВТ_ДатыЗамен.Кон, ПробегПоСпидометруОбороты.ПробегПриход КАК Пробег ПОМЕСТИТЬ ВТ_Пробег ИЗ ВТ_ДатыЗамен КАК ВТ_ДатыЗамен ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПробегПоСпидометру.Обороты(, &Дат, День, ) КАК ПробегПоСпидометруОбороты ПО ВТ_ДатыЗамен.ТС = ПробегПоСпидометруОбороты.ТС И ВТ_ДатыЗамен.Нач <= ПробегПоСпидометруОбороты.Период И ВТ_ДатыЗамен.Кон >= ПробегПоСпидометруОбороты.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ДатыЗамен.ТС, НормыРасходаПоПоказателямСрезПоследних.НормаПробега ПОМЕСТИТЬ ВТ_Норма ИЗ РегистрСведений.НормыРасходаПоПоказателям.СрезПоследних(&Дат, ) КАК НормыРасходаПоПоказателямСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыЗамен КАК ВТ_ДатыЗамен ПО НормыРасходаПоПоказателямСрезПоследних.ТипТехники = ВТ_ДатыЗамен.ТС.ТипМашины ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ДатыЗамен.ТС, ВТ_ДатыЗамен.Шина, ВТ_ДатыЗамен.Нач, ВТ_ДатыЗамен.Кон, ВТ_Норма.НормаПробега, ВТ_Пробег.Пробег ИЗ ВТ_ДатыЗамен КАК ВТ_ДатыЗамен ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Пробег КАК ВТ_Пробег ПО ВТ_ДатыЗамен.ТС = ВТ_Пробег.ТС И ВТ_ДатыЗамен.Шина = ВТ_Пробег.Шина ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Норма КАК ВТ_Норма ПО ВТ_ДатыЗамен.ТС = ВТ_Норма.ТС |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |