返回多个相同行的SQL-“;查询需要将汇总统计数据与原始数据重新合并。”-

返回多个相同行的SQL-“;查询需要将汇总统计数据与原始数据重新合并。”-,sql,sas,Sql,Sas,也许我的问题有点傻,但我一直在寻找一些视频和说明,但找不到答案 我正在SaS环境下运行下面的SQL代码。我得到了超过8k个相同的行。我对所有未汇总的数据使用“分组依据” 谢谢各位 PROC SQL; CREATE TABLE WORK.TARIFAS AS SELECT T1.NR_DOC_SIS_OGM AS CONVENIO, T1.CD_CLI_VCLD_CT_OGM AS MCI, T2.SEGMENTO AS SEGMENTO, SUM(T1.VL_

也许我的问题有点傻,但我一直在寻找一些视频和说明,但找不到答案

我正在SaS环境下运行下面的SQL代码。我得到了超过8k个相同的行。我对所有未汇总的数据使用“分组依据”

谢谢各位

PROC SQL; 
CREATE TABLE WORK.TARIFAS AS

SELECT
    T1.NR_DOC_SIS_OGM AS CONVENIO,
    T1.CD_CLI_VCLD_CT_OGM AS MCI,
    T2.SEGMENTO AS SEGMENTO,
    SUM(T1.VL_OPR_CBR_TARF) FORMAT=COMMAX19.2 AS SUM_VL_COBRADO
    
FROM DB2TFA.CBR_TARF_REC T1
    INNER JOIN WORK.CONVENIOS T2 ON (T2.CONVENIO = T1.NR_DOC_SIS_OGM)

WHERE
    T1.NR_CBR_TARF_AGPD = 0
    AND T1.CD_PRD_CBR_TARF IN (15)
    AND T1.CD_SPDT_CBR_TARF IN (3,6)
    AND T1.DT_EFTC_CBR_TARF BETWEEN '01OCT2020'D AND '31OCT2020'D
    AND CONVENIO = 86081

GROUP BY
    CONVENIO,
    MCI,
    SEGMENTO;

QUIT;

如果它们完全相同,可以通过指定
select distinct
而不是
select
来解决:

PROC SQL; 
CREATE TABLE WORK.TARIFAS AS
SELECT DISTINCT
   T1.NR_DOC_SIS_OGM AS CONVENIO,
...

问题在于
convenrio
也是表中的一列,这一点很清楚,因为它位于
WHERE
子句中。因此,
选择
键和
分组依据
键不匹配

因此,请使用表达式而不是别名:

GROUP BY T1.NR_DOC_SIS_OGM T1.CD_CLI_VCLD_CT_OGM, T2.SEGMENTO 

您确定SELECT仅列出三个组变量和一个摘要统计信息吗?如果是这样,那么PROC SQL可能认为GROUP BY中列出的三个变量与SELECT中列出的三个变量不同

您可以使用组中的职位编号,并避免因拼写错误而造成混淆的风险

group by 1,2,3

谢谢各位。这工作做得很好!