如何解决此错误“在选择列表中无效,因为它不包含在...中”

时间:2019-04-24 10:41:37

标签: sql sql-server

我在SQL中有以下代码:

SELECT 
    COUNT(*) as t,
    t1.EMPLID, 
    t3.DNI,
    t1.PUNCH_DTTM,
    PUNCH_TYPE,
    TCD_ID,
    t2.PCADescripcion,
    t2.DFIDescripcion,
    t2.Alias,
    t5.apellido,
    t4.planta
FROM 
    [MatrizDB].[db_owner].[Historial_TRH] t1
LEFT JOIN 
    MatrizDB.db_owner.Dispositivos_TRH t2 ON t2.RefId = TCD_ID
LEFT JOIN 
    MatrizDB.db_owner.Pipolsoft_Legajos t3 ON t3.EMPLID = t1.EMPLID
LEFT JOIN 
    [MatrizDB].[dbo].[nomina_fase_two] t4 ON t4.dni_id = t3.DNI 
LEFT JOIN 
    [MatrizDB].dbo.v_nomina t5 ON t5.nroDocumento = t4.dni_id
WHERE  
    CONVERT(VARCHAR(25), PUNCH_DTTM, 120) LIKE '2019-04-24%' 
    AND t4.dni_responsable = 30329134 
    AND PUNCH_TYPE = 5

执行查询时,出现此错误

  

在选择列表中无效,因为它既不在聚合函数中也不在GROUP BY子句中。

2 个答案:

答案 0 :(得分:4)

这个评论太长了。

您不理解错误消息的哪一部分?

您在count(*)中有select,因此您的查询是汇总查询。您没有group by;没有group by的聚合查询将完全返回 一行。对于其他列,该行应包含哪些值?

一个答案是将所有未聚合的列放在group by中。另一方法是从select中删除所有未聚合的列。另一种方法是将count(*)替换为窗口函数(例如count(*) over (),或者我怀疑您想要的是row_number() over (order by <some column>)

如果没有样本数据,预期结果以及您要做什么的解释,您的问题就太模糊了。

答案 1 :(得分:2)

使用汇总函数count时必须按分组依据

SELECT 
       count(*) as t
      ,t1.EMPLID
     ,t3.DNI
      ,t1.PUNCH_DTTM
      ,PUNCH_TYPE
      ,TCD_ID
      ,t2.PCADescripcion
      ,t2.DFIDescripcion
      ,t2.Alias
      ,t5.apellido
      ,t4.planta

  FROM [MatrizDB].[db_owner].[Historial_TRH] t1
      left join MatrizDB.db_owner.Dispositivos_TRH t2
        on t2.RefId = TCD_ID
     left join MatrizDB.db_owner.Pipolsoft_Legajos t3
        on t3.EMPLID = t1.EMPLID
     left join [MatrizDB].[dbo].[nomina_fase_two] t4
        on t4.dni_id = t3.DNI 
     left join [MatrizDB].dbo.v_nomina t5
        on t5.nroDocumento = t4.dni_id
  where  CONVERT(VARCHAR(25),PUNCH_DTTM,120) LIKE '2019-04-24%' 
         AND t4.dni_responsable = 30329134 and PUNCH_TYPE = 5
  group by t1.EMPLID
     ,t3.DNI
      ,t1.PUNCH_DTTM
      ,PUNCH_TYPE
      ,TCD_ID
      ,t2.PCADescripcion
      ,t2.DFIDescripcion
      ,t2.Alias
      ,t5.apellido
      ,t4.planta