Вы хотите сделать две вещи здесь.Я предполагаю, что вы используете Oracle (видя, что вы используете Java).
Сначала вы хотите сгруппировать ежедневные транзакции каждого пользователя.
Создайте промежуточную таблицу с именем tempTable
.
Используйте to_char(currentdate, 'yyyy/mm/dd')
, чтобы сгруппировать их.
INSERT INTO tempTable
SELECT
userid,
resourceid,
doc_name,
trans_id,
to_char(currentdate, 'yyyy/mm/dd') as currentday,
to_char(currentdate, 'MM') as month_value,
count(*) as daily_count
FROM
usertransaction
GROUP BY
userid,
resourceid,
doc_name,
trans_id,
to_char(currentdate, 'yyyy/mm/dd')
если у вас слишком много строк данных, я рекомендую вам сделать это вместо этого;Делайте это один раз в день.
INSERT INTO tempTable
SELECT
userid,
resourceid,
doc_name,
to_char(currentdate, 'yyyy/mm/dd') as currentday,
to_char(currentdate, 'MM') as month_value,
count(*) as daily_count
FROM
usertransaction
WHERE
to_char(currentdate, 'yyyy/mm/dd') = to_char(SYSDATE, 'yyyy/mm/dd')
GROUP BY
userid,
resourceid,
doc_name,
trans_id
Во-вторых, вам нужно будет выполнить несколько вставок в соответствии с month_value
.
INSERT INTO txn_jan
SELECT
userid,
resourceid,
doc_name,
to_date(current_day, 'yyyy/mm/dd') as current_day,
daily_count
FROM
tempTable
WHERE month_value='01'
INSERT INTO txn_feb
SELECT
userid,
resourceid,
doc_name,
to_date(current_day, 'yyyy/mm/dd') as current_day,
daily_count
FROM
tempTable
WHERE month_value='02'
и продолжить ..