Sql 行号()和分组方式一起不工作

Sql 行号()和分组方式一起不工作,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我写了下面的问题,我需要知道我做错了什么。添加行号后,输出总是此错误: ORA-00979:不是表达式的组 97900000-不是表达式的分组 *原因: *行动: 第22行第32列出错 SQL开发人员工具提示建议将group by中的行号与所选的数据一起追加。但据我所知,row_number是一个分析函数,用于计算每一行的数量,不能在GROUPBY子句中使用 当我在GROUP BY中使用row_number时,它会显示以下错误 ORA-30484:缺少此函数的窗口规范 3048400000-缺少

我写了下面的问题,我需要知道我做错了什么。添加行号后,输出总是此错误:

ORA-00979:不是表达式的组 97900000-不是表达式的分组 *原因: *行动: 第22行第32列出错

SQL开发人员工具提示建议将group by中的行号与所选的数据一起追加。但据我所知,row_number是一个分析函数,用于计算每一行的数量,不能在GROUPBY子句中使用

当我在GROUP BY中使用row_number时,它会显示以下错误

ORA-30484:缺少此函数的窗口规范 3048400000-缺少此函数的窗口规范 *原因:所有窗口功能都应遵循窗口规范,如 *行动: 第26行第26列出错

我想在查询中同时使用GROUP BY和ROW_NUMBER

请帮助我纠正此问题并向我建议解决方案

查询:

SELECT * 
FROM  
    (SELECT 
         COUNT(DISTINCT Emp_Code) totalEmployees,
         SUM(CASE WHEN pay_code = 999 THEN AMOUNT ELSE '0' END) net_salary,
         SUM(CASE WHEN pay_code = 997 THEN AMOUNT ELSE '0' END) gross_earning,
         SUM(CASE WHEN pay_code = 998 THEN AMOUNT ELSE '0' END) gross_deduction,
         Is_Data_Picked,
         ROW_NUMBER() OVER (ORDER BY (Emp_Code)) AS ROW_NUM
     FROM 
         Xxmpcd_Salary_Detail_Table
     WHERE 
         Prayas_Erp_Org_Id LIKE '302-%'
         AND Yyyymm = '201805'
     GROUP BY 
         Is_Data_Picked, ROW_NUMBER()) mytbl
WHERE
    ROW_NUM < 600 AND ROW_NUM > 0

这是子查询的相关部分:

SELECT . . . 
       ROW_NUMBER() OVER (ORDER BY (Emp_Code)) AS ROW_NUM
FROM Xxmpcd_Salary_Detail_Table
WHERE Prayas_Erp_Org_Id LIKE '302-%' AND Yyyymm = '201805'
GROUP BY Is_Data_Picked, ROW_NUMBER()
由于Emp代码不在GROUP BY中,因此第一行\u编号中有错误。第二行出现错误,因为行号不是函数

我可以推测你打算:

SELECT . . . 
       ROW_NUMBER() OVER (ORDER BY Emp_Code) AS ROW_NUM
FROM Xxmpcd_Salary_Detail_Table
WHERE Prayas_Erp_Org_Id LIKE '302-%' AND Yyyymm = '201805'
GROUP BY Is_Data_Picked, Emp_Code
如果您不想通过Emp_代码进行聚合,则可能需要:

SELECT . . . 
       ROW_NUMBER() OVER (ORDER BY MIN(Emp_Code)) AS ROW_NUM
FROM Xxmpcd_Salary_Detail_Table
WHERE Prayas_Erp_Org_Id LIKE '302-%' AND Yyyymm = '201805'
GROUP BY Is_Data_Picked

哦,天哪,所以我需要在GROUPBY子句中包含Emp_代码,非常感谢,我现在会处理这个问题