不是按功能分组
not a single group group by function
我在 运行 以下查询中没有得到单个组组函数,我应该如何处理 运行 这个?:
SELECT COUNT(wtt1.wrt_ip_num),
wtt1.wrt_from_ward_cd,
wbm.wbm_room_num,
wbm.wbm_bed_num,
TRUNC(wtt1.wrt_in_dt),
wtt1.wrt_out_dt
FROM w_transfer_txn wtt1, w_ward_master_base wmb, w_bed_master_base wbm
WHERE wtt1.wrt_from_ward_cd = wmb.wwm_ward_cd
AND wmb.wwm_ward_locn = 'TMH'
AND wbm.wbm_bed_num = wtt1.wrt_from_bed_num
AND wbm.wbm_room_num = wtt1.wrt_from_room_num
AND wbm.wbm_ward_cd = wtt1.wrt_from_ward_cd
AND (wtt1.wrt_ip_num, wtt1.wrt_sl_num) IN
(SELECT wtt.wrt_ip_num, MAX(wtt.wrt_sl_num) wrt_sl_num
FROM w_transfer_txn wtt
WHERE /*wtt.wrt_ip_num='IP/20/034619' AND*/
TRUNC(wtt.wrt_in_dt) < TO_DATE('29-Sep-2020', 'DD-MON-`YYYY')
AND (wtt.wrt_out_dt IS NULL OR (wtt.wrt_out_dt) >= TO_DATE('29-Sep-2020', 'DD-MON-YYYY'))
GROUP BY TRUNC(wtt.wrt_in_dt), wtt1.wrt_from_ward_cd, wtt.wrt_ip_num)
ORDER BY TRUNC(wtt1.wrt_in_dt) DESC
父查询缺少“分组依据”部分
只需在“Order by trunc(wtt1.wrt_in_dt) desc”行之前添加此内容
group by
wtt1.wrt_from_ward_cd,
wbm.wbm_room_num,
wbm.wbm_bed_num,
trunc(wtt1.wrt_in_dt),
wtt1.wrt_out_dt
这应该足以消除“缺少组表达式”错误
查询中存在一些问题,需要重新安排,例如
修复您的查询,以便在表之间具有明确的 JOIN
语法
而不是 comma-seperated 旧的 JOIN
语法,以便轻松
操纵它。
所有 non-aggregated 列应列在 GROUP BY
子句旁边。
GROUP BY wtt1.wrt_from_ward_cd, wbm.wbm_room_num, wbm.wbm_bed_num,
TRUNC(wtt1.wrt_in_dt), wtt1.wrt_out_dt
用于外部查询。基本上你的错误是由于这件事造成的。子查询中只有一个 non-aggregated 列 (wtt.wrt_ip_num
)。所以,使用GROUP BY wtt.wrt_ip_num
就够了。
TRUNC(wtt1.wrt_in_dt)
列可能带有别名,例如 trc_in_dt
,并在带有该别名 (ORDER BY trc_in_dt DESC
) 的 ORDER BY
子句中使用。顺便说一句,在子查询中对 MAX(wtt.wrt_sl_num)
使用 alias(wrt_sl_num
) 是多余的。
年份之前的第一个日期转换中有一个反引号
部分,这是一个错字,应该被修复。顺便提一句,
TO_DATE('29-Sep-2020', 'DD-MON-YYYY')
日期转换可能是
替换为日期文字,例如 date'2020-09-29'
以使其成为
简短。
SELECT COUNT(wtt1.wrt_ip_num),
wtt1.wrt_from_ward_cd,
wbm.wbm_room_num,
wbm.wbm_bed_num,
TRUNC(wtt1.wrt_in_dt) AS trc_in_dt,
wtt1.wrt_out_dt
FROM w_transfer_txn wtt1
JOIN w_ward_master_base wmb
ON wtt1.wrt_from_ward_cd = wmb.wwm_ward_cd
JOIN w_bed_master_base wbm
AND wbm.wbm_bed_num = wtt1.wrt_from_bed_num
AND wbm.wbm_room_num = wtt1.wrt_from_room_num
AND wbm.wbm_ward_cd = wtt1.wrt_from_ward_cd
WHERE wmb.wwm_ward_locn = 'TMH'
AND (wtt1.wrt_ip_num, wtt1.wrt_sl_num) IN
(SELECT wtt.wrt_ip_num, MAX(wtt.wrt_sl_num)-- wrt_sl_num
FROM w_transfer_txn wtt
WHERE TRUNC(wtt.wrt_in_dt) < date'2020-09-29'
AND (wtt.wrt_out_dt IS NULL OR wtt.wrt_out_dt >= date'2020-09-29')
GROUP BY wtt.wrt_ip_num)
GROUP BY wtt1.wrt_from_ward_cd, wbm.wbm_room_num, wbm.wbm_bed_num,
TRUNC(wtt1.wrt_in_dt), wtt1.wrt_out_dt
ORDER BY trc_in_dt DESC
我在 运行 以下查询中没有得到单个组组函数,我应该如何处理 运行 这个?:
SELECT COUNT(wtt1.wrt_ip_num),
wtt1.wrt_from_ward_cd,
wbm.wbm_room_num,
wbm.wbm_bed_num,
TRUNC(wtt1.wrt_in_dt),
wtt1.wrt_out_dt
FROM w_transfer_txn wtt1, w_ward_master_base wmb, w_bed_master_base wbm
WHERE wtt1.wrt_from_ward_cd = wmb.wwm_ward_cd
AND wmb.wwm_ward_locn = 'TMH'
AND wbm.wbm_bed_num = wtt1.wrt_from_bed_num
AND wbm.wbm_room_num = wtt1.wrt_from_room_num
AND wbm.wbm_ward_cd = wtt1.wrt_from_ward_cd
AND (wtt1.wrt_ip_num, wtt1.wrt_sl_num) IN
(SELECT wtt.wrt_ip_num, MAX(wtt.wrt_sl_num) wrt_sl_num
FROM w_transfer_txn wtt
WHERE /*wtt.wrt_ip_num='IP/20/034619' AND*/
TRUNC(wtt.wrt_in_dt) < TO_DATE('29-Sep-2020', 'DD-MON-`YYYY')
AND (wtt.wrt_out_dt IS NULL OR (wtt.wrt_out_dt) >= TO_DATE('29-Sep-2020', 'DD-MON-YYYY'))
GROUP BY TRUNC(wtt.wrt_in_dt), wtt1.wrt_from_ward_cd, wtt.wrt_ip_num)
ORDER BY TRUNC(wtt1.wrt_in_dt) DESC
父查询缺少“分组依据”部分
只需在“Order by trunc(wtt1.wrt_in_dt) desc”行之前添加此内容
group by
wtt1.wrt_from_ward_cd,
wbm.wbm_room_num,
wbm.wbm_bed_num,
trunc(wtt1.wrt_in_dt),
wtt1.wrt_out_dt
这应该足以消除“缺少组表达式”错误
查询中存在一些问题,需要重新安排,例如
修复您的查询,以便在表之间具有明确的
JOIN
语法 而不是 comma-seperated 旧的JOIN
语法,以便轻松 操纵它。所有 non-aggregated 列应列在
GROUP BY
子句旁边。GROUP BY wtt1.wrt_from_ward_cd, wbm.wbm_room_num, wbm.wbm_bed_num, TRUNC(wtt1.wrt_in_dt), wtt1.wrt_out_dt
用于外部查询。基本上你的错误是由于这件事造成的。子查询中只有一个 non-aggregated 列 (
wtt.wrt_ip_num
)。所以,使用GROUP BY wtt.wrt_ip_num
就够了。TRUNC(wtt1.wrt_in_dt)
列可能带有别名,例如trc_in_dt
,并在带有该别名 (ORDER BY trc_in_dt DESC
) 的ORDER BY
子句中使用。顺便说一句,在子查询中对MAX(wtt.wrt_sl_num)
使用 alias(wrt_sl_num
) 是多余的。年份之前的第一个日期转换中有一个反引号 部分,这是一个错字,应该被修复。顺便提一句,
TO_DATE('29-Sep-2020', 'DD-MON-YYYY')
日期转换可能是 替换为日期文字,例如date'2020-09-29'
以使其成为 简短。SELECT COUNT(wtt1.wrt_ip_num), wtt1.wrt_from_ward_cd, wbm.wbm_room_num, wbm.wbm_bed_num, TRUNC(wtt1.wrt_in_dt) AS trc_in_dt, wtt1.wrt_out_dt FROM w_transfer_txn wtt1 JOIN w_ward_master_base wmb ON wtt1.wrt_from_ward_cd = wmb.wwm_ward_cd JOIN w_bed_master_base wbm AND wbm.wbm_bed_num = wtt1.wrt_from_bed_num AND wbm.wbm_room_num = wtt1.wrt_from_room_num AND wbm.wbm_ward_cd = wtt1.wrt_from_ward_cd WHERE wmb.wwm_ward_locn = 'TMH' AND (wtt1.wrt_ip_num, wtt1.wrt_sl_num) IN (SELECT wtt.wrt_ip_num, MAX(wtt.wrt_sl_num)-- wrt_sl_num FROM w_transfer_txn wtt WHERE TRUNC(wtt.wrt_in_dt) < date'2020-09-29' AND (wtt.wrt_out_dt IS NULL OR wtt.wrt_out_dt >= date'2020-09-29') GROUP BY wtt.wrt_ip_num) GROUP BY wtt1.wrt_from_ward_cd, wbm.wbm_room_num, wbm.wbm_bed_num, TRUNC(wtt1.wrt_in_dt), wtt1.wrt_out_dt ORDER BY trc_in_dt DESC