Имя: Пароль:
1C
1С v8
Как посчитать количество по группировкам в запросе
0 Melcor
 
20.04.18
13:59
Доброго дня. есть запрос, необходимо посчитать количество сезонов где значение не равно 0, т.е.
СУММА_ВЕСНА_2014 = 0
СУММА_ОСЕНЬ_2014 = 0
СУММА_ВЕСНА_2015 = 500
СУММА_ВЕСНА_2016 = 700

Нужно получить КолвоСезонов = 2

ВЫБРАТЬ
    ВложенныйЗапрос.Клиент,
    ВложенныйЗапрос.ДокументСобытияСумма КАК ДокументСобытияСумма,
    ВложенныйЗапрос.СУММА_ВЕСНА_2014,
    ВложенныйЗапрос.СУММА_ОСЕНЬ_2014,
    ВложенныйЗапрос.СУММА_ВЕСНА_2015,
    ВложенныйЗапрос.СУММА_ОСЕНЬ_2015,
    ВложенныйЗапрос.СУММА_ВЕСНА_2016,
    ВложенныйЗапрос.СУММА_ОСЕНЬ_2016,
    ВложенныйЗапрос.СУММА_ВЕСНА_2017,
    ВложенныйЗапрос.СУММА_ОСЕНЬ_2017
ИЗ
    (ВЫБРАТЬ
        События.Клиент КАК Клиент,
        СУММА(События.ДокументСобытия.Сумма) КАК ДокументСобытияСумма,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2014, 7, 1, 0, 0, 0) И ДАТАВРЕМЯ(2015, 1, 31, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ОСЕНЬ_2014,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2015, 2, 1, 0, 0, 0) И ДАТАВРЕМЯ(2015, 6, 30, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ВЕСНА_2015,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2015, 7, 1, 0, 0, 0) И ДАТАВРЕМЯ(2016, 1, 31, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ОСЕНЬ_2015,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2016, 2, 1, 0, 0, 0) И ДАТАВРЕМЯ(2016, 6, 30, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ВЕСНА_2016,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2016, 7, 1, 0, 0, 0) И ДАТАВРЕМЯ(2017, 1, 31, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ОСЕНЬ_2016,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2017, 2, 1, 0, 0, 0) И ДАТАВРЕМЯ(2017, 6, 30, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ВЕСНА_2017,
        СУММА(ВЫБОР
                КОГДА События.Период МЕЖДУ ДАТАВРЕМЯ(2017, 7, 1, 0, 0, 0) И ДАТАВРЕМЯ(2018, 1, 31, 23, 59, 59)
                    ТОГДА События.ДокументСобытия.Сумма
                ИНАЧЕ 0
            КОНЕЦ) КАК СУММА_ОСЕНЬ_2017
    ИЗ
        РегистрСведений.События КАК События
            ЛЕВОЕ СОЕДИНЕНИЕ НенужныеРеализации КАК НенужныеРеализации
            ПО События.ДокументСобытия = НенужныеРеализации.ДокументСобытияСсылка
    ГДЕ
        События.ГруппаСобытия = &Реализация
        И События.ДокументСобытия.СерийныйНомер <> &ПустойСерНум
        И НенужныеРеализации.ДокументСобытияСсылка ЕСТЬ NULL
    
    СГРУППИРОВАТЬ ПО
        События.Клиент) КАК ВложенныйЗапрос

УПОРЯДОЧИТЬ ПО
    ДокументСобытияСумма УБЫВ
1 Ненавижу 1С
 
гуру
20.04.18
14:09
запрос конечно х..ня твой

но чтоб все не переделывать

ВЫБОР КОГДА ВложенныйЗапрос.СУММА_ВЕСНА_2014<>0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ +
ВЫБОР КОГДА ВложенныйЗапрос.СУММА_ОСЕНЬ_2014<>0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ +
...
2 Gantosha
 
20.04.18
14:09
в 1с в 8.2 такое слово в языке запросов появилось)
3 Melcor
 
20.04.18
14:17
(1) Ага, только догнал) Спасибо