Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Непонятное мне поведение запроса  [new]
Alexey Tarasenko
Member

Откуда:
Сообщений: 5
Есть БД выгрузки с Фронтола в 1С Рарус ТКПТ. В ней две таблицы CURRESTS и CASHSAIL.
В каждой таблице по две кассы за которые отвечает столбец CASHNUMBER.
Может принимать значение 1 или 3. Т.е. первая или третья касса.
Следующий запрос не хочет возвращать данные по кассе 3.

USE CashLakomka
SELECT
    CURRESTS.CASHNUMBER AS CASHNUMBER,
    CURRESTS.ZNUMBER AS ZNUMBER,
    CURRESTS.[SDATE] AS SDATE,
    ISNULL(CURRESTS.[STIME],0) AS STIME,
    Sum(CASHSAIL.TOTALRUB*CASE WHEN (CASHSAIL.OPERATION=0 OR CASHSAIL.OPERATION=2 OR CASHSAIL.OPERATION=4) AND CASHSAIL.QUANTITY>0 THEN -1 ELSE 1 END) AS SUMMA
FROM 
    CURRESTS AS CURRESTS
    INNER JOIN CASHSAIL
    ON ISNULL(CURRESTS.SDATEZ,0)=ISNULL(CASHSAIL.SDATEZ,0) AND (CASHSAIL.CASHNUMBER=CURRESTS.CASHNUMBER) AND (CASHSAIL.ZNUMBER=CURRESTS.ZNUMBER) AND (CASHSAIL.USINGINDEX=1) AND (CASHSAIL.SHOPINDEX=CURRESTS.SHOPINDEX) 
WHERE 
    CURRESTS.CASHNUMBER IN (1,3) AND (CURRESTS.SDATE BETWEEN CONVERT(datetime, '04/3/2019 00:00:00', 104) AND CONVERT(datetime, '06/3/2019 00:00:00', 104)) 
GROUP BY 
    CURRESTS.[SDATE], 
    CURRESTS.[STIME], 
    CURRESTS.CASHNUMBER,
    CURRESTS.ZNUMBER
HAVING 
    (Sum(CASHSAIL.TOTALRUB)<>0)
ORDER BY 
    CURRESTS.[SDATE], 
    CURRESTS.[STIME], 
    CURRESTS.CASHNUMBER,
    CURRESTS.ZNUMBER


Результат запроса на картинке

К сообщению приложен файл. Размер - 143Kb
7 мар 19, 07:00    [21826911]     Ответить | Цитировать Сообщить модератору
 Re: Непонятное мне поведение запроса  [new]
Alexey Tarasenko
Member

Откуда:
Сообщений: 5
А следующий запрос возвращает данные по 3 кассе.
Запрос без первых трех подусловий в условии объединения таблиц. А раньше без первых двух возвращал.

USE CashLakomka
SELECT
    CURRESTS.CASHNUMBER AS CASHNUMBER,
    CURRESTS.ZNUMBER AS ZNUMBER,
    CURRESTS.[SDATE] AS SDATE,
    ISNULL(CURRESTS.[STIME],0) AS STIME,
    Sum(CASHSAIL.TOTALRUB*CASE WHEN (CASHSAIL.OPERATION=0 OR CASHSAIL.OPERATION=2 OR CASHSAIL.OPERATION=4) AND CASHSAIL.QUANTITY>0 THEN -1 ELSE 1 END) AS SUMMA
FROM 
    CURRESTS AS CURRESTS
    INNER JOIN CASHSAIL
    ON 
(CASHSAIL.ZNUMBER=CURRESTS.ZNUMBER) AND (CASHSAIL.USINGINDEX=1) AND (CASHSAIL.SHOPINDEX=CURRESTS.SHOPINDEX) 
WHERE 
    CURRESTS.CASHNUMBER IN (1,3) AND (CURRESTS.SDATE BETWEEN CONVERT(datetime, '04/3/2019 00:00:00', 104) AND CONVERT(datetime, '06/3/2019 00:00:00', 104)) 
GROUP BY 
    CURRESTS.[SDATE], 
    CURRESTS.[STIME], 
    CURRESTS.CASHNUMBER,
    CURRESTS.ZNUMBER
HAVING 
    (Sum(CASHSAIL.TOTALRUB)<>0)
ORDER BY 
    CURRESTS.[SDATE], 
    CURRESTS.[STIME], 
    CURRESTS.CASHNUMBER,
    CURRESTS.ZNUMBER


К сообщению приложен файл. Размер - 145Kb
7 мар 19, 07:14    [21826913]     Ответить | Цитировать Сообщить модератору
 Re: Непонятное мне поведение запроса  [new]
Alexey Tarasenko
Member

Откуда:
Сообщений: 5
Не могу понять что не так с данными БД. Помогите разобраться. На других БД всё нормально.
7 мар 19, 07:16    [21826915]     Ответить | Цитировать Сообщить модератору
 Re: Непонятное мне поведение запроса  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2369
Блог
Alexey Tarasenko,

Может дело в этом (CASHSAIL.USINGINDEX=1) ?
7 мар 19, 07:18    [21826917]     Ответить | Цитировать Сообщить модератору
 Re: Непонятное мне поведение запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28365
Alexey Tarasenko
Есть БД выгрузки с Фронтола в 1С Рарус ТКПТ. В ней две таблицы CURRESTS и CASHSAIL.
В каждой таблице по две кассы за которые отвечает столбец CASHNUMBER.
Может принимать значение 1 или 3. Т.е. первая или третья касса.
Следующий запрос не хочет возвращать данные по кассе 3.
Для отладки "почему запрос не возвращает" сначала уберите агрегирование с GROUP BY и HAVING

Потом закомментируйте условия, кроме CURRESTS.CASHNUMBER IN (1,3)

Потом заменяйте INNER JOIN на LEFT JOIN

На каждом шаге смотрите, что возвращает запрос, и смотрите (выведите) поля, условия по которым вы временно убрали.

Тогда отладить будет легко.

Тут вам, конечно, не помогут, у нас же нет ваших таблиц и данных, иначе бы тут кто нибудь быстренько сделал то, что я описал, и нашёл причину.
7 мар 19, 09:27    [21826955]     Ответить | Цитировать Сообщить модератору
 Re: Непонятное мне поведение запроса  [new]
Alexey Tarasenko
Member

Откуда:
Сообщений: 5
Павел Воронцов
Alexey Tarasenko,

Может дело в этом (CASHSAIL.USINGINDEX=1) ?


Спасибо. Дело было в действительности в USINGINDEX.
Это номер фискального регистратора и он на новой (3) кассе был равен 0.
11 мар 19, 07:40    [21828861]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить