Sql select查询中的显示列未添加到group by子句中
我一直在创建sql查询 表:Sql select查询中的显示列未添加到group by子句中,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我一直在创建sql查询 表: XX_AR_RECEIPT_CREATE 栏目: RECEIPT_ID ENTITY LOG_ID ACTIVITY_ID FIN_CLASS RECEIPT_METHOD RECEIPT_AMOUNT RECEIPT_TYPE
XX_AR_RECEIPT_CREATE
栏目:
RECEIPT_ID
ENTITY
LOG_ID
ACTIVITY_ID
FIN_CLASS
RECEIPT_METHOD
RECEIPT_AMOUNT
RECEIPT_TYPE
RECEIPT_NUMBER
RECEIPT_DATE
POSTED_DATE
ACTIVITY_DATE
SERVICE_DATE
CASHIER_NAME
CASHIER_USERNAME
PAYMENT_REFERENCE_NUMBER
DEPARTMENT
SPECIALITY
ACCOUNT
STATUS
这是我的问题
select to_char(sum(to_number(receipt_amount))) amount,entity, cashier_name,
receipt_method, fin_class,to_char(to_date(posted_date, 'dd/mm/yy HH24:MI:SS'), 'dd/mm/yy') as receipt_date
from XX_AR_RECIPT_CREATE
where to_number(receipt_amount)>0 and status='0'
group by entity, cashier_name, receipt_method,
fin_class, to_char(to_date(posted_date,'dd/mm/yy HH24:MI:SS'), 'dd/mm/yy');
它工作得很好,问题是我想添加一些额外的列例如LOG_ID,但是我不能在groupby子句中添加它。
例如:
我也在互联网上搜索解决方案。内部连接是一个很好的解决方案。但问题是我正在使用to_char,所以我不能用它添加别名。我使用的是Oracle Database 11g Express Edition 11.2.0.2.0版-64位生产版您需要决定需要哪个日志ID。例如,要获得最小值:
select to_char(sum(to_number(receipt_amount))) as amount, entity, cashier_name,
receipt_method, fin_class,
to_char(to_date(posted_date, 'dd/mm/yy HH24:MI:SS'), 'dd/mm/yy') as receipt_date,
min(LOG_ID) as LOG_ID
或者获取一个不太长的列表:
select to_char(sum(to_number(receipt_amount))) as amount, entity, cashier_name,
receipt_method, fin_class,
to_char(to_date(posted_date, 'dd/mm/yy HH24:MI:SS'), 'dd/mm/yy') as receipt_date,
listagg(LOG_ID, ',') within group (order by LOG_ID) as LOG_IDs
谢谢@Gordon我刚忘了列表。这对我有帮助。
select to_char(sum(to_number(receipt_amount))) as amount, entity, cashier_name,
receipt_method, fin_class,
to_char(to_date(posted_date, 'dd/mm/yy HH24:MI:SS'), 'dd/mm/yy') as receipt_date,
listagg(LOG_ID, ',') within group (order by LOG_ID) as LOG_IDs