По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
вот запрос. объединения я уже сделал, но как убрать нули?
ВЫБРАТЬ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект КАК Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик КАК Счетчик
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрСведений.КВП_ЗакрепленныеСчетчики.СрезПоследних(, ) КАК КВП_ЗакрепленныеСчетчикиСрезПоследних
ГДЕ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Действует = ИСТИНА
И НЕ КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик.Наименование ПОДОБНО "%Электро%"
СГРУППИРОВАТЬ ПО
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВременнаяТаблица.Объект,
ВременнаяТаблица.Счетчик КАК ГорячаяВода,
0 КАК ХолоднаяВода
ПОМЕСТИТЬ Вода
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица
ГДЕ
ВременнаяТаблица.Счетчик.Наименование ПОДОБНО "%Холодная%"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ГорячаяВода.Объект,
0,
ГорячаяВода.Счетчик
ИЗ
ВременнаяТаблица КАК ГорячаяВода
ГДЕ
ГорячаяВода.Счетчик.Наименование ПОДОБНО "%Горячая%"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Вода.Объект КАК Объект,
Вода.ГорячаяВода КАК ГорячаяВода,
Вода.ХолоднаяВода КАК ХолоднаяВода
ИЗ
Вода КАК Вода
УПОРЯДОЧИТЬ ПО
Объект
Показатьвот запрос. объединения я уже сделал, но как убрать нули?
(6) Запрос Вашу проблему не решает, но работать должен оптимальнее.
ВЫБРАТЬ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект КАК Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик КАК Счетчик,
ПРЕДСТАВЛЕНИЕ(КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик) КАК Наименование,
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрСведений.КВП_ЗакрепленныеСчетчики.СрезПоследних(,Действует = ИСТИНА И Счетчик.Наименование ПОДОБНО "%Электро%" ) КАК КВП_ЗакрепленныеСчетчикиСрезПоследних
СГРУППИРОВАТЬ ПО
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик,
ПРЕДСТАВЛЕНИЕ(КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВременнаяТаблица.Объект,
ВременнаяТаблица.Счетчик КАК ГорячаяВода,
0 КАК ХолоднаяВода
ПОМЕСТИТЬ Вода
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица
ГДЕ
ВременнаяТаблица.Наименование ПОДОБНО "%Холодная%"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ГорячаяВода.Объект,
0,
ГорячаяВода.Счетчик
ИЗ
ВременнаяТаблица КАК ГорячаяВода
ГДЕ
ГорячаяВода.Наименование ПОДОБНО "%Горячая%"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Вода.Объект КАК Объект,
Вода.ГорячаяВода КАК ГорячаяВода,
Вода.ХолоднаяВода КАК ХолоднаяВода
ИЗ
Вода КАК Вода
УПОРЯДОЧИТЬ ПО
Объект
Показать
На будущее..
1) условия накладывать лучше сразу на виртуальную таблицу
2)
работать будет быстрее..
1) условия накладывать лучше сразу на виртуальную таблицу
ИЗ
РегистрСведений.КВП_ЗакрепленныеСчетчики.СрезПоследних(, Действует = ИСТИНА
И НЕ Счетчик.Наименование ПОДОБНО "%Электро%" ) КАК КВП_ЗакрепленныеСчетчикиСрезПоследних
2)
ИЗ
ВременнаяТаблица КАК ВременнаяТаблица
ГДЕ
ВременнаяТаблица.Счетчик.Наименование ПОДОБНО "%Холодная%" // Поле наименование лучше сразу получить в 1м подзапросе через ПРЕДСТАВЛЕНИЕ()
// тоже самое и для "%Горячая%"
работать будет быстрее..
(10)
Тут дело не в продуктивности, а в том, по каким критериям нужно получить данные. Если условие накладывается НЕ на измерение, то результаты при параметризации и при применении условия ГДЕ - будут разные.
И, гм, параметризовать таким способом НЕ Счетчик.Наименование ПОДОБНО "%Электро% я бы как-то предостерегся тоже.
Тут дело не в продуктивности, а в том, по каким критериям нужно получить данные. Если условие накладывается НЕ на измерение, то результаты при параметризации и при применении условия ГДЕ - будут разные.
И, гм, параметризовать таким способом НЕ Счетчик.Наименование ПОДОБНО "%Электро% я бы как-то предостерегся тоже.
(14)
Насчет специфики параметризации.
Как писал выше, есть специфика, если параметризовать по реквизиту.
Если так параметризуем (по реквизиту), то замечательно получим себе все последние строки, где выполнялось некое условие для реквизита.
Но по истории потом значение этого реквизита стало другим. И тогда запрос со срезом без параметризации и условием ГДЕ - некоторые найденные выше записи уже не увидит.
Насчет специфики параметризации.
Как писал выше, есть специфика, если параметризовать по реквизиту.
Если так параметризуем (по реквизиту), то замечательно получим себе все последние строки, где выполнялось некое условие для реквизита.
Но по истории потом значение этого реквизита стало другим. И тогда запрос со срезом без параметризации и условием ГДЕ - некоторые найденные выше записи уже не увидит.
(22)
одинаково.
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Количество
ПОМЕСТИТЬ ВТ_ГДЕ
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатуры
ГДЕ
ЦеныНоменклатуры.Регистратор ССЫЛКА Документ.УстановкаЦенНоменклатуры
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Количество1,
ВТ_ГДЕ.Количество КАК Количество2
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Регистратор ССЫЛКА Документ.УстановкаЦенНоменклатуры) КАК ЦеныНоменклатурыСрезПоследних,
ВТ_ГДЕ КАК ВТ_ГДЕ
СГРУППИРОВАТЬ ПО
ВТ_ГДЕ.Количество
Показатьодинаково.
На одном лицевом счете может быть несколько счётчиков по одной услуге. Тупо стояк ХВС и ГВС в кухне. А так же стояк ХВС и ГВС в санблоке. Вас это не смущает? Как тогда должен работать ваш запрос?
Табличку приведите, пожалуйста.
Табличку приведите, пожалуйста.
Вот запрос с суррогатным ключом сортировки. Но. Во-первых, он медленный. Во-вторых, если вам такой запрос понадобился, значит вы что-то делаете неправильно.
ВЫБРАТЬ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект КАК Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик КАК Счетчик,
МАКСИМУМ(КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик.Код) КАК СчетчикПрофильСортировки
ПОМЕСТИТЬ Врем_ХВС_Исходные
ИЗ
РегистрСведений.КВП_ЗакрепленныеСчетчики.СрезПоследних(, ) КАК КВП_ЗакрепленныеСчетчикиСрезПоследних
ГДЕ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Действует = ИСТИНА
И КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик.Наименование ПОДОБНО "%ХВС%"
СГРУППИРОВАТЬ ПО
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик
ИНДЕКСИРОВАТЬ ПО
СчетчикПрофильСортировки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект КАК Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик КАК Счетчик,
МАКСИМУМ(КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик.Код) КАК СчетчикПрофильСортировки
ПОМЕСТИТЬ Врем_ГВС_Исходные
ИЗ
РегистрСведений.КВП_ЗакрепленныеСчетчики.СрезПоследних(, ) КАК КВП_ЗакрепленныеСчетчикиСрезПоследних
ГДЕ
КВП_ЗакрепленныеСчетчикиСрезПоследних.Действует = ИСТИНА
И КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик.Наименование ПОДОБНО "%ГВС%"
СГРУППИРОВАТЬ ПО
КВП_ЗакрепленныеСчетчикиСрезПоследних.Объект,
КВП_ЗакрепленныеСчетчикиСрезПоследних.Счетчик
ИНДЕКСИРОВАТЬ ПО
СчетчикПрофильСортировки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Врем_ХВС_Исходные.Объект КАК Объект,
Врем_ХВС_Исходные.Счетчик,
КОЛИЧЕСТВО(Врем_ХВС_Исходные.Объект) КАК КлючСортировки
ПОМЕСТИТЬ Врем_ХВС
ИЗ
Врем_ХВС_Исходные КАК Врем_ХВС_Исходные
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Врем_ХВС_Исходные КАК Суррогат
ПО Врем_ХВС_Исходные.Объект = Суррогат.Объект
И Врем_ХВС_Исходные.СчетчикПрофильСортировки >= Суррогат.СчетчикПрофильСортировки
СГРУППИРОВАТЬ ПО
Врем_ХВС_Исходные.Объект,
Врем_ХВС_Исходные.Счетчик
ИНДЕКСИРОВАТЬ ПО
Объект,
КлючСортировки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Врем_ГВС_Исходные.Объект КАК Объект,
Врем_ГВС_Исходные.Счетчик,
КОЛИЧЕСТВО(Врем_ГВС_Исходные.Объект) КАК КлючСортировки
ПОМЕСТИТЬ Врем_ГВС
ИЗ
Врем_ГВС_Исходные КАК Врем_ГВС_Исходные
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Врем_ГВС_Исходные КАК Суррогат
ПО Врем_ГВС_Исходные.Объект = Суррогат.Объект
И Врем_ГВС_Исходные.СчетчикПрофильСортировки >= Суррогат.СчетчикПрофильСортировки
СГРУППИРОВАТЬ ПО
Врем_ГВС_Исходные.Объект,
Врем_ГВС_Исходные.Счетчик
ИНДЕКСИРОВАТЬ ПО
Объект,
КлючСортировки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЕСТЬNULL(Врем_ГВС.Объект, Врем_ХВС.Объект) КАК Объект,
ЕСТЬNULL(Врем_ГВС.КлючСортировки, Врем_ХВС.КлючСортировки) КАК КлючСортировки,
Врем_ГВС.Счетчик КАК СчетчикГВС,
Врем_ХВС.Счетчик КАК СчетчикХВС
ИЗ
Врем_ХВС КАК Врем_ХВС
ПОЛНОЕ СОЕДИНЕНИЕ Врем_ГВС КАК Врем_ГВС
ПО Врем_ХВС.Объект = Врем_ГВС.Объект
И Врем_ХВС.КлючСортировки = Врем_ГВС.КлючСортировки
УПОРЯДОЧИТЬ ПО
Объект,
ЕСТЬNULL(Врем_ГВС.КлючСортировки, Врем_ХВС.КлючСортировки)
АВТОУПОРЯДОЧИВАНИЕ
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот