不是按功能分组

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