Ниже приводится сценарий:Как не писать SQL-запрос, чтобы создать группу не для каждой сгруппированных записи
У меня есть данные в следующем формате:
entryid , ac_no, db/cr, amt
-----------------------------------------------
1 10 D 5
1 11 C 5
2 01 D 8
2 11 C 8
3 12 D 10
3 13 C 10
4 14 D 5
4 16 C 5
5 14 D 2
5 17 C 2
6 14 D 3
6 18 C 3
Я хочу данные в следующем формате:
До сих пор я получил первые 3 столбца по запросу
select wm_concat(entryid),ac_no,db_cr,Sum(amt) from t1 group by ac_no,db_cr
wm_Concat(entryid),ac_no, db/cr, Sum(amt), set_id
------------------------------------------------
1 10 D 5 S1
2 01 D 8 S1
1,2 11 C 13 S1
3 12 D 10 S2
3 13 C 10 S2
4,5,6 14 D 10 S3
4 16 C 5 S3
5 17 C 2 S3
6 18 C 3 S3
I want an additional column `set_id` that either shows this S1, S2.. or any number 1,2.. so that the debit & credit entries sets can be identified.
Я делаю наборы дебетовых и кредитные записи на основе их значений Ac_no. Любая небольшая помощь будет высоко оценена. Спасибо
Я не понимаю мотив здесь. Каков первичный ключ здесь и почему вы хотите сгруппировать их? – Ubercool
Мотив @Pramod, показывая результат пользователю в gui вместе с флажками, если пользователь хочет отменить выбор дебетовой записи, тогда соответствующая сумма может быть вычтена из суммированной записи кредита этого набора. нет первичного ключа, потому что результат является результатом запроса, однако мы можем использовать row_number .. для нумерации записей. – Ratnesh
Я не думаю, что эти результаты имеют смысл с учетом запроса - почему у вас есть две строки для ac_no = 0000 и db/cr = D? Неужели вы должны получить только один? То же самое для (1256, D). Кроме того, почему вы используете wm_concat, который является недокументированной и неподдерживаемой функцией. Если вы на 11 г или выше, вы должны использовать LISTAGG – Boneist