Добрый день,Не корректно работает выгрузка данных если мы совмещаем фильтра по дате и по видом накладных, фильтр по дате отрабатывает но вид документов попадает только 101, во втором варианте всё работает, но сделано через костыль и для проверки.
KATSOPRold:
SQL SELECT
KATSOPR.NREC,
KATSOPR.CDOGOVOR,
KATSOPR.NAME,
KATSOPR.CORG,
KATSOPR.CVAL,
KATSOPR.DPRICE,
KATSOPR.DOPR,
KATSOPR.DSOPR,
KATSOPR.NSOPR,
KATSOPR.VIDSOPR,
KATSOPR.CPODRFROM,
KATSOPR.CPODRTO
FROM BDMAV91.KATSOPR
where ((KATSOPR.DSOPR < '132251905' and KATSOPR.DSOPR <> '0')
and
(VIDSOPR = 101 or VIDSOPR = 201 or VIDSOPR = 206 or VIDSOPR = 106 or VIDSOPR = 502 or VIDSOPR = 504));
STORE * from KATSOPRold into KATSOPRold.qvd(qvd);
DROP Table KATSOPRold;
Попробовал выгрузить их таким способом и у меня выгрузилось.
KATSOPRold:
SQL SELECT
KATSOPR.NREC,
KATSOPR.CDOGOVOR,
KATSOPR.NAME,
KATSOPR.CORG,
KATSOPR.CVAL,
KATSOPR.DPRICE,
KATSOPR.DOPR,
KATSOPR.DSOPR,
KATSOPR.NSOPR,
KATSOPR.VIDSOPR,
KATSOPR.CPODRFROM,
KATSOPR.CPODRTO
FROM BDMAV91.KATSOPR
where ((KATSOPR.DSOPR < '132251905' or KATSOPR.DSOPR <> '0'));
STORE * from KATSOPRold into KATSOPRold.qvd(qvd);
DROP Table KATSOPRold;
KATSOPRold1:
LOAD *
FROM $(vDirectory)KATSOPRold.qvd(qvd)
where ((VIDSOPR = 101 or VIDSOPR = 201 or VIDSOPR = 206 or VIDSOPR = 106 or VIDSOPR = 502 or VIDSOPR = 504));
STORE * from KATSOPRold1 into KATSOPRold1.qvd(qvd);
DROP Table KATSOPRold1;
А что некорректного в загрузке?
Проверьте первый запрос в SQL MS.
Запрос отрабатывает, но попадают только KATSOPR.DSOPR < '132251905' and KATSOPR.DSOPR <> '0' и VIDSOPR = 101,
а нужно что бы попадали VIDSOPR = 101 or VIDSOPR = 201 or VIDSOPR = 206 or VIDSOPR = 106 or VIDSOPR = 502 or VIDSOPR = 504
И я не могу понять почему не попадают другие документы.
Например если их запускать по раздельности, применяя сначала фильтр по дате, а потом фильтр по документам, то все данные попадают(во втором примере кода).
Цитата: AlfaLucky от 17 апреля 2019, 01:33:53 Запрос отрабатывает, но попадают только KATSOPR.DSOPR < '132251905' and KATSOPR.DSOPR <> '0' и VIDSOPR = 101,
а нужно что бы попадали VIDSOPR = 101 or VIDSOPR = 201 or VIDSOPR = 206 or VIDSOPR = 106 or VIDSOPR = 502 or VIDSOPR = 504
Следовательно, проблема в параметрах условиях Where.
Проведите отладку запроса, ради эксперимента замените and на or между группами условий.
Запрос отрабатывает. В данном запросе попадают все виды документов и документы с заданной даты , что является некорректно
:) OK, а если так:
KATSOPR.DSOPR < '132251905' and KATSOPR.DSOPR <> '0'
and
(VIDSOPR = 101 or VIDSOPR = 201 or VIDSOPR = 206 or VIDSOPR = 106 or VIDSOPR = 502 or VIDSOPR = 504)
Дальше не буду "издеваться".
Следует правильно составить условие в запросе с учетом порядка и приоритетов срабатывания скобок AND OR и отладить его в Managment Studio или любом другом инструменте.
Qlik всего лишь отправляет sql-запрос через ODBC драйвер или коннектор и принимает ответ.
Я так и не понял почему не работает, сделал по такой схеме.
where (
(KATSOPR.VIDSOPR = 101 and KATSOPR.DSOPR >= 132251905) or
(KATSOPR.VIDSOPR = 201 and KATSOPR.DSOPR >= 132251905) or
(KATSOPR.VIDSOPR = 206 and KATSOPR.DSOPR >= 132251905) or
(KATSOPR.VIDSOPR = 106 and KATSOPR.DSOPR >= 132251905) or
(KATSOPR.VIDSOPR = 502 and KATSOPR.DSOPR >= 132251905) or
(KATSOPR.VIDSOPR = 504 and KATSOPR.DSOPR >= 132251905)
);
Вот ещё один рабочий вариант
where (
KATSOPR.DSOPR >= '132251905' and
(KATSOPR.VIDSOPR IN (101, 201, 206, 106, 502, 504)));