Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
neftekos
Contributor II
Contributor II

Объединить данные в одну дату

OperDate fiscalDriveNumber shiftNumber closeDateTime openDateTime status totalSum =''
25.02.2018871000010137891224525.02.201824.02.2018close22794
24625.02.201825.02.2018close6622
247-25.02.2018open108934,19
871000010137966923825.02.201823.02.2018close0
239-25.02.2018open4019
26.02.2018871000010137891224726.02.201825.02.2018close13007,01
248-26.02.2018open94273,25
871000010137966923926.02.201825.02.2018close0
24026.02.201826.02.2018close8867,01
241-26.02.2018open0
27.02.2018871000010137891224827.02.201826.02.2018close8335,02
249-27.02.2018open70258,18
871000010137966924127.02.201826.02.2018close9703,05
24227.02.201827.02.2018close1622,04
243-27.02.2018open0
28.02.2018871000010137891224928.02.201827.02.2018close12854,02
250-28.02.2018open99891,32

Здравствуйте. Выше представлен пример выгруженных данных выручки смен касс с 25 по 28 число. Можно заметить что по одной и той же кассе (fiscalDriveNumber) номер смены (shiftNumber) в разных датах дублируется. Помогите пожалуйста решить задачу: Как в скрипте суммировать totalSum по одинаковым shiftNumber поместив результат на дату (OperDate) первого shiftNumber. В моём случае (выделено красным) 70258,18+12854,02=83112,2 поместить на 27.02.2018 с номером смены 249.

1 Solution

Accepted Solutions
Eugeny_Ilyin
Creator II
Creator II

Привет.

Самое простое напрашивается:

load shiftNumber,

min(OperDate) as ShiftDate,

sum(totalSum) as ShiftSum

Resident tmp1 Group by shiftNumber ;

С учетом касс:

load shiftNumber,

fiscalDriveNumber,

min(OperDate) as ShiftDate,

sum(totalSum) as ShiftSum

Resident tmp1 Group by shiftNumber , fiscalDriveNumber;

View solution in original post

12 Replies
Eugeny_Ilyin
Creator II
Creator II

Привет.

Самое простое напрашивается:

load shiftNumber,

min(OperDate) as ShiftDate,

sum(totalSum) as ShiftSum

Resident tmp1 Group by shiftNumber ;

С учетом касс:

load shiftNumber,

fiscalDriveNumber,

min(OperDate) as ShiftDate,

sum(totalSum) as ShiftSum

Resident tmp1 Group by shiftNumber , fiscalDriveNumber;

neftekos
Contributor II
Contributor II
Author

Спасибо за отклик. Да, но тогда сумма 9703,05 смены 241 уходит на 26 число:(

Anna_Klimkova
Employee
Employee

Сергей, предлагаю добавить openDateTime в Group by.

neftekos
Contributor II
Contributor II
Author

Похоже я всех запутал только. Короче по другому: Если у shiftNumber со статусом "Open" есть дубль в следующей дате со статусом "Close" то сложить их в первую дату.

Anna_Klimkova
Employee
Employee

Но openDateTime же у них одинаковый, это OperDate и статусы разные. Значит, openDateTime можно в группировку добавить.

Eugeny_Ilyin
Creator II
Creator II

Можно добавить условие на статус, т.о. собрать ключевую комбинацию полей и по ней выполнить расчет сумм.

В первую дату = минимальную дату.

neftekos
Contributor II
Contributor II
Author

Странно но похоже суммы садятся как-раз наоборот по closeDateTime за исключением дублей.

neftekos
Contributor II
Contributor II
Author

Спасибо за совет. Попробую. Правда долго будет. Опыт маленький ещё.

guest1
Contributor II
Contributor II

Решение "на вскидку"...

NoConcatenate

tmpN1:

LOAD shiftNumber,

sum(totalSum) as totalSum_,(min(date(openDateTime))) as openDateTime_,

(max(date(closeDateTime))) as closeDateTime_

Resident KKM Group by shiftNumber order by 1;

//OperDate = openDateTime